🦈NuCaptcha
Last updated
Last updated
This API can be used to recognize dynamic verification codes through OCR and return the answer and token of nucaptcha.
Price Plan
Request URL
http://api.capbreaker.com/captcha/nucaptcha
Method
POST Content-Type: application/json
Request Parameter
token
String
yes
Authorize After Purchase
test
nudataPayload
String
yes
Initialize js for nudata captcha
proxy
String
yes
Only support http proxy
ip:port:user:pass
Request eg.{ "token": "test", "proxy": "ip:port:user:pass", "nudataPayload": "eyJuZHBkLWNhcHRjaGEtcmVxdWVzdCI6IntcImNoYWxsZW5nZUJhc2VVcmxcIjpcImh0dHBzOlxcXC9cXFwvbmQuc3RhcGxlcy5jb21cXFwvMS4wXFxcL3dcXFwvMjMuMi4xNTM4ODhcXFwvdy00MTY1NTRcXFwvY2FwdGNoYVwiLFwidmlkZW9XaWR0aFwiOjI0MCxcInJlcXVlc3RJZFwiOlwicnMtVnVIYzVFWmJaUkVNVWh3dUx6QXJwQXh4XCIsXCJsYW5ndWFnZVwiOlwiZW5nXCIsXCJwbGF5ZXJNb2RlXCI6XCJWSURFT1wiLFwidG9rZW5cIjpcIjEudy00MTY1NTQuMi4yLlZwek1peWxUZDM0dHR3aTJfZEdXRlEsLC4zNFlJVzRmZkN0dVd3ZmdKdjBpZ1p6SWRla0RzbDhjTVF6bzhTLVplQ0xFTDNxcWZxRE51ck5wNlIzejkyMW1TQ2FwWENFSjdESkVTdGFXWENabVU1eF9MRUNQLUJSRHJNMno5YTZEWDVJQ3UwRDNxRzE2cnBzTURQOGlyaTBmSFlUclhGYXZmTExRX0pjRnUtdTVIb3IzQWxUTnNIa2hrNzM0Q05nTDAtTi1fcDFsRlFIMHNaWDlURzBnMkppdlpWYTZLbnYxUjhlb2FpczBGYnZ0RU04YTRFM0hsanZMa3c3ci1mSDFWWjZCVFJDUE1jNU5HY2NobTlzQ0FGZW40NzBBWmx6REtIZ2dlQ0VZVVY5M1hqTGtpUVIwTng2SDYzeExSVnA4SXJRX0ZpTFowN2JFQXRqMXZQdXJSTVhJejJCSy1TMDlvQzB0eVNIS3gza3A2YTJPczc2MHhqaExoX2FLLUpMUXQtXzcxenhrOHdzdW14cGlyZGswMEI4eWhoUjVTQkhFSkJZeU9Lak8tV25GRDh1Z1BaY0V5NGdSclk2UlV1VE1CeVUtSENjcVpBcTl2X2RycjN5T2lVUFB1aTVrOWw4enZCWUVwZkljcXRHeDhQY3B3RFlvaVVPa1U2cV9DdThBcUNjNCxcIixcInZpZGVvSGVpZ2h0XCI6NjB9IiwibmRwZC1jYXB0Y2hhLW1lc3NhZ2luZyI6IntcImFuZHJvaWRcIjpcInZhciBzZW5kTmRTZGtWYWx1ZT1mdW5jdGlvbihiLGMsYSl7dmFyIGQ9e307ZFtiXT1TdHJpbmcoYyk7XFxcImlwclxcXCI9PT1hP251Q2FwdGNoYUlQUkxpc3RlbmVyLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGQpKTpudUNhcHRjaGFTREtMaXN0ZW5lci5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeShkKSl9LHNlbmROZFNka0lucHV0VmFsdWU9ZnVuY3Rpb24oYixjKXt2YXIgYT17fTthW2JdPVN0cmluZyhjLnZhbHVlKTtudUNhcHRjaGFJbnB1dExpc3RlbmVyLnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGEpKX07XFxuXCIsXCJpb3NcIjpcInZhciBzZW5kTmRTZGtWYWx1ZT1mdW5jdGlvbihiLGMsYSl7dmFyIGQ9e307ZFtiXT1TdHJpbmcoYyk7d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnNbYV0ucG9zdE1lc3NhZ2UoZCl9LHNlbmROZFNka0lucHV0VmFsdWU9ZnVuY3Rpb24oYixjKXt2YXIgYT17fTthW2JdPVN0cmluZyhjLnZhbHVlKTt3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5pbnB1dC5wb3N0TWVzc2FnZShhKX07XFxuXCIsXCJiYXNlXCI6XCIoZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGEsYil7dmFyIGQ9U3RyaW5nKGEuZ2V0QXR0cmlidXRlKFxcXCJpcHJOYW1lXFxcIikpO2UoYSxiLHNlbmROZFNka0lucHV0VmFsdWUuYmluZCh0aGlzLGQsYSkpfWZ1bmN0aW9uIGMoYSxiKXt2YXIgZD1TdHJpbmcoYS5nZXRBdHRyaWJ1dGUoXFxcImlwck5hbWVcXFwiKSk7ZShhLGIsc2VuZE5kU2RrVmFsdWUuYmluZCh0aGlzLGQsYixcXFwiaXByXFxcIikpfWZ1bmN0aW9uIGUoYSxiLGQpe3RyeXthLmFkZEV2ZW50TGlzdGVuZXImJihhLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixkKSxhLmFkZEV2ZW50TGlzdGVuZXIoYixkKSl9Y2F0Y2goYyl7fX1mdW5jdGlvbiBmKCl7dmFyIGE9bmNHZXRFbGVtZW50KFxcXCJwbGF5ZXItbW9kZVxcXCIpO2EmJihhLnNldEF0dHJpYnV0ZShcXFwiaXByTmFtZVxcXCIsXFxcIm5kY29udHJvbHBtXFxcIiksYyhhLFxcXCJjbGlja1xcXCIpLGMoYSxcXFwidGFwXFxcIikpO2lmKGE9bmNHZXRFbGVtZW50KFxcXCJuZXctY2hhbGxlbmdlXFxcIikpYS5zZXRBdHRyaWJ1dGUoXFxcImlwck5hbWVcXFwiLFxcXCJuZGNvbnRyb2xuY1xcXCIpLFxcbmMoYSxcXFwiY2xpY2tcXFwiKSxjKGEsXFxcInRhcFxcXCIpO3NlbmROZFNka1ZhbHVlKFxcXCJhbnN3ZXJJRFxcXCIsXFxcIm5kaW5wdXRhdFxcXCIsXFxcInNka1xcXCIpO25jQW5zd2VySUQmJihhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5jQW5zd2VySUQpLGEuc2V0QXR0cmlidXRlKFxcXCJpcHJOYW1lXFxcIixcXFwibmRpbnB1dGF0XFxcIiksc2VuZE5kU2RrSW5wdXRWYWx1ZShcXFwibmRpbnB1dGF0XFxcIixhKSxnKGEsXFxcImlucHV0XFxcIiksYyhhLFxcXCJmb2N1c1xcXCIpLGMoYSxcXFwiYmx1clxcXCIpLGMoYSxcXFwia2V5ZG93blxcXCIpKTtuY1Rva2VuTmFtZSYmKGE9bmNHZXRFbGVtZW50KG5jVG9rZW5OYW1lKS52YWx1ZS5zcGxpdChcXFwifFxcXCIpLDc8PWEubGVuZ3RoJiYoc2VuZE5kU2RrVmFsdWUoXFxcInRva2VuXFxcIixhWzBdLFxcXCJzZGtcXFwiKSxzZW5kTmRTZGtWYWx1ZShcXFwiaW5kZXhcXFwiLGFbMV0sXFxcInNka1xcXCIpLHNlbmROZFNka1ZhbHVlKFxcXCJ0eXBlXFxcIixhWzJdLFxcXCJzZGtcXFwiKSkpO2gub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQse2F0dHJpYnV0ZXM6ITAsY2hhcmFjdGVyRGF0YTohMCxjaGlsZExpc3Q6ITAsXFxuc3VidHJlZTohMCxhdHRyaWJ1dGVPbGRWYWx1ZTohMCxjaGFyYWN0ZXJEYXRhT2xkVmFsdWU6ITB9KX12YXIgaD1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihhKXt2YXIgYj0hMTthLmZvckVhY2goZnVuY3Rpb24oYSl7XFxcImNoaWxkTGlzdFxcXCI9PT1hLnR5cGUmJiExPT09YiYmKGI9ITAsZigpKX0pfSk7ZSh3aW5kb3csXFxcImxvYWRcXFwiLGZ1bmN0aW9uKCl7ZigpfSl9KSgpO1xcblwifSIsIjNkcy1lbmFibGVkIjpmYWxzZSwiYXBpLXVybCI6Imh0dHBzOlwvXC9hcGktZ2Etc3RhcGxlcy5uZC5udWRhdGFzZWN1cml0eS5jb21cLyIsIndlYnNpdGUtaWQiOiJ3LTQxNjU1NCIsIm5kcGQtY2FwdGNoYS1odG1sIjoie1widGVtcGxhdGVcIjpcIjxzY3JpcHQgaWQ9XFxcIm51Y2FwdGNoYS10ZW1wbGF0ZVxcXCIgdHlwZT1cXFwidGV4dFxcXC94LW51Y2FwdGNoYS10ZW1wbGF0ZVxcXCI+XFxuICAgICR7UGxheWVyU3RhcnR9ICR7TWVkaWF9XFxuICAgIDxwIGlkPVxcXCJuZXctY2hhbGxlbmdlLWxpbmtcXFwiPlxcbiBcXG4gICAgICAgICR7Q29tbWFuZE5ld0NoYWxsZW5nZX0gJHtDb21tYW5kUGxheWVyTW9kZX1cXG4gXFxuICAgIDxcXFwvcD5cXG4gICAgPGRpdiBpZD1cXFwibXktbnVjYXB0Y2hhLWFuc3dlci13cmFwcGVyXFxcIj5cXG4gICAgICAgICR7RGlyZWN0aW9uc1ZlcmJvc2V9ICR7SW5wdXRBbnN3ZXJ9XFxuICAgIDxcXFwvZGl2PlxcbiAgICAke1BsYXllckVuZH1cXG48XFxcL3NjcmlwdD5cIixcImh0bWxcIjpcIjxkaXYgaWQ9XFxcIm5kLWNhcHRjaGFcXFwiIGNsYXNzPVxcXCJuZC1jYXB0Y2hhXFxcIiBsYW5nPVxcXCJlblxcXCI+PGRpdiBpZD1cXFwibnVjYXB0Y2hhLXdpZGdldFxcXCIgY2xhc3M9XFxcIm51Y2FwdGNoYS13aWRnZXRcXFwiIHJvbGU9XFxcImdyb3VwXFxcIiBhcmlhLWxhYmVsPVxcXCJOdUNhcHRjaGEgV2lkZ2V0XFxcIj5cXG4gICAgPGRpdiBpZD1cXFwibnVjYXB0Y2hhLXdpZGdldC1jb250YWluZXJcXFwiIGNsYXNzPVxcXCJudWNhcHRjaGEtd2lkZ2V0LWNvbnRhaW5lclxcXCI+XFxuICAgICAgICA8bm9zY3JpcHQ+XFxuICAgICAgICAgICAgPGRpdiBpZD1cXFwibnVjYXB0Y2hhLXBsYXllci1uc1xcXCIgY2xhc3M9XFxcIndtLW5vc2NyaXB0IHBtLXZpZGVvIGR0LWdpZiBwdC1ub3NjcmlwdCBuby1wbmcgbnVjYXB0Y2hhLXBsYXllci1uc1xcXCI+XFxuXFxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XFxcIm1lZGlhLWNvbnRhaW5lclxcXCI+XFxuICAgICAgICAgICAgICAgICAgICA8cD5cXG4gICAgICAgICAgICAgICAgICAgICAgICBKYXZhc2NyaXB0IGlzIHJlcXVpcmVkIGZvciB0aGlzIGh1bWFuIHZlcmlmaWNhdGlvbiB0ZXN0LiAgUGxlYXNlIGVuYWJsZSBKYXZhc2NyaXB0IGFuZCByZWxvYWQgdGhlIHBhZ2UuXFxuICAgICAgICAgICAgICAgICAgICA8XFxcL3A+XFxuICAgICAgICAgICAgICAgIDxcXFwvZGl2PlxcbiAgICAgICAgICAgIDxcXFwvZGl2PlxcbiAgICAgICAgPFxcXC9ub3NjcmlwdD5cXG4gICAgPFxcXC9kaXY+XFxuPFxcXC9kaXY+XFxuXFxuPHNjcmlwdCB0eXBlPVxcXCJ0ZXh0XFxcL2phdmFzY3JpcHRcXFwiPnZhciBuY0xhbmd1YWdlRGljdD17ZW5nOntfRE9XTkxPQURfQVVESU9fOlxcXCJEb3dubG9hZCBBdWRpbyBDaGFsbGVuZ2VcXFwiLF9BVURJT19MSVNURU5fQUdBSU5fOlxcXCJSZXBsYXkgQXVkaW8gQ2hhbGxlbmdlXFxcIixfQVVESU9fTkVXX0NIQUxMRU5HRV86XFxcIkdldCBBIE5ldyBDaGFsbGVuZ2VcXFwiLF9SRUZSRVNIX0JVVFRPTl86XFxcIkdldCBBIE5ldyBDaGFsbGVuZ2VcXFwiLF9BVURJT19CVVRUT05fOlxcXCJHZXQgQW4gQXVkaW8gQ2hhbGxlbmdlXFxcIixfUExBWUVSX0FVRElPXzpcXFwiQXVkaW8gQ2hhbGxlbmdlXFxcIixfUExBWUVSX1ZJREVPXzpcXFwiVmlkZW8gQ2hhbGxlbmdlXFxcIixcXFwiX0RJUkVDVElPTlNfVkVSQk9TRVswMDAwXV9cXFwiOlxcXCJUeXBlIHRoZSBtb3ZpbmcgY2hhcmFjdGVyc1xcXCIsXFxcIl9ESVJFQ1RJT05TWzAwMDBdX1xcXCI6XFxcIk1vdmluZyBjaGFyYWN0ZXJzOlxcXCIsXFxcIl9ESVJFQ1RJT05TX1ZFUkJPU0VfQVVESU9bMDAwMF1fXFxcIjpcXFwiVHlwZSB0aGUgY2hhcmFjdGVycyB5b3UgaGVhciBpbiB0aGUgYXVkaW9cXFwiLFxcXCJfRElSRUNUSU9OU19BVURJT1swMDAwXV9cXFwiOlxcXCJDaGFyYWN0ZXJzIHlvdSBoZWFyOlxcXCIsXFxuX0FVRElPX0JVVFRPTl9SRVRVUk5fOlxcXCJSZXR1cm4gdG8gVmlzdWFsIENoYWxsZW5nZVxcXCIsXFxcIl9ESVJFQ1RJT05TMlswMDAwXV9cXFwiOlxcXCJNb3ZpbmcgY2hhcmFjdGVyczpcXFwiLFxcXCJfRElSRUNUSU9OUzJfVkVSQk9TRVswMDAwXV9cXFwiOlxcXCJUeXBlIHRoZSBtb3ZpbmcgY2hhcmFjdGVyc1xcXCIsXFxcIl9ESVJFQ1RJT05TMl9BVURJT1swMDAwXV9cXFwiOlxcXCJDaGFyYWN0ZXJzIHlvdSBoZWFyOlxcXCIsXFxcIl9ESVJFQ1RJT05TMl9WRVJCT1NFX0FVRElPWzAwMDBdX1xcXCI6XFxcIlR5cGUgdGhlIGNoYXJhY3RlcnMgeW91IGhlYXIgaW4gdGhlIGF1ZGlvXFxcIixfRVJST1JfOlxcXCJBbiB1bmV4cGVjdGVkIGlzc3VlIG9jY3VycmVkLjxicj5QbGVhc2UgJV9NQUlMVE9fU1RBUlRfJWNsaWNrIGhlcmUlX01BSUxUT19FTkRfJSB0byByZXBvcnQgdGhlIHByb2JsZW0uXFxcIixfRVJST1JfRU1BSUxfU1VCSkVDVF86XFxcIlBsYXllciBTdGF0dXNcXFwiLF9FUlJPUl9FTUFJTF9CT0RZXzpcXFwiUGxlYXNlIHRlbGwgdXMgd2hhdCBoYXBwZW5lZCBzbyB3ZSBjYW4gaW1wcm92ZSBvdXIgc3lzdGVtLlxcXFxuXFxcXG5EZXRhaWxzXFxcXG49PT09PT09PT09XFxcXG4lX0RFVEFJTFNfJVxcXCIsXFxuX0pTX1JFUVVJUkVEXzpcXFwiSmF2YXNjcmlwdCBpcyByZXF1aXJlZCBmb3IgdGhpcyBodW1hbiB2ZXJpZmljYXRpb24gdGVzdC4gIFBsZWFzZSBlbmFibGUgSmF2YXNjcmlwdCBhbmQgcmVsb2FkIHRoZSBwYWdlLlxcXCIsX0hUTUw1X1JFUVVJUkVEXzpcXFwiSFRNTDUgcmVxdWlyZWQgdG8gdmlldyBjaGFsbGVuZ2VcXFwiLF9QTEFZX0JVVFRPTl86XFxcIlBsYXlcXFwiLF9QQVVTRV9CVVRUT05fOlxcXCJQYXVzZVxcXCIsX05VQ0FQVENIQV9XSURHRVRfTEFCRUxfOlxcXCJOdUNhcHRjaGEgV2lkZ2V0XFxcIixfQ0FQVENIQV9TUFJJVEVfTEFCRUxfOlxcXCJDYXB0Y2hhIExldHRlcnMsIHVzZSB0aGUgdG9nZ2xlIHRvIHN3aXRjaCBiZXR3ZWVuIGF1ZGlvXFxcL3ZpZGVvIGNoYWxsZW5nZXNcXFwifX07XFxuXFxuZnVuY3Rpb24gbmNJbml0U2VydmVyUmVxdWVzdEludGVyY2VwdCgpe2lmKFxcXCJmdW5jdGlvblxcXCI9PT10eXBlb2Ygd2luZG93LlhNTEh0dHBSZXF1ZXN0JiZuZENhcHRjaGFBdXRvZmlsbFNvdXJjZXMuaGFzT3duUHJvcGVydHkobmNBdXRvZmlsbFNlcnZlcktleSkmJjA8bmRDYXB0Y2hhQXV0b2ZpbGxTb3VyY2VzW25jQXV0b2ZpbGxTZXJ2ZXJLZXldLmxlbmd0aCl7dmFyIGE9XFxcIlxcXCIsYj1YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUub3Blbjt0cnl7WE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oKXtiLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthPWFyZ3VtZW50c1sxXTtuY01hdGNoQXV0b2ZpbGxTb3VyY2VzKG5jQXV0b2ZpbGxTZXJ2ZXJLZXksYSl9fWNhdGNoKGMpe319fVxcbmZ1bmN0aW9uIG5jSW5pdFByb3BlcnR5Q2hhbmdlRXZlbnQoYSxiKXt0cnl7aWYobnVsbCE9YSlpZihcXFwiZnVuY3Rpb25cXFwiPT09dHlwZW9mIHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyKXt2YXIgYz1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihhKXtiKGEsYyl9KTtjLm9ic2VydmUoYSx7Y2hpbGRMaXN0OiEwLGF0dHJpYnV0ZXM6ITAsY2hhcmFjdGVyRGF0YTohMH0pfWVsc2VcXFwib25wcm9wZXJ0eWNoYW5nZVxcXCJpbiBhJiZhLmF0dGFjaEV2ZW50JiZhLmF0dGFjaEV2ZW50KFxcXCJvbnByb3BlcnR5Y2hhbmdlXFxcIixmdW5jdGlvbihhKXtiKGEsbnVsbCl9KX1jYXRjaChkKXt9fVxcbmZ1bmN0aW9uIG5jSW5wdXRQcm9maWxlQXV0b2ZpbGxNdXRhdGlvbkhhbmRsZXIoYSxiKXtpZihudWxsIT1hKWlmKG51bGwhPWIpYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKCEwPT09bmNNYXRjaEF1dG9maWxsU291cmNlcyhuY0F1dG9maWxsUHJvcGVydHlLZXksYS50YXJnZXQub3V0ZXJIVE1MKSlyZXR1cm4gYi5kaXNjb25uZWN0KCksITF9KTtlbHNle3ZhciBjPWF8fHdpbmRvdy5ldmVudCxjPWMudGFyZ2V0P2MudGFyZ2V0OmMuc3JjRWxlbWVudDshMD09PW5jTWF0Y2hBdXRvZmlsbFNvdXJjZXMobmNBdXRvZmlsbFByb3BlcnR5S2V5LGMub3V0ZXJIVE1MKSYmYy5kZXRhY2hFdmVudChcXFwib25wcm9wZXJ0eWNoYW5nZVxcXCIsdGhpcyl9fVxcbmZ1bmN0aW9uIG5jTWF0Y2hBdXRvZmlsbFNvdXJjZXMoYSxiKXt2YXIgYz1uY0dldEVsZW1lbnQobmNUb2tlbk5hbWUpO2lmKG51bGwhPWMmJm5kQ2FwdGNoYUF1dG9maWxsU291cmNlcy5oYXNPd25Qcm9wZXJ0eShhKSYmMDxuZENhcHRjaGFBdXRvZmlsbFNvdXJjZXNbYV0ubGVuZ3RoJiYobmV3IFJlZ0V4cChuZENhcHRjaGFBdXRvZmlsbFNvdXJjZXNbYV0uam9pbihcXFwifFxcXCIpLFxcXCJpXFxcIikpLnRlc3QoYikpe3N3aXRjaChhKXtjYXNlIG5jQXV0b2ZpbGxTZXJ2ZXJLZXk6bmNBdXRvZmlsbFNlcnZlclJlcXVlc3Q9MTticmVhaztjYXNlIG5jQXV0b2ZpbGxQcm9wZXJ0eUtleTpuY0F1dG9maWxsUHJvcGVydHlDaGFuZ2U9MX1jLnZhbHVlPW5jR2V0U3VwZXJUb2tlbigpO3JldHVybiEwfXJldHVybiExfVxcbmZ1bmN0aW9uIG5jSW5wdXRQcm9maWxlUmVnaXN0ZXJFdmVudEhhbmRsZXIoYSxiLGMpe3RyeXthLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKGIsYywhMSk6YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudChcXFwib25cXFwiK2IsYyl9Y2F0Y2goZCl7fX12YXIgbmNJbnB1dFByb2ZpbGVLZXlkb3duSGFuZGxlcj1mdW5jdGlvbihhKXthPW5jR2V0RWxlbWVudChuY1Rva2VuTmFtZSk7bnVsbCE9YSYmKG5jS0RDKz0xLGEudmFsdWU9bmNHZXRTdXBlclRva2VuKCkpfTtmdW5jdGlvbiBuY0luZGV4T2YoYSxiKXtpZighYS5pbmRleE9mKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihhW2NdPT1iKXJldHVybiBjO3JldHVybi0xfXJldHVybiBhLmluZGV4T2YoYil9ZnVuY3Rpb24gbmNPblZpZGVvQ2xpY2soKXt9XFxuZnVuY3Rpb24gbmNTZXRFbGVtZW50SHJlZihhLGIpe251bGwhPWEmJm51bGwhPWEuc2V0QXR0cmlidXRlJiZhLnNldEF0dHJpYnV0ZShcXFwiaHJlZlxcXCIsYik7YS5ocmVmPWI7cmV0dXJuIGF9ZnVuY3Rpb24gbmNTZXRFbGVtZW50VmlzaWJsZShhLGIpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7YS5zdHlsZS5kaXNwbGF5PWI/XFxcImJsb2NrXFxcIjpcXFwibm9uZVxcXCI7cmV0dXJuIGF9ZnVuY3Rpb24gbmNHZXRFbGVtZW50KGEpe2lmKFxcXCJcXFwiIT1uY0RvbVN1ZmZpeCl7dmFyIGI9bmNHZXRFbGVtZW50SW50ZXJuYWwoYStuY0RvbVN1ZmZpeCk7aWYobnVsbCE9YilyZXR1cm4gYn1yZXR1cm4gbmNHZXRFbGVtZW50SW50ZXJuYWwoYSl9ZnVuY3Rpb24gbmNHZXRFbGVtZW50SW50ZXJuYWwoYSl7cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpOmRvY3VtZW50LmFsbD9kb2N1bWVudC5hbGxbYV06bnVsbH1cXG5mdW5jdGlvbiBuY0dldEVsZW1lbnRWYWx1ZShhKXthPW5jR2V0RWxlbWVudChhKTtyZXR1cm4gbnVsbD09YT9cXFwiXFxcIjphLnZhbHVlfWZ1bmN0aW9uIG5jR2V0Q2hpbGRFbGVtZW50KGEsYil7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtmb3IodmFyIGM9MDtjPGEuY2hpbGROb2Rlcy5sZW5ndGg7YysrKWlmKGEuY2hpbGROb2Rlc1tjXS5pZD09Ynx8YS5jaGlsZE5vZGVzW2NdLmlkPT1iK25jRG9tU3VmZml4KXJldHVybiBhLmNoaWxkTm9kZXNbY107cmV0dXJuIG51bGx9XFxuZnVuY3Rpb24gbmNSZW1vdmVFbGVtZW50KGEsYil7aWYobnVsbD09YSlyZXR1cm4gbnVsbDtpZihhLnJlbW92ZUNoaWxkKXtmb3IodmFyIGM9MDtjPGEuY2hpbGROb2Rlcy5sZW5ndGg7YysrKWlmKGEuY2hpbGROb2Rlc1tjXS5pZD09Ynx8YS5jaGlsZE5vZGVzW2NdLmlkPT1iK25jRG9tU3VmZml4KXJldHVybiBhLnJlbW92ZUNoaWxkKGEuY2hpbGROb2Rlc1tjXSk7cmV0dXJuIG51bGx9ZG9jdW1lbnQuYWxsJiYoZG9jdW1lbnQuYWxsW2IrbmNEb21TdWZmaXhdPW51bGwsZG9jdW1lbnQuYWxsW2JdPW51bGwpO3JldHVybiBudWxsfWZ1bmN0aW9uIG5jU2FmZUdldChhLGIsYyl7cmV0dXJuIG51bGw9PWE/YzpiIGluIGE/XFxcIlxcXCI9PT1hW2JdP2M6YVtiXTpjfVxcbmZ1bmN0aW9uIG5jU2FmZUdldEludChhLGIsYyl7XFxcInN0cmluZ1xcXCI9PXR5cGVvZiBjJiYoYz1wYXJzZUludChjKSk7cmV0dXJuIG51bGw9PWE/YzpiIGluIGE/KGE9YVtiXSxcXFwiXFxcIj09PWE/YzpcXFwic3RyaW5nXFxcIj09dHlwZW9mIGE/cGFyc2VJbnQoYSk6YSk6Y31mdW5jdGlvbiBuY0dldFVuaXhUaW1lKCl7cmV0dXJuIHBhcnNlSW50KChuZXcgRGF0ZSkuZ2V0VGltZSgpXFxcLzFFMyl9ZnVuY3Rpb24gbmNHZXRUaW1lTVMoKXtyZXR1cm4gcGFyc2VJbnQoKG5ldyBEYXRlKS5nZXRUaW1lKCkpfWZ1bmN0aW9uIG5jTG9jVGV4dChhKXt2YXIgYj1uY0xhbmd1YWdlW25jUGxheWVyTW9kZVZpZGVvXS50b0xvd2VyQ2FzZSgpO2lmKCEoYiBpbiBuY0xhbmd1YWdlRGljdHx8KGI9bmNSZW1hcHBlZExhbmd1YWdlLnRvTG93ZXJDYXNlKCksYiBpbiBuY0xhbmd1YWdlRGljdCkpKXJldHVybiBhO3ZhciBjPVxcXCJfXFxcIithK1xcXCJfXFxcIixiPW5jTGFuZ3VhZ2VEaWN0W2JdO3JldHVybiBjIGluIGI/YltjXTphfVxcbmZ1bmN0aW9uIG5jTG9jU2VjdXJpdHlUZXh0KGEpe3ZhciBiPW5jTGFuZ3VhZ2VbbmNQbGF5ZXJNb2RlVmlkZW9dLnRvTG93ZXJDYXNlKCk7aWYoIShiIGluIG5jTGFuZ3VhZ2VEaWN0fHwoYj1uY1JlbWFwcGVkTGFuZ3VhZ2UudG9Mb3dlckNhc2UoKSxiIGluIG5jTGFuZ3VhZ2VEaWN0KSkpcmV0dXJuIGE7dmFyIGI9bmNMYW5ndWFnZURpY3RbYl0sYz0tMSxkPW51bGwsZT1uZXcgUmVnRXhwKFxcXCJeX1xcXCIrYStcXFwiXFxcXFxcXFxbKFxcXFxcXFxcZCspXFxcXFxcXFxdXyRcXFwiLFxcXCJpXFxcIik7Zm9yKGNrIGluIGIpe3ZhciBmPWUuZXhlYyhjayk7bnVsbCE9ZiYmMj09Zi5sZW5ndGgmJihmPXBhcnNlSW50KGZbMV0pLGY+YyYmZjw9bmNTZWN1cml0eUxldmVsJiYoYz1mLGQ9Y2spKX1yZXR1cm4gbnVsbCE9ZD9iW2RdOmF9dmFyIG5jV2FpdEZvckRPTUNhbGxiYWNrcz1bXSxuY1dhaXRGb3JET01Ub3RhbD0wLG5jV2FpdEZvckRPTVRpbWVvdXQ9MjAwO1xcbmZ1bmN0aW9uIG5jV2FpdEZvckRPTShhKXtudWxsIT1hP25jV2FpdEZvckRPTUNhbGxiYWNrcy5wdXNoKGEpOm5jV2FpdEZvckRPTVRvdGFsKz1uY1dhaXRGb3JET01UaW1lb3V0O2lmKG51bGwhPW5jR2V0RWxlbWVudChuY1dpZGdldElEKSl7YT1uY1dhaXRGb3JET01DYWxsYmFja3M7bmNXYWl0Rm9yRE9NQ2FsbGJhY2tzPVtdO3RyeXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKykoMCxhW2JdKSgpfWNhdGNoKGMpe25jQ2FsbFJlbmRlckVycm9yUGxheWVyKGMudG9TdHJpbmcoKSl9fWVsc2UgbnVsbCE9YSYmKG5jV2FpdEZvckRPTVRvdGFsPTAsbmNXYWl0Rm9yRE9NVGltZW91dD0yMDApLDFFND5uY1dhaXRGb3JET01Ub3RhbD8oc2V0VGltZW91dChmdW5jdGlvbigpe25jV2FpdEZvckRPTShudWxsKX0sbmNXYWl0Rm9yRE9NVGltZW91dCksbmNXYWl0Rm9yRE9NVGltZW91dCo9Mik6KG5jV2FpdEZvckRPTUNhbGxiYWNrcz1bXSxuY0NhbGxSZW5kZXJFcnJvclBsYXllcihcXFwiVW5hYmxlIHRvIGZpbmQgXFxcIitcXG5uY1dpZGdldElEK1xcXCIgaW4gRE9NIGFmdGVyIFxcXCIrbmNXYWl0Rm9yRE9NVG90YWwrXFxcIiBtc1xcXCIpKX12YXIgbmNJbml0RGF0YT1udWxsO2Z1bmN0aW9uIG5jTG9hZFBsYXllcihhKXtuY0xvYWRQbGF5ZXJFeHRlcm5hbChhKX1cXG5mdW5jdGlvbiBuY0xvYWRQbGF5ZXJFeHRlcm5hbChhKXtuY1ByZXZpb3VzU3RhdGU9bmNDdXJyZW50U3RhdGU7bmNDdXJyZW50U3ViU3RhdGU9bmNDdXJyZW50U3RhdGU9bmNTdGF0ZUluaXQ7bmNFbnRlclN0YXRlVGltZT1uY0dldFVuaXhUaW1lKCk7bmNJbml0RGF0YT1hO25jRG9tU3VmZml4PW5jU2FmZUdldChuY0luaXREYXRhLFxcXCJpaXNcXFwiLG5jRG9tU3VmZml4KTtuY0luaXRXaWRnZXRJRHMobmNTYWZlR2V0KGEsXFxcIndpZGdldE5hbWVcXFwiLFxcXCJudWNhcHRjaGFcXFwiKSk7bmNXYWl0Rm9yRE9NKGZ1bmN0aW9uKCl7bmNXaWRnZXRFbGVtZW50PW5jR2V0RWxlbWVudChuY1dpZGdldElEKTtuY1dpZGdldENvbnRhaW5lckVsZW1lbnQ9bmNHZXRFbGVtZW50KG5jV2lkZ2V0U2NyaXB0Q29udGFpbmVySUQpO25jU2tpbkVsZW1lbnQ9bmNHZXRFbGVtZW50KG5jU2tpbklEKTtuY1NhdmVHbG9iYWxzKGEpO25jUGxheWVySW5pdFN0YXRlKCk7bmNJbnB1dFByb2ZpbGVSZWdpc3RlckV2ZW50SGFuZGxlcihuY0dldEVsZW1lbnQobmNBbnN3ZXJJRCksXFxuXFxcImtleWRvd25cXFwiLG5jSW5wdXRQcm9maWxlS2V5ZG93bkhhbmRsZXIpO25kQ2FwdGNoYUF1dG9maWxsU291cmNlcz1uY1NhZmVHZXQobmNJbml0RGF0YSxcXFwiYXV0b2ZpbGxzb3VyY2VzXFxcIixuZENhcHRjaGFBdXRvZmlsbFNvdXJjZXMpO25jSW5pdFNlcnZlclJlcXVlc3RJbnRlcmNlcHQoKTtuY0luaXRQcm9wZXJ0eUNoYW5nZUV2ZW50KG5jR2V0RWxlbWVudChuY0Fuc3dlcklEKSxuY0lucHV0UHJvZmlsZUF1dG9maWxsTXV0YXRpb25IYW5kbGVyKX0pfWZ1bmN0aW9uIG5jSW5pdFdpZGdldElEcyhhKXtuY1dpZGdldE5hbWU9YTtuY1NjcmlwdFBsYXllcklEPWErXFxcIi1wbGF5ZXJcXFwiO25jTWVkaWFPYmplY3RJRD1hK1xcXCItbWVkaWFcXFwiO25jV2lkZ2V0RXJyb3JJRD1hK1xcXCItZXJyb3JcXFwifWZ1bmN0aW9uIG5jTm90aWZ5V2lkZ2V0TG9hZGVkKCl7XFxcImZ1bmN0aW9uXFxcIj09dHlwZW9mIG5jT25XaWRnZXRMb2FkZWQmJm5jT25XaWRnZXRMb2FkZWQoKX1cXG52YXIgbmNEYXRhU2VydmVyPVxcXCJcXFwiLG5jUj1cXFwibm90c2V0XFxcIixuY0luZGV4PTAsbmNQbGF5ZXJUeXBlTm9TY3JpcHQ9XFxcIk5PU0NSSVBUXFxcIixuY1BsYXllclR5cGVTY3JpcHQ9XFxcIlNDUklQVFxcXCIsbmNQbGF5ZXJUeXBlPW5jUGxheWVyVHlwZVNjcmlwdCxuY1BsYXllck1vZGVBdWRpbz1cXFwiQVVESU9cXFwiLG5jUGxheWVyTW9kZVZpZGVvPVxcXCJWSURFT1xcXCIsbmNQbGF5ZXJNb2RlPW5jUGxheWVyTW9kZVZpZGVvLG5jQnJvd3Nlck5hbWU9XFxcIlxcXCIsbmNQbGF0Zm9ybU5hbWU9XFxcIlxcXCIsbmNBdXRvZm9jdXNBdWRpb0VsZW1JRD1cXFwiXFxcIixuY0VuYWJsZU1lZGlhVG9nZ2xlPSEwLG5jRW5hYmxlQXVkaW9Db250cm9scz0hMSxuY1VzZUpzQXVkaW9QbGF5ZXJpT1M9ITEsbmNTdGF0ZUluaXQ9XFxcIklOSVRcXFwiLG5jU3RhdGVWaWRlbz1cXFwiVklERU9cXFwiLG5jU3RhdGVBdWRpbz1cXFwiQVVESU9cXFwiLG5jUHJldmlvdXNTdGF0ZT1uY1N0YXRlSW5pdCxuY0N1cnJlbnRTdGF0ZT1uY1N0YXRlSW5pdCxuY0N1cnJlbnRTdWJTdGF0ZT1uY1N0YXRlSW5pdCxuY1N0YXRlRW50ZXJUaW1lPVxcbjAsbmNUb2tlbj1cXFwiXFxcIixuY0xhbmd1YWdlPXtuY1BsYXllck1vZGVWaWRlbzpcXFwiZW5nXFxcIixuY1BsYXllck1vZGVBdWRpbzpcXFwiZW5nXFxcIn0sbmNSZW1hcHBlZExhbmd1YWdlPVxcXCJlbmdcXFwiLG5jVmlkZW9XaWR0aD0yNDAsbmNWaWRlb0hlaWdodD02MCxuY1NlY3VyaXR5TGV2ZWw9MTAwLG5jU2VjdXJpdHlMZXZlbFN0cmluZz1cXFwiMDEwMFxcXCIsbmNXaWRnZXRFcnJvcj0hMSxuY1dpZGdldElEPVxcXCJudWNhcHRjaGEtd2lkZ2V0XFxcIixuY1dpZGdldFNjcmlwdENvbnRhaW5lcklEPVxcXCJudWNhcHRjaGEtd2lkZ2V0LWNvbnRhaW5lclxcXCIsbmNXaWRnZXROYW1lPVxcXCJudWNhcHRjaGFcXFwiLG5jU2NyaXB0UGxheWVySUQ9XFxcIm51Y2FwdGNoYS1wbGF5ZXJcXFwiLG5jU2tpbklEPVxcXCJudWNhcHRjaGEtc2tpblxcXCIsbmNNZWRpYU9iamVjdElEPVxcXCJudWNhcHRjaGEtbWVkaWFcXFwiLG5jQXVkaW9Tb3VyY2VJRD1cXFwibnVjYXB0Y2hhLW1lZGlhLWF1ZGlvLXNvdXJjZVxcXCIsbmNUcmFja1JldHJ5SUQ9XFxcIm51Y2FwdGNoYS1tZWRpYS1zdGF0dXNcXFwiLG5jSnNBdWRpb1BsYXllcklEPVxcblxcXCJudWNhcHRjaGEtanMtYXVkaW8tcGxheWVyXFxcIixuY0pzQXVkaW9QbGF5QnRuSUQ9XFxcIm51Y2FwdGNoYS1qcy1hdWRpby1wbGF5LWJ0blxcXCIsbmNKc0F1ZGlvUGF1c2VCdG5JRD1cXFwibnVjYXB0Y2hhLWpzLWF1ZGlvLXBhdXNlLWJ0blxcXCIsbmNKc0F1ZGlvUGxheWVyPW51bGwsbmNBdWRpb0NvbnRyb2xzSW5saW5lQ1NTPW51bGwsbmNBbnN3ZXJJRD1cXFwibnVjYXB0Y2hhLWFuc3dlclxcXCIsbmNFeGl0VGltZUlEPVxcXCJudWNhcHRjaGEtYW5zd2VyLWV4aXRcXFwiLG5jRW50ZXJUaW1lSUQ9XFxcIm51Y2FwdGNoYS1hbnN3ZXItZW50ZXJcXFwiLG5jVG9rZW5OYW1lPVxcXCJudWNhcHRjaGEtc3VwZXJ0b2tlblxcXCIsbmNGYWxsYmFja1Rva2VuSUQ9XFxcIm51Y2FwdGNoYS1mYWxsYmFjay10b2tlblxcXCIsbmNXaWRnZXRFcnJvcklEPVxcXCJudWNhcHRjaGEtZXJyb3JcXFwiLG5jRXJyb3JDb250YWluZXJJRD1cXFwibnVjYXB0Y2hhLWVycm9yLWNvbnRhaW5lclxcXCIsbmNJbnB1dFByb2ZpbGVJRD1cXFwibnVjYXB0Y2hhLWlwcm9maWxlXFxcIixuY0VuY3J5cHRlZFBlcnNpc3RlbnREYXRhSUQ9XFxuXFxcIm51Y2FwdGNoYS1lcGRcXFwiLG5jQXV0b2ZpbGxTZXJ2ZXJLZXk9XFxcInNlcnZlcnNcXFwiLG5jQXV0b2ZpbGxQcm9wZXJ0eUtleT1cXFwicHJvcGVydGllc1xcXCIsbmNMYXN0UmVuZGVyVGltZT0wLG5jUmV0cnlEZWxheT1udWxsLG5jUmV0cnlDb3VudD0wLG5jQW5zd2VyVGFiSW5kZXg9LTEsbmNPcmlnRGF0YVNlcnZlcj1udWxsLG5jR2lmUmV0cnlDb3VudD0wLG5jRGlzcGxheUF1ZGlvTGlua3M9ITAsbmNEaXNwbGF5QXVkaW9Eb3dubG9hZD0hMCxuY0J1dHRvblN0YXRlcz1bXFxcImRlZmF1bHRcXFwiLFxcXCJob3ZlclxcXCIsXFxcImFjdGl2ZVxcXCJdLG5jQnV0dG9uVG9nZ2xlU3RhdGVzPVtcXFwidG9nZ2xlXFxcIixcXFwidG9nZ2xlLWNoZWNrZWRcXFwiXSxuY1dpZGdldEVsZW1lbnQ9bnVsbCxuY1dpZGdldENvbnRhaW5lckVsZW1lbnQ9bnVsbCxuY0tEQz0wLG5jQXV0b2ZpbGxTZXJ2ZXJSZXF1ZXN0PTAsbmNBdXRvZmlsbFByb3BlcnR5Q2hhbmdlPTAsbmRDYXB0Y2hhQXV0b2ZpbGxTb3VyY2VzPXt9LG5jU3VwZXJUb2tlbj1cXFwiXFxcIixuY1RyYWNrUmVxdWVzdEVycm9yPVxcbm51bGwsbmNUcmFja1JlcXVlc3RMb2FkZWQ9ITEsbmNUcmFja1JlcXVlc3RUaW1lb3V0PTFFNCxuY1RyYWNrUmVxdWVzdFRpbWVvdXRJRD1udWxsLG5jQnV0dG9uQWxpZ249XFxcInJpZ2h0XFxcIixuY0Rpc3BsYXlGbGFnX0RpcmVjdGlvbnM9MSxuY0Rpc3BsYXlGbGFnX0RpcmVjdGlvbnNWZXJib3NlPTIsbmNEaXNwbGF5RmxhZ19CdXR0b25IZWxwPTgsbmNEaXNwbGF5RmxhZ19CdXR0b25OZXdDaGFsbGVuZ2U9MTYsbmNEaXNwbGF5RmxhZ19CdXR0b25BdWRpb0NoYWxsZW5nZT0zMixuY0Rpc3BsYXlGbGFncz02NTUzNSxuY0RvbVN1ZmZpeD1cXFwiXFxcIixuY1NlZWQ9MCxuY0NlbGxTaXplPTEwLG5jSW50ZXJ2YWxIYW5kbGU9LTEsbmNBdXRvZm9jdXNBdWRpb0VsZW09bnVsbDtmdW5jdGlvbiBuY1BsYXllckluaXRTdGF0ZSgpe25jRW50ZXJTdGF0ZShuY1BsYXllck1vZGU9PW5jUGxheWVyTW9kZUF1ZGlvP25jU3RhdGVBdWRpbzpuY1N0YXRlVmlkZW8pfVxcbmZ1bmN0aW9uIG5jRGlzcGxheUZsYWdDaGVjayhhKXtyZXR1cm4gYT09KG5jRGlzcGxheUZsYWdzJmEpfWZ1bmN0aW9uIG5jRGlzcGxheUZsYWdTZXQoYSxiKXtuY0Rpc3BsYXlGbGFncz0wIT09Yj9uY0Rpc3BsYXlGbGFnc3xhOm5jRGlzcGxheUZsYWdzJn5hfWZ1bmN0aW9uIG5jRW50ZXJTdGF0ZShhKXtuY09uRXhpdFN0YXRlKG5jQ3VycmVudFN0YXRlLGEpO25jUHJldmlvdXNTdGF0ZT1uY0N1cnJlbnRTdGF0ZTtuY0N1cnJlbnRTdGF0ZT1hO25jQ3VycmVudFN1YlN0YXRlPW5jU3RhdGVJbml0O25jRW50ZXJTdGF0ZVRpbWU9bmNHZXRVbml4VGltZSgpO25jT25FbnRlclN0YXRlKG5jUHJldmlvdXNTdGF0ZSxuY0N1cnJlbnRTdGF0ZSk7bmNSZWZyZXNoU2NyaXB0UGxheWVyKCl9XFxuZnVuY3Rpb24gbmNFbnRlclN1YlN0YXRlKGEpe3ZhciBiPW5jQ3VycmVudFN1YlN0YXRlO25jT25FeGl0U3ViU3RhdGUoYixhKTtuY0N1cnJlbnRTdWJTdGF0ZT1hO25jT25FbnRlclN1YlN0YXRlKGIsYSl9ZnVuY3Rpb24gbmNPbkV4aXRTdGF0ZShhLGIpe31mdW5jdGlvbiBuY09uRW50ZXJTdGF0ZShhLGIpe31mdW5jdGlvbiBuY09uRW50ZXJTdWJTdGF0ZShhLGIpe3N3aXRjaChuY0N1cnJlbnRTdGF0ZSl7Y2FzZSBuY1N0YXRlVmlkZW86bmNVcGRhdGVEaXJlY3Rpb25zVGV4dCgpfX1mdW5jdGlvbiBuY09uRXhpdFN1YlN0YXRlKGEsYil7fVxcbmZ1bmN0aW9uIG5jUmVmcmVzaFNjcmlwdFBsYXllcihhKXt0cnl7MDw9bmNJbnRlcnZhbEhhbmRsZSYmY2xlYXJJbnRlcnZhbChuY0ludGVydmFsSGFuZGxlKTtpZihcXFwidW5kZWZpbmVkXFxcIiE9dHlwZW9mIGEpe25jRG9tU3VmZml4PWE7dmFyIGI9bmNHZXRFbGVtZW50VmFsdWUobmNUb2tlbk5hbWUpO1xcXCJcXFwiIT1iJiYobmNUb2tlbj1iLnNwbGl0KFxcXCJ8XFxcIilbMF0pO25jV2lkZ2V0RWxlbWVudD1uY0dldEVsZW1lbnQobmNXaWRnZXRJRCk7bmNXaWRnZXRDb250YWluZXJFbGVtZW50PW5jR2V0RWxlbWVudChuY1dpZGdldFNjcmlwdENvbnRhaW5lcklEKX1uY1JlbW92ZUVsZW1lbnQobmNXaWRnZXRDb250YWluZXJFbGVtZW50LG5jU2NyaXB0UGxheWVySUQpO2E9XFxcIlxcXCI7YT0hbmNDYW52YXNTdXBwb3J0ZWQoKSYmMDxuY1NlZWQ/bmNSZW5kZXJOb0NhbnZhcygpOm5jUmVuZGVyU2NyaXB0UGxheWVyKCk7bmNMYXN0UmVuZGVyVGltZT1uY0dldFRpbWVNUygpO25jV2lkZ2V0Q29udGFpbmVyRWxlbWVudC5pbm5lckhUTUw9XFxuYStuY1dpZGdldENvbnRhaW5lckVsZW1lbnQuaW5uZXJIVE1MO25jTm90aWZ5T3BlblNraW4oXFxcIkVWRU5UX1JFRlJFU0hfSFRNTFxcXCIsbnVsbCk7bmNQbGF5ZXJNb2RlPT09bmNQbGF5ZXJNb2RlQXVkaW8mJm5jQXV0b2ZvY3VzQXVkaW9FbGVtSUQmJihuY0F1dG9mb2N1c0F1ZGlvRWxlbT1uY0dldEVsZW1lbnQobmNBdXRvZm9jdXNBdWRpb0VsZW1JRCksbnVsbCE9PW5jQXV0b2ZvY3VzQXVkaW9FbGVtJiZuY0F1dG9mb2N1c0F1ZGlvRWxlbS5mb2N1cygpKTt2YXIgYz1uY0dldEVsZW1lbnQobmNBbnN3ZXJJRCk7bmNJbnB1dFByb2ZpbGVSZWdpc3RlckV2ZW50SGFuZGxlcihjLFxcXCJrZXlkb3duXFxcIixuY0lucHV0UHJvZmlsZUtleWRvd25IYW5kbGVyKTtuY0lucHV0UHJvZmlsZVJlZ2lzdGVyRXZlbnRIYW5kbGVyKGMsXFxcImJsdXJcXFwiLGZ1bmN0aW9uKCl7bmNDbWRMZWF2ZUFuc3dlckJveChuY0RvbVN1ZmZpeCl9KTtuY0lucHV0UHJvZmlsZVJlZ2lzdGVyRXZlbnRIYW5kbGVyKGMsXFxcImZvY3VzXFxcIixmdW5jdGlvbigpe25jQ21kRW50ZXJBbnN3ZXJCb3gobmNEb21TdWZmaXgpfSk7XFxubmNJbnB1dFByb2ZpbGVSZWdpc3RlckV2ZW50SGFuZGxlcihjLFxcXCJjaGFuZ2VcXFwiLGZ1bmN0aW9uKCl7bmNDbWRMZWF2ZUFuc3dlckJveChuY0RvbVN1ZmZpeCl9KTtuY0lucHV0UHJvZmlsZVJlZ2lzdGVyRXZlbnRIYW5kbGVyKGMsXFxcImNsaWNrXFxcIixmdW5jdGlvbigpe25jQ21kQ2xpY2tBbnN3ZXJCb3gobmNEb21TdWZmaXgpfSk7bmNJbnB1dFByb2ZpbGVSZWdpc3RlckV2ZW50SGFuZGxlcihuY0dldEVsZW1lbnQobmNFeGl0VGltZUlEKSxcXFwic3VibWl0XFxcIixmdW5jdGlvbigpe25jQ21kTGVhdmVBbnN3ZXJCb3gobmNEb21TdWZmaXgpfSk7dmFyIGQ9bmNHZXRFbGVtZW50KG5jTWVkaWFPYmplY3RJRCk7bmNJbnB1dFByb2ZpbGVSZWdpc3RlckV2ZW50SGFuZGxlcihkLFxcXCJsb2FkXFxcIixuY09uR2lmTG9hZGVkKTtuY1VzZUpzQXVkaW9QbGF5ZXJpT1N8fG51bGw9PT1kLmZpcnN0RWxlbWVudENoaWxkfHxudWxsPT09ZC5maXJzdEVsZW1lbnRDaGlsZC5pZHx8bmNBdWRpb1NvdXJjZUlEIT09ZC5maXJzdEVsZW1lbnRDaGlsZC5pZHx8XFxuKGQ9ZC5maXJzdEVsZW1lbnRDaGlsZCk7bmNJbnB1dFByb2ZpbGVSZWdpc3RlckV2ZW50SGFuZGxlcihkLFxcXCJlcnJvclxcXCIsbmNPbkdpZkVycm9yKTtuY0lucHV0UHJvZmlsZVJlZ2lzdGVyRXZlbnRIYW5kbGVyKG5jR2V0RWxlbWVudChcXFwibmV3LWNoYWxsZW5nZVxcXCIrbmNEb21TdWZmaXgpLFxcXCJjbGlja1xcXCIsZnVuY3Rpb24oYSl7bmNDbWROZXdDaGFsbGVuZ2UobmNEb21TdWZmaXgpO2EucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOmEucmV0dXJuVmFsdWU9ITE7cmV0dXJuITF9KTtuY0lucHV0UHJvZmlsZVJlZ2lzdGVyRXZlbnRIYW5kbGVyKG5jR2V0RWxlbWVudChcXFwicGxheWVyLW1vZGVcXFwiK25jRG9tU3VmZml4KSxcXFwiY2xpY2tcXFwiLGZ1bmN0aW9uKGEpe25jQ21kVG9nZ2xlQXVkaW8obmNEb21TdWZmaXgpO2EucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOmEucmV0dXJuVmFsdWU9ITE7cmV0dXJuITF9KTtuY0lucHV0UHJvZmlsZVJlZ2lzdGVyRXZlbnRIYW5kbGVyKG5jR2V0RWxlbWVudChcXFwiYXVkaW8tbGlzdGVuLWFnYWluXFxcIiksXFxuXFxcImNsaWNrXFxcIixmdW5jdGlvbihhKXtuY0NtZFJlZnJlc2gobmNEb21TdWZmaXgpO2EucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOmEucmV0dXJuVmFsdWU9ITE7cmV0dXJuITF9KTtcXFwidW5kZWZpbmVkXFxcIiE9dHlwZW9mIG5kc2FwaSYmXFxcImZ1bmN0aW9uXFxcIj09dHlwZW9mIG5kc2FwaS5iaW5kTmV3RmllbGRzJiZuZHNhcGkuYmluZE5ld0ZpZWxkcyhbbmNBbnN3ZXJJRF0pO25kQ2FwdGNoYUF1dG9maWxsU291cmNlcz1uY1NhZmVHZXQobmNJbml0RGF0YSxcXFwiYXV0b2ZpbGxTb3VyY2VzXFxcIixuZENhcHRjaGFBdXRvZmlsbFNvdXJjZXMpO25jSW5pdFNlcnZlclJlcXVlc3RJbnRlcmNlcHQoKTtuY0luaXRQcm9wZXJ0eUNoYW5nZUV2ZW50KG5jR2V0RWxlbWVudChuY0Fuc3dlcklEKSxuY0lucHV0UHJvZmlsZUF1dG9maWxsTXV0YXRpb25IYW5kbGVyKX1jYXRjaChlKXtuY0NhbGxSZW5kZXJFcnJvclBsYXllcihlLnRvU3RyaW5nKCkpfX1cXG5mdW5jdGlvbiBuY05vdGlmeU9wZW5Ta2luKGEsYil7XFxcInVuZGVmaW5lZFxcXCIhPXR5cGVvZiBudWNhcHRjaGEmJlxcXCJmdW5jdGlvblxcXCI9PXR5cGVvZiBudWNhcHRjaGEuX25vdGlmeUxpc3RlbmVycyYmbnVjYXB0Y2hhLl9ub3RpZnlMaXN0ZW5lcnMoYSxiKX1cXG5mdW5jdGlvbiBuY1NhdmVHbG9iYWxzKGEpe25jRGF0YVNlcnZlcj1uY1NhZmVHZXQoYSxcXFwiY2hhbGxlbmdlQmFzZVVybFxcXCIsbmNEYXRhU2VydmVyKTtuY0Rpc3BsYXlBdWRpb0Rvd25sb2FkPW5jU2FmZUdldChhLFxcXCJkaXNwbGF5QXVkaW9Eb3dubG9hZFxcXCIsbmNEaXNwbGF5QXVkaW9Eb3dubG9hZCk7bmNUb2tlbj1uY1NhZmVHZXQoYSxcXFwidG9rZW5cXFwiLG5jVG9rZW4pO25jU2VjdXJpdHlMZXZlbD1uY1NhZmVHZXQoYSxcXFwidGV4dExldmVsXFxcIixuY1NlY3VyaXR5TGV2ZWwpO25jUj1uY1NhZmVHZXQoYSxcXFwiclxcXCIsbmNSKTtuY0RvbVN1ZmZpeD1uY1NhZmVHZXQoYSxcXFwiaWlzXFxcIixuY0RvbVN1ZmZpeCk7bmNWaWRlb1dpZHRoPW5jU2FmZUdldChhLFxcXCJ2aWRlb1dpZHRoXFxcIixuY1ZpZGVvV2lkdGgpO25jVmlkZW9IZWlnaHQ9bmNTYWZlR2V0KGEsXFxcInZpZGVvSGVpZ2h0XFxcIixuY1ZpZGVvSGVpZ2h0KTtuY1BsYXllck1vZGU9bmNTYWZlR2V0KGEsXFxcInBsYXllck1vZGVcXFwiLG5jUGxheWVyTW9kZSk7bmNFbmFibGVBdWRpb0NvbnRyb2xzPVxcbm5jU2FmZUdldChhLFxcXCJlbmFibGVBdWRpb0NvbnRyb2xzXFxcIixuY0VuYWJsZUF1ZGlvQ29udHJvbHMpO25jQXVkaW9Db250cm9sc0lubGluZUNTUz1uY1NhZmVHZXQoYSxcXFwiYXVkaW9Db250cm9sc0lubGluZUNTU1xcXCIsbmNBdWRpb0NvbnRyb2xzSW5saW5lQ1NTKTtuY0F1dG9mb2N1c0F1ZGlvRWxlbUlEPW5jU2FmZUdldChhLFxcXCJhdXRvZm9jdXNBdWRpb0VsZW1JRFxcXCIsbmNBdXRvZm9jdXNBdWRpb0VsZW1JRCk7bmNVc2VKc0F1ZGlvUGxheWVyaU9TPW5jU2FmZUdldChhLFxcXCJ1c2VKc0F1ZGlvUGxheWVyaU9TXFxcIixuY1VzZUpzQXVkaW9QbGF5ZXJpT1MpO25jTGFuZ3VhZ2VbbmNQbGF5ZXJNb2RlVmlkZW9dPW5jU2FmZUdldChhLFxcXCJsYW5nXFxcIixuY1JlbWFwcGVkTGFuZ3VhZ2UpO25jTGFuZ3VhZ2VbbmNQbGF5ZXJNb2RlQXVkaW9dPW5jU2FmZUdldChhLFxcXCJhdWRpb0xhbmdcXFwiLG5jUmVtYXBwZWRMYW5ndWFnZSk7bmNSZW1hcHBlZExhbmd1YWdlPW5jTGFuZ3VhZ2VbbmNQbGF5ZXJNb2RlVmlkZW9dO25jRW5hYmxlTWVkaWFUb2dnbGU9XFxubmNTYWZlR2V0KGEsXFxcImVuYWJsZU1lZGlhVG9nZ2xlXFxcIixuY0VuYWJsZU1lZGlhVG9nZ2xlKTtuY0Jyb3dzZXJOYW1lPW5jU2FmZUdldChhLFxcXCJicm93c2VyTmFtZVxcXCIsbmNCcm93c2VyTmFtZSk7bmNQbGF0Zm9ybU5hbWU9bmNTYWZlR2V0KGEsXFxcInBsYXRmb3JtTmFtZVxcXCIsbmNQbGF0Zm9ybU5hbWUpO25jQW5zd2VySUQ9bmNTYWZlR2V0KGEsXFxcImFuc3dlck5hbWVcXFwiLG5jQW5zd2VySUQpO25jVG9rZW5OYW1lPW5jU2FmZUdldChhLFxcXCJ0b2tlbk5hbWVcXFwiLG5jVG9rZW5OYW1lKTtuY0Fuc3dlclRhYkluZGV4PW5jU2FmZUdldChhLFxcXCJ0YWJJbmRleFxcXCIsbmNBbnN3ZXJUYWJJbmRleCk7bmNTZWVkPW5jU2FmZUdldChhLFxcXCJzaHVmZmxlU2VlZFxcXCIsbmNTZWVkKTtuY0NlbGxTaXplPW5jU2FmZUdldChhLFxcXCJzaHVmZmxlQ2VsbFNpemVcXFwiLG5jQ2VsbFNpemUpOzA9PW5jRW5hYmxlTWVkaWFUb2dnbGUmJm5jRGlzcGxheUZsYWdTZXQobmNEaXNwbGF5RmxhZ19CdXR0b25BdWRpb0NoYWxsZW5nZSwwKTtuY1NlY3VyaXR5TGV2ZWxTdHJpbmc9XFxuXFxcIlxcXCIrbmNTZWN1cml0eUxldmVsOzEwPm5jU2VjdXJpdHlMZXZlbD9uY1NlY3VyaXR5TGV2ZWxTdHJpbmc9XFxcIjAwMFxcXCIrbmNTZWN1cml0eUxldmVsU3RyaW5nOjEwMD5uY1NlY3VyaXR5TGV2ZWw/bmNTZWN1cml0eUxldmVsU3RyaW5nPVxcXCIwMFxcXCIrbmNTZWN1cml0eUxldmVsU3RyaW5nOjFFMz5uY1NlY3VyaXR5TGV2ZWwmJihuY1NlY3VyaXR5TGV2ZWxTdHJpbmc9XFxcIjBcXFwiK25jU2VjdXJpdHlMZXZlbFN0cmluZyl9ZnVuY3Rpb24gbmNHZXRDdXN0b21TV0YoKXtyZXR1cm4hMX1mdW5jdGlvbiBuY1JlbmRlckV4dERpcmVjdGlvbnMoYSl7bmNSZW5kZXJFbGVtZW50U3RhcnQoXFxcImxhYmVsXFxcIixcXFwiZGlyZWN0aW9ucy1sYWJlbFxcXCIsbnVsbCwnZm9yPVxcXCInK25jQW5zd2VySUQrJ1xcXCInKTtuY0Rpc3BsYXlGbGFnQ2hlY2sobmNEaXNwbGF5RmxhZ19EaXJlY3Rpb25zKSYmbmNSZW5kZXJFbGVtZW50Q29udGVudChhKTtuY1JlbmRlckVsZW1lbnRFbmQoKX1cXG5mdW5jdGlvbiBuY1JlbmRlckV4dERpcmVjdGlvbnNWZXJib3NlKGEpe25jUmVuZGVyRWxlbWVudFN0YXJ0KFxcXCJsYWJlbFxcXCIsXFxcImRpcmVjdGlvbnMtdmVyYm9zZS1sYWJlbFxcXCIsbnVsbCwnZm9yPVxcXCInK25jQW5zd2VySUQrJ1xcXCInKTtuY0Rpc3BsYXlGbGFnQ2hlY2sobmNEaXNwbGF5RmxhZ19EaXJlY3Rpb25zVmVyYm9zZSkmJm5jUmVuZGVyRWxlbWVudENvbnRlbnQoYSk7bmNSZW5kZXJFbGVtZW50RW5kKCl9XFxuZnVuY3Rpb24gbmNSZW5kZXJFeHRCdXR0b25zKCl7bmNEaXNwbGF5RmxhZ0NoZWNrKG5jRGlzcGxheUZsYWdfQnV0dG9uTmV3Q2hhbGxlbmdlKSYmbmNSZW5kZXJCdXR0b24oXFxcInJlZnJlc2hcXFwiLFxcXCJjbWRcXFwiLFxcXCJqYXZhc2NyaXB0Om5jQ21kTmV3Q2hhbGxlbmdlKCdcXFwiK25jRG9tU3VmZml4K1xcXCInKTtcXFwiLG5jTG9jVGV4dChcXFwiUkVGUkVTSF9CVVRUT05cXFwiKSk7bmNEaXNwbGF5RmxhZ0NoZWNrKG5jRGlzcGxheUZsYWdfQnV0dG9uQXVkaW9DaGFsbGVuZ2UpJiZuY1JlbmRlckJ1dHRvbihcXFwiYXVkaW9cXFwiLFxcXCJjbWQgXFxcIituY0J1dHRvblRvZ2dsZVN0YXRlc1tuY1BsYXllck1vZGUhPW5jUGxheWVyTW9kZUF1ZGlvPzA6MV0sXFxcImphdmFzY3JpcHQ6bmNDbWRUb2dnbGVBdWRpbygnXFxcIituY0RvbVN1ZmZpeCtcXFwiJyk7XFxcIixuY0xvY1RleHQoXFxcIkFVRElPX0JVVFRPTlxcXCIpKX1cXG5mdW5jdGlvbiBuY1JlbmRlckV4dEFuc3dlcklucHV0KGEpe25jR2V0RGlyZWN0aW9uc1RleHQoKTtcXFwidW5kZWZpbmVkXFxcIj09dHlwZW9mIGEmJihhPVxcXCJcXFwiKTtuY1JlbmRlckVsZW1lbnRJbnB1dChuY0Fuc3dlcklELG51bGwsXFxcIlxcXCIsXFxcInRleHRcXFwiLCdtYXhsZW5ndGg9XFxcIjY0XFxcIiBhcmlhLXJlcXVpcmVkPVxcXCJ0cnVlXFxcIiBhdXRvY29tcGxldGU9XFxcIm9mZlxcXCInKygwPD1uY0Fuc3dlclRhYkluZGV4PycgdGFiaW5kZXg9XFxcIicrbmNBbnN3ZXJUYWJJbmRleCsnXFxcIic6XFxcIlxcXCIpK1xcXCIgXFxcIithKX1mdW5jdGlvbiBuY0dldFN1cGVyVG9rZW4oKXtyZXR1cm4gbmNUb2tlbitcXFwifFxcXCIrbmNJbmRleCtcXFwifFxcXCIrbmNQbGF5ZXJNb2RlK1xcXCJ8XFxcIituY0tEQytcXFwifFxcXCIrbmNEb21TdWZmaXgrXFxcInxcXFwiK25jQXV0b2ZpbGxTZXJ2ZXJSZXF1ZXN0K1xcXCJ8XFxcIituY0F1dG9maWxsUHJvcGVydHlDaGFuZ2V9XFxuZnVuY3Rpb24gbmNSZW5kZXJFeHRQcml2YXRlKCl7bmNTdXBlclRva2VuPW5jR2V0U3VwZXJUb2tlbigpO25jUmVuZGVyRWxlbWVudElucHV0KG5jRW50ZXJUaW1lSUQsbnVsbCxudWxsLFxcXCJoaWRkZW5cXFwiLCd2YWx1ZT1cXFwiXFxcIicpO25jUmVuZGVyRWxlbWVudElucHV0KG5jRXhpdFRpbWVJRCxudWxsLG51bGwsXFxcImhpZGRlblxcXCIsJ3ZhbHVlPVxcXCJcXFwiJyk7bmNSZW5kZXJFbGVtZW50SW5wdXQobmNUb2tlbk5hbWUsbnVsbCxudWxsLFxcXCJoaWRkZW5cXFwiLCd2YWx1ZT1cXFwiJytuY1N1cGVyVG9rZW4rJ1xcXCInKTshMSE9PW5jV2lkZ2V0RXJyb3ImJm5jUmVuZGVyRWxlbWVudElucHV0KG5jV2lkZ2V0RXJyb3JJRCxudWxsLG51bGwsXFxcImhpZGRlblxcXCIsJ3ZhbHVlPVxcXCInK25jV2lkZ2V0RXJyb3IrJ1xcXCInKX1mdW5jdGlvbiBuY1JlbmRlckV4dEZvb3Rlcigpe31mdW5jdGlvbiBuY0Zvcm1hdERpcmVjdGlvbnNUZXh0KCl7dmFyIGE9bmNHZXREaXJlY3Rpb25zVGV4dCgpWzFdO3JldHVybiBuY0xvY1NlY3VyaXR5VGV4dChhKX1cXG5mdW5jdGlvbiBuY1JlbmRlckV4dE1lZGlhKCl7dmFyIGE9bmNGb3JtYXREaXJlY3Rpb25zVGV4dCgpLGI9bmNEYXRhU2VydmVyK1xcXCI/XFxcIituY0dldERhdGFQYXJhbXMoKTtpZihuY0N1cnJlbnRTdGF0ZT09bmNTdGF0ZUF1ZGlvKWlmKG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goXFxcL1dpbmRvd3MgUGhvbmV8aWVtb2JpbGVcXFwvaSkmJihuY1BsYXRmb3JtTmFtZT1cXFwiV2luZG93c1Bob25lXFxcIiksbmNEaXNwbGF5QXVkaW9MaW5rcyYmKFxcXCJBbmRyb2lkXFxcIiE9PW5jUGxhdGZvcm1OYW1lJiZcXFwiaU9TXFxcIiE9PW5jUGxhdGZvcm1OYW1lJiZcXFwiV2luZG93c1Bob25lXFxcIiE9PW5jUGxhdGZvcm1OYW1lJiYhMT09PW5jRW5hYmxlQXVkaW9Db250cm9scyYmKG5jUmVuZGVyRWxlbWVudFN0YXJ0KFxcXCJhXFxcIixcXFwiYXVkaW8tbGlzdGVuLWFnYWluXFxcIixcXFwiY21kLWF1ZGlvXFxcIiwnaHJlZj1cXFwiI1xcXCIgdGl0bGU9XFxcIicrbmNMb2NUZXh0KFxcXCJBVURJT19MSVNURU5fQUdBSU5cXFwiKSsnXFxcIicpLG5jUmVuZGVyRWxlbWVudENvbnRlbnQobmNMb2NUZXh0KFxcXCJBVURJT19MSVNURU5fQUdBSU5cXFwiKSksXFxubmNSZW5kZXJFbGVtZW50RW5kKCkpLG5jRGlzcGxheUF1ZGlvRG93bmxvYWQmJihuY1JlbmRlckVsZW1lbnRTdGFydChcXFwiYVxcXCIsXFxcImF1ZGlvLWRvd25sb2FkXFxcIixcXFwiY21kLWF1ZGlvXFxcIiwnaHJlZj1cXFwiJytiKydcXFwiIHRpdGxlPVxcXCInK25jTG9jVGV4dChcXFwiRE9XTkxPQURfQVVESU9cXFwiKSsnXFxcIicpLG5jUmVuZGVyRWxlbWVudENvbnRlbnQobmNMb2NUZXh0KFxcXCJET1dOTE9BRF9BVURJT1xcXCIpKSxuY1JlbmRlckVsZW1lbnRFbmQoKSkpLG5jVXNlSnNBdWRpb1BsYXllcmlPUyYmbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChcXFwvT1MgMTNfNFxcXC9pKSYmKFxcXCJpT1NcXFwiPT09bmNQbGF0Zm9ybU5hbWV8fG5jRW5hYmxlQXVkaW9Db250cm9scykpe3ZhciBjPW5jTG9jVGV4dChcXFwiUExBWV9CVVRUT05cXFwiKSxkPW5jTG9jVGV4dChcXFwiUEFVU0VfQlVUVE9OXFxcIik7bmNSZW5kZXJFbGVtZW50U3RhcnQoXFxcImRpdlxcXCIsbmNKc0F1ZGlvUGxheWVySUQsbnVsbCwncm9sZT1cXFwiYnV0dG9uXFxcIiBhcmlhLWxhYmVsPVxcXCInK2MrJ1xcXCIgdGFiaW5kZXg9XFxcIjBcXFwiIG9uY2xpY2s9XFxcIm5jUGxheUF1ZGlvKClcXFwiJyxcXG5cXFwid2lkdGg6IDQzcHg7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46MjBweDtcXFwiKTtuY0NyZWF0ZVBsYXlQYXVzZVN2ZyhuY0pzQXVkaW9QbGF5QnRuSUQpO25jQ3JlYXRlUGxheVBhdXNlU3ZnKG5jSnNBdWRpb1BhdXNlQnRuSUQpO25jUmVuZGVyRWxlbWVudEVuZCgpO25jSnNBdWRpb1BsYXllcj1uZXcgQXVkaW8oYik7bmNKc0F1ZGlvUGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoXFxcInBsYXlcXFwiLGZ1bmN0aW9uKCl7bmNVcGRhdGVKc1BsYXllckVsZW1lbnRzKFxcXCJub25lXFxcIixcXFwiYmxvY2tcXFwiLGQpfSk7bmNKc0F1ZGlvUGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoXFxcInBhdXNlXFxcIixmdW5jdGlvbigpe25jVXBkYXRlSnNQbGF5ZXJFbGVtZW50cyhcXFwiYmxvY2tcXFwiLFxcXCJub25lXFxcIixjKX0pO25jSnNBdWRpb1BsYXllci5hZGRFdmVudExpc3RlbmVyKFxcXCJlbmRlZFxcXCIsZnVuY3Rpb24oKXtuY1VwZGF0ZUpzUGxheWVyRWxlbWVudHMoXFxcImJsb2NrXFxcIixcXFwibm9uZVxcXCIsYyl9KTtuY0pzQXVkaW9QbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihcXFwiZXJyb3JcXFwiLFxcbmZ1bmN0aW9uKCl7Y29uc29sZS5sb2coXFxcIkZhaWxlZCB0byBsb2FkIGF1ZGlvIGNhcHRjaGFcXFwiKX0pfWVsc2V7dmFyIGU9YT1cXFwiXFxcIixmPVxcXCJhdXRvcGxheSBcXFwiO2lmKFxcXCJBbmRyb2lkXFxcIj09PW5jUGxhdGZvcm1OYW1lfHxcXFwiaU9TXFxcIj09PW5jUGxhdGZvcm1OYW1lfHxcXFwiV2luZG93c1Bob25lXFxcIj09PW5jUGxhdGZvcm1OYW1lfHxuY0VuYWJsZUF1ZGlvQ29udHJvbHMpZT0nIGNvbnRyb2xzIGNvbnRyb2xzTGlzdD1cXFwibm9kb3dubG9hZFxcXCInLGE9bmNBdWRpb0NvbnRyb2xzSW5saW5lQ1NTLGY9XFxcIlxcXCI7bmNSZW5kZXJFbGVtZW50U3RhcnQoXFxcImF1ZGlvXFxcIixuY01lZGlhT2JqZWN0SUQsbnVsbCxmK2UsYSk7bmNSZW5kZXJFbGVtZW50KFxcXCJzb3VyY2VcXFwiLG5jQXVkaW9Tb3VyY2VJRCxudWxsLCdzcmM9XFxcIicrYisnXFxcIiB0eXBlPVxcXCJhdWRpb1xcXC9tcGVnXFxcIicpO25jUmVuZGVyRWxlbWVudEVuZCgpfWVsc2UgbmNDdXJyZW50U3RhdGU9PW5jU3RhdGVWaWRlbyYmbmNSZW5kZXJFbGVtZW50R2lmKG5jTWVkaWFPYmplY3RJRCxcXFwiXFxcIixuY1ZpZGVvV2lkdGgsXFxubmNWaWRlb0hlaWdodCxiLGEsXFxcIlxcXCIpfWZ1bmN0aW9uIG5jVXBkYXRlSnNQbGF5ZXJFbGVtZW50cyhhLGIsYyl7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmNKc0F1ZGlvUGxheUJ0bklEKS5zdHlsZS5kaXNwbGF5PWE7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmNKc0F1ZGlvUGF1c2VCdG5JRCkuc3R5bGUuZGlzcGxheT1iO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5jSnNBdWRpb1BsYXllcklEKS5zZXRBdHRyaWJ1dGUoXFxcImFyaWEtbGFiZWxcXFwiLGMpfVxcbmZ1bmN0aW9uIG5jQ3JlYXRlUGxheVBhdXNlU3ZnKGEpe2E9PW5jSnNBdWRpb1BsYXlCdG5JRD9uY0NyZWF0ZVN2ZyhhLFxcXCJibG9ja1xcXCIsbmNMb2NUZXh0KFxcXCJQTEFZX0JVVFRPTlxcXCIpLCdkPVxcXCJNMCwwLjYwNTA2ODY5MiBDMCwwLjA1ODE3MzcxMjEgMC4zODI1MTY0ODgsLTAuMTU2MTA0Nzg5IDAuODY0MTIyNjUsMC4xMzIzMDE4ODcgTDEwLjYzMjU5ODUsNS45ODIwODkyOCBDMTEuMTA5ODQwMyw2LjI2Nzg4MjM3IDExLjExNDIwNDcsNi43Mjg2MTkxMyAxMC42MzI1OTg1LDcuMDE3MDEwOTcgTDAuODY0MTIyNjUsMTIuODY2NDk3NSBDMC4zODY4ODA4ODksMTMuMTUyMjc1OSAwLDEyLjk0MTQxNjYgMCwxMi4zOTM3MDQxIEwwLDAuNjA1MDY4NjkyIFpcXFwiJyk6YT09bmNKc0F1ZGlvUGF1c2VCdG5JRCYmbmNDcmVhdGVTdmcoYSxcXFwibm9uZVxcXCIsbmNMb2NUZXh0KFxcXCJQQVVTRV9CVVRUT05cXFwiKSwnZD1cXFwiTTcsMC45OTg1MDIzMjkgQzcsMC40NDcwNDQ3MiA3LjQ0MzM1MzE4LDAgOC4wMDkzNjg5LDAgTDkuOTkwNjMxMSwwIEMxMC41NDgwOTAyLDAgMTEsMC40NDc0ODk0MjYgMTEsMC45OTg1MDIzMjkgTDExLDEyLjAwMTQ5NzcgQzExLDEyLjU1Mjk1NTMgMTAuNTU2NjQ2OCwxMyA5Ljk5MDYzMTEsMTMgTDguMDA5MzY4OSwxMyBDNy40NTE5MDk4NSwxMyA3LDEyLjU1MjUxMDYgNywxMi4wMDE0OTc3IEw3LDAuOTk4NTAyMzI5IFogTTAsMC45OTg1MDIzMjkgQzAsMC40NDcwNDQ3MiAwLjQ0MzM1MzE3NiwwIDEuMDA5MzY4OSwwIEwyLjk5MDYzMTEsMCBDMy41NDgwOTAxNSwwIDQsMC40NDc0ODk0MjYgNCwwLjk5ODUwMjMyOSBMNCwxMi4wMDE0OTc3IEM0LDEyLjU1Mjk1NTMgMy41NTY2NDY4MiwxMyAyLjk5MDYzMTEsMTMgTDEuMDA5MzY4OSwxMyBDMC40NTE5MDk4NDgsMTMgMCwxMi41NTI1MTA2IDAsMTIuMDAxNDk3NyBMMCwwLjk5ODUwMjMyOSBaXFxcIicpfVxcbmZ1bmN0aW9uIG5jQ3JlYXRlU3ZnKGEsYixjLGQpe25jUmVuZGVyRWxlbWVudFN0YXJ0KFxcXCJzdmdcXFwiLGEsXFxcIlxcXCIsJ3dpZHRoPVxcXCIxMXB4XFxcIiBoZWlnaHQ9XFxcIjEzcHhcXFwiIHZpZXdCb3g9XFxcIjAgMCAxMSAxM1xcXCIgdmVyc2lvbj1cXFwiMS4xXFxcIiB4bWxucz1cXFwiaHR0cDpcXFwvXFxcL3d3dy53My5vcmdcXFwvMjAwMFxcXC9zdmdcXFwiIHhtbG5zOnhsaW5rPVxcXCJodHRwOlxcXC9cXFwvd3d3LnczLm9yZ1xcXC8xOTk5XFxcL3hsaW5rXFxcIiByb2xlPVxcXCJpbWdcXFwiJyxcXFwiYmFja2dyb3VuZC1jb2xvcjogIzg2ODY4NjsgcGFkZGluZzogOXB4IDE2cHg7IGJvcmRlci1yYWRpdXM6IDdweDsgZGlzcGxheTogXFxcIitiK1xcXCI7XFxcIik7bmNSZW5kZXJFbGVtZW50U3RhcnQoXFxcInRpdGxlXFxcIik7bmNSZW5kZXJFbGVtZW50Q29udGVudChjKTtuY1JlbmRlckVsZW1lbnRFbmQoKTtuY1JlbmRlckVsZW1lbnRTdGFydChcXFwiZGVzY1xcXCIpO25jUmVuZGVyRWxlbWVudENvbnRlbnQoYyk7bmNSZW5kZXJFbGVtZW50RW5kKCk7bmNSZW5kZXJFbGVtZW50U3RhcnQoXFxcImdcXFwiLFxcXCJcXFwiLFxcXCJcXFwiLCdzdHJva2U9XFxcIm5vbmVcXFwiIHN0cm9rZS13aWR0aD1cXFwiMVxcXCIgZmlsbD1cXFwibm9uZVxcXCIgZmlsbC1ydWxlPVxcXCJldmVub2RkXFxcIicpO1xcbm5jUmVuZGVyRWxlbWVudFN0YXJ0KFxcXCJnXFxcIixjLFxcXCJcXFwiLCdmaWxsPVxcXCIjZmZmZmZmXFxcIicpO25jUmVuZGVyRWxlbWVudFN0YXJ0KFxcXCJwYXRoXFxcIixcXFwiXFxcIixcXFwiXFxcIixkKTtuY1JlbmRlckVsZW1lbnRFbmQoKTtuY1JlbmRlckVsZW1lbnRFbmQoKTtuY1JlbmRlckVsZW1lbnRFbmQoKTtuY1JlbmRlckVsZW1lbnRFbmQoKX1mdW5jdGlvbiBuY1BsYXlBdWRpbygpe25jSnNBdWRpb1BsYXllci5wYXVzZWQ/bmNKc0F1ZGlvUGxheWVyLnBsYXkoKTpuY0pzQXVkaW9QbGF5ZXIucGF1c2UoKX1mdW5jdGlvbiBuY0ZvcmNlUmVtb3ZlRWxlbWVudHMoKXtuY1JlbW92ZUVsZW1lbnQobmNXaWRnZXRDb250YWluZXJFbGVtZW50LG5jQW5zd2VySUQpO25jUmVtb3ZlRWxlbWVudChuY1dpZGdldENvbnRhaW5lckVsZW1lbnQsXFxcImRpcmVjdGlvbnMtbGFiZWxcXFwiKTtuY1JlbW92ZUVsZW1lbnQobmNXaWRnZXRDb250YWluZXJFbGVtZW50LFxcXCJkaXJlY3Rpb25zLXZlcmJvc2UtbGFiZWxcXFwiKX1cXG5mdW5jdGlvbiBuY0xvYWRUZW1wbGF0ZSgpe3ZhciBhPW5jR2V0RWxlbWVudChcXFwibnVjYXB0Y2hhLXRlbXBsYXRlXFxcIiksYj1udWxsLGM9XFxcIlxcXCI7aWYobnVsbCE9YSlpZihiPWEuaW5uZXJIVE1MLHZvaWQgMCE9YiYmXFxcIlxcXCIhPWIpe2lmKC0xPT1iLmluZGV4T2YoXFxcIiR7UGxheWVyU3RhcnR9XFxcIil8fC0xPT1iLmluZGV4T2YoXFxcIiR7UGxheWVyRW5kfVxcXCIpfHwtMT09Yi5pbmRleE9mKFxcXCIke01lZGlhfVxcXCIpKWI9bnVsbCxjPSc8ZGl2IGNsYXNzPVxcXCJlcnJvclxcXCI+VGVtcGxhdGUgbXVzdCBjb250YWluICR7UGxheWVyU3RhcnR9LCAke1BsYXllckVuZH0gYW5kICR7TWVkaWF9IHZhcmlhYmxlczxcXFwvZGl2Pid9ZWxzZSBiPW51bGwsYz0nPGRpdiBjbGFzcz1cXFwiZXJyb3JcXFwiPlVuYWJsZSB0byBmaW5kIHZhbGlkIHRlbXBsYXRlIFxcXCJudWNhcHRjaGEtdGVtcGxhdGVcXFwiPFxcXC9kaXY+JztyZXR1cm57dGh0bWw6Yix0aHRtbEVycm9yOmN9fVxcbmZ1bmN0aW9uIG5jUmVwbGFjZU1hY3JvcyhhLGIpe2Zvcih2YXIgYyBpbiBhKWI9Yi5yZXBsYWNlKG5ldyBSZWdFeHAoXFxcIlxcXFxcXFxcJFxcXFxcXFxce1xcXCIrYytcXFwiXFxcXFxcXFx9XFxcIixcXFwiZ1xcXCIpLGFbY10pO3JldHVybiBifWZ1bmN0aW9uIG5jUmVuZGVyTm9DYW52YXMoKXtuY0ZvcmNlUmVtb3ZlRWxlbWVudHMoKTt2YXIgYT17fTthLlBsYXllclN0YXJ0PSc8ZGl2IGlkPVxcXCInK25jV2lkZ2V0TmFtZStcXFwiLXBsYXllclxcXCIrbmNEb21TdWZmaXgrJ1xcXCIgY2xhc3M9XFxcIicrbmNXaWRnZXROYW1lKyctcGxheWVyXFxcIj5cXFxcbic7YS5QbGF5ZXJFbmQ9XFxcIjxcXFwvZGl2PlxcXFxuXFxcIjthLkhUTUw1UmVxdWlyZWQ9JzxsYWJlbCBpZD1cXFwiaHRtbDUtcmVxdWlyZWQtbGFiZWwnK25jRG9tU3VmZml4KydcXFwiIGNsYXNzPVxcXCJodG1sNS1yZXF1aXJlZC1sYWJlbFxcXCI+JytuY0xvY1RleHQoXFxcIkhUTUw1X1JFUVVJUkVEXFxcIikrXFxcIjxcXFwvbGFiZWw+XFxcIjtyZXR1cm4gbmNSZXBsYWNlTWFjcm9zKGEsXFxcIiR7UGxheWVyU3RhcnR9ICR7SFRNTDVSZXF1aXJlZH0gJHtQbGF5ZXJFbmR9XFxcIil9XFxuZnVuY3Rpb24gbmNSZW5kZXJTY3JpcHRQbGF5ZXIoKXtuY0ZvcmNlUmVtb3ZlRWxlbWVudHMoKTt2YXIgYT1uY0dldERpcmVjdGlvbnNUZXh0KCksYj1hWzBdLGM9YVsxXSxhPW5jTG9hZFRlbXBsYXRlKCk7bnVsbD09YS50aHRtbCYmKGEudGh0bWw9XFxcIiR7UGxheWVyU3RhcnR9ICR7TWVkaWF9ICR7RGlyZWN0aW9uc1ZlcmJvc2V9ICR7SW5wdXRBbnN3ZXJ9ICR7UGxheWVyRW5kfVxcXCIpO3ZhciBkPW5jUmVuZGVyR2xvYmFsQ2xhc3NlcygpLGU9e307ZS5QbGF5ZXJTdGFydD0nPGRpdiBpZD1cXFwiJytuY1dpZGdldE5hbWUrXFxcIi1wbGF5ZXJcXFwiK25jRG9tU3VmZml4KydcXFwiIGNsYXNzPVxcXCInK25jV2lkZ2V0TmFtZStcXFwiLXBsYXllciBcXFwiK2QrJ1xcXCI+XFxcXG4nO2UuUGxheWVyRW5kPVxcXCI8XFxcL2Rpdj5cXFxcblxcXCI7ZS5EaXJlY3Rpb25zPSc8bGFiZWwgaWQ9XFxcImRpcmVjdGlvbnMtbGFiZWwnK25jRG9tU3VmZml4KydcXFwiIGNsYXNzPVxcXCJkaXJlY3Rpb25zLWxhYmVsXFxcIj4nK25jTG9jU2VjdXJpdHlUZXh0KGIpK1xcXCI8XFxcL2xhYmVsPlxcXCI7ZS5EaXJlY3Rpb25zVmVyYm9zZT1cXG4nPGxhYmVsIGlkPVxcXCJkaXJlY3Rpb25zLXZlcmJvc2UtbGFiZWwnK25jRG9tU3VmZml4KydcXFwiIGNsYXNzPVxcXCJkaXJlY3Rpb25zLXZlcmJvc2UtbGFiZWxcXFwiIGZvcj1cXFwiJytuY0Fuc3dlcklEK25jRG9tU3VmZml4KydcXFwiPicrbmNMb2NTZWN1cml0eVRleHQoYykrXFxcIjxcXFwvbGFiZWw+XFxcIjtuY0Rpc3BsYXlGbGFnQ2hlY2sobmNEaXNwbGF5RmxhZ19CdXR0b25OZXdDaGFsbGVuZ2UpJiYoZS5Db21tYW5kTmV3Q2hhbGxlbmdlPSc8YSByb2xlPVxcXCJidXR0b25cXFwiIGhyZWY9XFxcIiNcXFwiIGlkPVxcXCJuZXctY2hhbGxlbmdlJytuY0RvbVN1ZmZpeCsnXFxcImFyaWEtbGFiZWw9IFxcXCInK25jTG9jVGV4dChcXFwiUkVGUkVTSF9CVVRUT05cXFwiKSsnXFxcIiBjbGFzcz1cXFwiY21kIG5ldy1jaGFsbGVuZ2VcXFwiPicrbmNMb2NUZXh0KFxcXCJSRUZSRVNIX0JVVFRPTlxcXCIpK1xcXCI8XFxcL2E+XFxcIik7bmNEaXNwbGF5RmxhZ0NoZWNrKG5jRGlzcGxheUZsYWdfQnV0dG9uQXVkaW9DaGFsbGVuZ2UpPyhiPVxcXCJBVURJT19CVVRUT05cXFwiLG5jUGxheWVyTW9kZT09PW5jUGxheWVyTW9kZUF1ZGlvJiZcXG4oYj1cXFwiQVVESU9fQlVUVE9OX1JFVFVSTlxcXCIpLGUuQ29tbWFuZFBsYXllck1vZGU9JzxhIHJvbGU9XFxcImJ1dHRvblxcXCIgaHJlZj1cXFwiI1xcXCIgaWQ9XFxcInBsYXllci1tb2RlJytuY0RvbVN1ZmZpeCsnXFxcIiBhcmlhLWxhYmVsPVxcXCInK25jTG9jVGV4dChiKSsnXFxcIiBjbGFzcz1cXFwiY21kIHBsYXllci1tb2RlICcrbmNCdXR0b25Ub2dnbGVTdGF0ZXNbbmNQbGF5ZXJNb2RlIT1uY1BsYXllck1vZGVBdWRpbz8wOjFdKydcXFwiPicrbmNMb2NUZXh0KGIpK1xcXCI8XFxcL2E+XFxcIik6ZS5Db21tYW5kUGxheWVyTW9kZT1cXFwiXFxcIjtlLkNvbW1hbmRIZWxwPVxcXCJcXFwiO2UuQ29tbWFuZEVycm9yQ29udGFpbmVyPSc8ZGl2IGlkPVxcXCInK25jRXJyb3JDb250YWluZXJJRCtuY0RvbVN1ZmZpeCsnXFxcIiBjbGFzcz1cXFwiZXJyb3JcXFwiPjxcXFwvZGl2Pic7bmNSZW5kZXJCZWdpbigpOy0xPHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXFxcIlRyaWRlbnRcXFwvXFxcIik/bmNSZW5kZXJFbGVtZW50U3RhcnQoXFxcImRpdlxcXCIsXFxcIm1lZGlhLWNvbnRhaW5lclxcXCIsbnVsbCwncm9sZT1cXFwiYXBwbGljYXRpb25cXFwiJyk6XFxubmNSZW5kZXJFbGVtZW50U3RhcnQoXFxcImRpdlxcXCIsXFxcIm1lZGlhLWNvbnRhaW5lclxcXCIpO25jUmVuZGVyRXh0TWVkaWEoKTtuY1JlbmRlckVsZW1lbnRFbmQoKTtuY1JlbmRlckVuZCgpO2UuTWVkaWE9bmNSZW5kZXJGcmFtZS5qb2luKFxcXCJcXFxcblxcXCIpO25jUmVuZGVyQmVnaW4oKTtuY1JlbmRlckV4dEFuc3dlcklucHV0KCk7bmNSZW5kZXJFbmQoKTtlLklucHV0QW5zd2VyPW5jUmVuZGVyRnJhbWUuam9pbihcXFwiXFxcXG5cXFwiKTtuY1JlbmRlckJlZ2luKCk7bmNSZW5kZXJFbGVtZW50U3RhcnQoXFxcImRpdlxcXCIsXFxcInByaXZhdGUtY29udGFpbmVyXFxcIixudWxsLG51bGwpO25jUmVuZGVyRXh0UHJpdmF0ZSgpO25jUmVuZGVyRWxlbWVudEVuZCgpO25jUmVuZGVyRW5kKCk7ZS5QbGF5ZXJFbmQ9bmNSZW5kZXJGcmFtZS5qb2luKFxcXCJcXFxcblxcXCIpK2UuUGxheWVyRW5kO3JldHVybiBuY1JlcGxhY2VNYWNyb3MoZSxhLnRodG1sKSthLnRodG1sRXJyb3J9XFxuZnVuY3Rpb24gbmNSZW5kZXJHbG9iYWxDbGFzc2VzKCl7dmFyIGE9W107YS5wdXNoKFxcXCJ3bS1zY3JpcHRcXFwiKTthLnB1c2goXFxcInB0LVxcXCIrbmNQbGF5ZXJUeXBlLnRvTG93ZXJDYXNlKCkpO2EucHVzaChcXFwicG0tXFxcIituY1BsYXllck1vZGUudG9Mb3dlckNhc2UoKSk7YS5wdXNoKFxcXCJsLVxcXCIrbmNMYW5ndWFnZVtuY1BsYXllck1vZGVWaWRlb10udG9Mb3dlckNhc2UoKSk7cmV0dXJuIGEuam9pbihcXFwiIFxcXCIpfWZ1bmN0aW9uIG5jUmVuZGVyRWxlbWVudEdpZihhLGIsYyxkLGUsZixnKXtpZih2b2lkIDA9PWd8fG51bGw9PWcpZz1cXFwiXFxcIjtuY1JlbmRlckVsZW1lbnQoXFxcImltZ1xcXCIsYSxiLCcgd2lkdGg9XFxcIicrYysnXFxcIiAgaGVpZ2h0PVxcXCInK2QrJ1xcXCIgIHNyYz1cXFwiJytlKydcXFwiICBhbHQ9XFxcIicrZisnXFxcIiAnK2cpfVxcbmZ1bmN0aW9uIG5jUmVuZGVyQnV0dG9uKGEsYixjLGQpe25jUmVuZGVyRWxlbWVudFN0YXJ0KFxcXCJhXFxcIixhLGIrXFxcIiBcXFwiK25jQnV0dG9uU3RhdGVzWzBdLCcgaHJlZj1cXFwiJytjKydcXFwiIHRpdGxlPVxcXCInK2QrJ1xcXCIgIG9ubW91c2Vkb3duPVxcXCJqYXZhc2NyaXB0Om5jQnV0dG9uRG93bih0aGlzKVxcXCIgb25tb3VzZXVwPVxcXCJqYXZhc2NyaXB0Om5jQnV0dG9uVXAodGhpcylcXFwiIG9ubW91c2VvdmVyPVxcXCJqYXZhc2NyaXB0Om5jQnV0dG9uT3Zlcih0aGlzKVxcXCIgb25tb3VzZW91dD1cXFwiamF2YXNjcmlwdDpuY0J1dHRvbk91dCh0aGlzKVxcXCInKTtuY1JlbmRlckVsZW1lbnRDb250ZW50KGQpO25jUmVuZGVyRWxlbWVudEVuZCgpfWZ1bmN0aW9uIG5jUmVuZGVyRWxlbWVudElucHV0KGEsYixjLGQsZSl7bmNSZW5kZXJFbGVtZW50U3RhcnQoXFxcImlucHV0XFxcIixhLGIsJ25hbWU9XFxcIicrYSsnXFxcIiAgdGl0bGU9XFxcIicrYysnXFxcIiAgdHlwZT1cXFwiJytkKydcXFwiICcrZSk7bmNSZW5kZXJFbGVtZW50RW5kKCl9XFxudmFyIG5jU3RvcmVkUmVuZGVyRnJhbWVzPXt9LG5jUmVuZGVyRnJhbWU9W10sbmNSZW5kZXJTdGFjaz1bXSxuY1JlbmRlckluZGVudD1cXFwiXFxcIixuY1JlbmRlckluZGVudFZhbHVlPVxcXCIgICAgXFxcIjtmdW5jdGlvbiBuY1JlbmRlclN0YXRlU2F2ZSgpe3JldHVybltuY1N0b3JlZFJlbmRlckZyYW1lcyxuY1JlbmRlckZyYW1lLG5jUmVuZGVyU3RhY2ssbmNSZW5kZXJJbmRlbnRdfWZ1bmN0aW9uIG5jUmVuZGVyU3RhdGVSZXN0b3JlKGEpe25jU3RvcmVkUmVuZGVyRnJhbWVzPWFbMF07bmNSZW5kZXJGcmFtZT1hWzFdO25jUmVuZGVyU3RhY2s9YVsyXTtuY1JlbmRlckluZGV4PWFbM119ZnVuY3Rpb24gbmNSZW5kZXJCZWdpbigpe25jU3RvcmVkUmVuZGVyRnJhbWVzPXt9O25jUmVuZGVyRnJhbWU9W107bmNSZW5kZXJTdGFjaz1bXTtuY1JlbmRlckluZGVudD1cXFwiXFxcIn1mdW5jdGlvbiBuY1JlbmRlckVuZCgpe31cXG5mdW5jdGlvbiBuY1JlbmRlckVsZW1lbnRTdGFydChhLGIsYyxkLGUpe3ZhciBmPVtdO2lmKG51bGwhPWMpe2Zvcih2YXIgZz1jLnNwbGl0KFxcXCIgXFxcIiksbD0wO2w8Zy5sZW5ndGg7bCsrKVxcXCJcXFwiIT1nW2xdJiZmLnB1c2goXFxcIi5cXFwiK2dbbF0pO251bGwhPWImJi0xPT09Yy5pbmRleE9mKGIpJiYoYys9XFxcIiBcXFwiK2IpfWVsc2UgYz1iO25jUmVuZGVyU3RhY2sucHVzaChbYSxudWxsIT1iP1xcXCIjXFxcIitiOlxcXCJcXFwiLGZdKTtuY1JlbmRlckluZGVudCs9bmNSZW5kZXJJbmRlbnRWYWx1ZTtiPW51bGw9PWI/XFxcIlxcXCI6JyBpZD1cXFwiJytiK25jRG9tU3VmZml4KydcXFwiJztjPW51bGw9PWM/XFxcIlxcXCI6JyBjbGFzcz1cXFwiJytjKydcXFwiJztudWxsIT1lJiYoYys9JyBzdHlsZT1cXFwiJytlKydcXFwiJyk7bmNSZW5kZXJGcmFtZS5wdXNoKFxcXCI8XFxcIithK2IrYysobnVsbD09ZD9cXFwiXFxcIjpcXFwiIFxcXCIrZCkrXFxcIiA+XFxcIil9XFxuZnVuY3Rpb24gbmNSZW5kZXJFbGVtZW50KGEsYixjLGQsZSl7bmNSZW5kZXJFbGVtZW50U3RhcnQoYSxiLGMsZCk7bnVsbCE9ZSYmbmNSZW5kZXJFbGVtZW50Q29udGVudChlKTtuY1JlbmRlckVsZW1lbnRFbmQoKX1mdW5jdGlvbiBuY1JlbmRlckVsZW1lbnRDb250ZW50KGEpe25jUmVuZGVyRnJhbWUucHVzaChuY1JlbmRlckluZGVudCtuY1JlbmRlckluZGVudFZhbHVlK2EpfWZ1bmN0aW9uIG5jUmVuZGVyRWxlbWVudEVuZCgpe25jUmVuZGVyRnJhbWUucHVzaChcXFwiPFxcXC9cXFwiK25jUmVuZGVyU3RhY2tbbmNSZW5kZXJTdGFjay5sZW5ndGgtMV1bMF0rXFxcIj5cXFwiKTtuY1JlbmRlclN0YWNrLnBvcCgpO25jUmVuZGVySW5kZW50PVxcXCJcXFwiO2Zvcih2YXIgYT0wO2E8bmNSZW5kZXJTdGFjay5sZW5ndGg7YSsrKW5jUmVuZGVySW5kZW50Kz1uY1JlbmRlckluZGVudFZhbHVlfVxcbmZ1bmN0aW9uIG5jR2V0RGF0YVBhcmFtcygpe3JldHVyblxcXCJ0eXBlPVxcXCIrbmNQbGF5ZXJNb2RlK1xcXCImbGFuZz1cXFwiK25jTGFuZ3VhZ2VbbmNQbGF5ZXJNb2RlXS50b0xvd2VyQ2FzZSgpK1xcXCImaW5kZXg9XFxcIituY0luZGV4K1xcXCImdG9rZW49XFxcIituY1Rva2VuK1xcXCImcj1cXFwiK25jUitcXFwiJnB0eXBlPVxcXCIrbmNQbGF5ZXJUeXBlfWZ1bmN0aW9uIG5jVXBkYXRlRGlyZWN0aW9uc1RleHQoKXt2YXIgYT1uY0dldERpcmVjdGlvbnNUZXh0KCksYj1uY0dldEVsZW1lbnQoXFxcImRpcmVjdGlvbnMtbGFiZWxcXFwiKTtudWxsIT1iJiYoYi5pbm5lckhUTUw9bmNMb2NTZWN1cml0eVRleHQoYVswXSkpO2I9bmNHZXRFbGVtZW50KFxcXCJkaXJlY3Rpb25zLXZlcmJvc2UtbGFiZWxcXFwiKTtudWxsIT1iJiYoYi5pbm5lckhUTUw9bmNMb2NTZWN1cml0eVRleHQoYVsxXSkpfVxcbmZ1bmN0aW9uIG5jR2V0RGlyZWN0aW9uc1RleHQoKXt2YXIgYT1cXFwiRElSRUNUSU9OU1xcXCIsYj1cXFwiRElSRUNUSU9OU19WRVJCT1NFXFxcIjtuY1BsYXllck1vZGU9PW5jUGxheWVyTW9kZUF1ZGlvJiYoYSs9XFxcIl9BVURJT1xcXCIsYis9XFxcIl9BVURJT1xcXCIpO3JldHVyblthLGJdfWZ1bmN0aW9uIG5jRmlsdGVyQ21kKGEpe3JldHVybiEwfWZ1bmN0aW9uIG5jQ21kTmV3Q2hhbGxlbmdlKGEpeyExIT09bmNGaWx0ZXJDbWQoXFxcIm5ldy1jaGFsbGVuZ2VcXFwiKSYmKG5jSW5kZXgrKyxuY05vdGlmeU9wZW5Ta2luKFxcXCJFVkVOVF9DTURfTkVXX0NIQUxMRU5HRVxcXCIsbmNJbmRleCksbmNSZWZyZXNoU2NyaXB0UGxheWVyKGEpLGE9bmNHZXRFbGVtZW50KFxcXCJuZXctY2hhbGxlbmdlXFxcIithKSxudWxsIT1hJiZhLmZvY3VzKCkpfWZ1bmN0aW9uIG5jQ21kUmVmcmVzaChhKXshMSE9PW5jRmlsdGVyQ21kKFxcXCJyZWZyZXNoXFxcIikmJm5jUmVmcmVzaFNjcmlwdFBsYXllcihhKX1cXG5mdW5jdGlvbiBuY0NtZFJlcGxheShhKXtuY0ZpbHRlckNtZChcXFwicmVwbGF5XFxcIil9ZnVuY3Rpb24gbmNDbWRUb2dnbGVBdWRpbyhhKXtpZighMSE9PW5jRmlsdGVyQ21kKFxcXCJ0b2dnbGUtYXVkaW9cXFwiKSl7dmFyIGI9bmNQbGF5ZXJNb2RlVmlkZW87c3dpdGNoKG5jUGxheWVyTW9kZSl7Y2FzZSBuY1BsYXllck1vZGVBdWRpbzpiPW5jUGxheWVyTW9kZVZpZGVvO2JyZWFrO2Nhc2UgbmNQbGF5ZXJNb2RlVmlkZW86Yj1uY1BsYXllck1vZGVBdWRpb31uY0NtZFNldFBsYXllck1vZGUoYixhKX19XFxuZnVuY3Rpb24gbmNDbWRTZXRQbGF5ZXJNb2RlKGEsYil7aWYoITEhPT1uY0ZpbHRlckNtZChcXFwic2V0LXBsYXllci1tb2RlXFxcIikpe3N3aXRjaChhKXtjYXNlIG5jUGxheWVyTW9kZUF1ZGlvOmNhc2UgbmNQbGF5ZXJNb2RlVmlkZW86YnJlYWs7ZGVmYXVsdDphPW5jUGxheWVyTW9kZVZpZGVvfW5jUGxheWVyTW9kZT1hO2lmKFxcXCJ1bmRlZmluZWRcXFwiIT10eXBlb2YgYil7bmNEb21TdWZmaXg9Yjt2YXIgYz1uY0dldEVsZW1lbnRWYWx1ZShuY1Rva2VuTmFtZSk7XFxcIlxcXCIhPWMmJihuY1Rva2VuPWMuc3BsaXQoXFxcInxcXFwiKVswXSk7bmNXaWRnZXRFbGVtZW50PW5jR2V0RWxlbWVudChuY1dpZGdldElEKTtuY1dpZGdldENvbnRhaW5lckVsZW1lbnQ9bmNHZXRFbGVtZW50KG5jV2lkZ2V0U2NyaXB0Q29udGFpbmVySUQpfW5jUGxheWVyTW9kZT09bmNQbGF5ZXJNb2RlQXVkaW8/bmNFbnRlclN0YXRlKG5jU3RhdGVBdWRpbyk6bmNFbnRlclN0YXRlKG5jU3RhdGVWaWRlbyk7bmNOb3RpZnlPcGVuU2tpbihcXFwiRVZFTlRfQ01EX1BMQVlFUl9NT0RFXFxcIixcXG5uY1BsYXllck1vZGUpO2lmKG5jUGxheWVyTW9kZSE9PW5jUGxheWVyTW9kZUF1ZGlvfHxudWxsPT09bmNBdXRvZm9jdXNBdWRpb0VsZW0pYz1uY0dldEVsZW1lbnQoXFxcInBsYXllci1tb2RlXFxcIitiKSxudWxsIT1jJiZjLmZvY3VzKCl9fWZ1bmN0aW9uIG5jQ21kTGVhdmVBbnN3ZXJCb3goYSl7ITEhPT1uY0ZpbHRlckNtZChcXFwibGVhdmUtYW5zd2VyYm94XFxcIikmJihcXFwidW5kZWZpbmVkXFxcIiE9dHlwZW9mIGEmJihuY0RvbVN1ZmZpeD1hKSxuY0dldEVsZW1lbnQobmNFeGl0VGltZUlEKS52YWx1ZT1uY0dldFVuaXhUaW1lKCkpfWZ1bmN0aW9uIG5jQ21kRW50ZXJBbnN3ZXJCb3goYSl7ITEhPT1uY0ZpbHRlckNtZChcXFwiZW50ZXItYW5zd2VyYm94XFxcIikmJihcXFwidW5kZWZpbmVkXFxcIiE9dHlwZW9mIGEmJihuY0RvbVN1ZmZpeD1hKSxcXFwiXFxcIj09bmNHZXRFbGVtZW50KG5jRW50ZXJUaW1lSUQpLnZhbHVlJiYobmNHZXRFbGVtZW50KG5jRW50ZXJUaW1lSUQpLnZhbHVlPW5jR2V0VW5peFRpbWUoKSkpfVxcbmZ1bmN0aW9uIG5jQ21kQ2xpY2tBbnN3ZXJCb3goYSl7bmNGaWx0ZXJDbWQoXFxcImNsaWNrLWFuc3dlcmJveFxcXCIpfWZ1bmN0aW9uIG5jQ21kRXJyb3IoYSl7bmNXaWRnZXRFcnJvcj1hO25jUGxheWVyVHlwZT1uY1BsYXllclR5cGVTY3JpcHQ7bmNSZWZyZXNoU2NyaXB0UGxheWVyKCl9ZnVuY3Rpb24gbmNTZXRBZHNlcnZUaW1lKGEpe2lmKFxcXCJcXFwiPT1uY0Fkc2VydlRyYW5zZmVyVGltZSl7bmNBZHNlcnZUcmFuc2ZlclRpbWU9XFxcIlxcXCIrYTt2YXIgYj1uY0dldEVsZW1lbnQobmNBZHNlcnZUcmFuc2ZlclRpbWVJRCk7bnVsbCE9YiYmXFxcIlxcXCI9PWIudmFsdWUmJihiLnZhbHVlPWEpfX1mdW5jdGlvbiBuY1NldERvd25sb2FkVGltZShhKXtuY05vdGlmeU9wZW5Ta2luKFxcXCJFVkVOVF9NRURJQV9ET1dOTE9BRF9DT01QTEVURVxcXCIsYSl9XFxuZnVuY3Rpb24gbmNCdXR0b25TZXRTdGF0ZShhLGIsYyl7dmFyIGQ9YS5jbGFzc05hbWUsZD1kLnJlcGxhY2UobmNCdXR0b25TdGF0ZXNbYl0sXFxcIlxcXCIpO2EuY2xhc3NOYW1lPWQ7YyYmKGM9ZC5zcGxpdChcXFwiIFxcXCIpLGMucHVzaChuY0J1dHRvblN0YXRlc1tiXSksYS5jbGFzc05hbWU9Yy5qb2luKFxcXCIgXFxcIikpfWZ1bmN0aW9uIG5jQnV0dG9uU2V0VG9nZ2xlU3RhdGUoYSxiKXt2YXIgYz1hLmNsYXNzTmFtZSxjPWMucmVwbGFjZShuY0J1dHRvblRvZ2dsZVN0YXRlc1swPT1iPzE6MF0sXFxcIlxcXCIpO2EuY2xhc3NOYW1lPWMrXFxcIiBcXFwiK25jQnV0dG9uVG9nZ2xlU3RhdGVzW2JdfWZ1bmN0aW9uIG5jQnV0dG9uRG93bihhKXtuY0J1dHRvblNldFN0YXRlKGEsMiwhMCl9ZnVuY3Rpb24gbmNCdXR0b25VcChhKXtuY0J1dHRvblNldFN0YXRlKGEsMiwhMSk7bmNCdXR0b25TZXRTdGF0ZShhLDEsITApfWZ1bmN0aW9uIG5jQnV0dG9uT3ZlcihhKXtuY0J1dHRvblNldFN0YXRlKGEsMSwhMCl9XFxuZnVuY3Rpb24gbmNCdXR0b25PdXQoYSl7bmNCdXR0b25TZXRTdGF0ZShhLDIsITEpO25jQnV0dG9uU2V0U3RhdGUoYSwxLCExKX1mdW5jdGlvbiBuY0NhbnZhc1N1cHBvcnRlZCgpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXFxcImNhbnZhc1xcXCIpO3JldHVybiEoIWEuZ2V0Q29udGV4dHx8IWEuZ2V0Q29udGV4dChcXFwiMmRcXFwiKSl9XFxuZnVuY3Rpb24gbmNPbkdpZkxvYWRlZCgpezA8bmNTZWVkJiZmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtmdW5jdGlvbiBjKCl7ZihtKTtuY0ludGVydmFsSGFuZGxlPXNldEludGVydmFsKGZ1bmN0aW9uKCl7bT0obSsxKSUyMDtmKG0pfSwxMDApfWZ1bmN0aW9uIGYoYSl7Zm9yKHZhciBjPTA7YzxwO2MrPTEpe3ZhciBlPWcocltjK2EqcF0pLGY9ZyhjKTt0LmRyYXdJbWFnZShkLGUueCxlLnksYixiLGYueCxmLnksYixiKX19ZnVuY3Rpb24gZyhhKXtyZXR1cm57eDphJXEqYix5Ok1hdGguZmxvb3IoYVxcXC9xKSpifX1mdW5jdGlvbiBsKGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDxiO2QrPTEpe2E9NDgyNzEqYSUyMTQ3NDgzNjQ3O3ZhciBlPWElTWF0aC5tYXgoMSxkKTtlIT09ZCYmKGNbZF09Y1tlXSk7Y1tlXT1kfXJldHVybiBjfWlmKGQucGFyZW50Tm9kZSl7dmFyIGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcXFwiY2FudmFzXFxcIik7ay53aWR0aD1wYXJzZUludChkLmdldEF0dHJpYnV0ZShcXFwid2lkdGhcXFwiKSxcXG4xMCk7ay5oZWlnaHQ9cGFyc2VJbnQoZC5nZXRBdHRyaWJ1dGUoXFxcImhlaWdodFxcXCIpLDEwKTt2YXIgaD1uY0xvY1RleHQoXFxcIkNBUFRDSEFfU1BSSVRFX0xBQkVMXFxcIik7aWYoXFxcIlxcXCI9PT1oKWg9XFxcIkNhcHRjaGEgTGV0dGVycywgdXNlIHRoZSB0b2dnbGUgdG8gc3dpdGNoIGJldHdlZW4gYXVkaW9cXFwvdmlkZW8gY2hhbGxlbmdlc1xcXCI7ZWxzZXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFxcXCJ0ZXh0YXJlYVxcXCIpO24uaW5uZXJIVE1MPWg7aD1uLnZhbHVlfWsuc2V0QXR0cmlidXRlKFxcXCJhcmlhLWxhYmVsXFxcIixoKTtrLnNldEF0dHJpYnV0ZShcXFwicm9sZVxcXCIsXFxcImltZ1xcXCIpO2QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoayxkKTt2YXIgdD1rLmdldENvbnRleHQoXFxcIjJkXFxcIik7ZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpO2Zvcih2YXIgcT1kLm5hdHVyYWxXaWR0aFxcXC9iLHA9ZC5uYXR1cmFsV2lkdGgqZC5uYXR1cmFsSGVpZ2h0XFxcLyhiKmIpXFxcLzIwLGs9MjAqcCxuPVtdLGg9MDtoPGs7aCs9MSluLnB1c2goaCk7dmFyIHI9XFxubChrKSxtPTA7YygpfX12YXIgZD1uY0dldEVsZW1lbnQobmNNZWRpYU9iamVjdElEKTtkLmNvbXBsZXRlJiYwPGQubmF0dXJhbEhlaWdodD9jKCk6ZC5vbmxvYWQ9Y30obmNTZWVkLG5jQ2VsbFNpemUpO25jU2V0RG93bmxvYWRUaW1lKG5jR2V0VGltZU1TKCktbmNMYXN0UmVuZGVyVGltZSl9ZnVuY3Rpb24gbmNPbkdpZkVycm9yKCl7Mz5uY0dpZlJldHJ5Q291bnQ/KG5jR2lmUmV0cnlDb3VudCsrLG5jTm90aWZ5T3BlblNraW4oXFxcIkVWRU5UX01FRElBX0RPV05MT0FEX1JFVFJZXFxcIixuY0dpZlJldHJ5Q291bnQpLG5jUmVmcmVzaFNjcmlwdFBsYXllcigpKTpuY05vdGlmeU9wZW5Ta2luKFxcXCJFVkVOVF9NRURJQV9ET1dOTE9BRF9GQUlMVVJFXFxcIixuY0dpZlJldHJ5Q291bnQpfVxcbmZ1bmN0aW9uIG5jQ2FsbFJlbmRlckVycm9yUGxheWVyKGEpe1xcXCJmdW5jdGlvblxcXCI9PXR5cGVvZiBuY1JlbmRlckVycm9yUGxheWVyP25jUmVuZGVyRXJyb3JQbGF5ZXIoYSk6XFxcIm9iamVjdFxcXCI9PXR5cGVvZiBjb25zb2xlJiZcXFwiZnVuY3Rpb25cXFwiPT10eXBlb2YgY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKGEpfVxcbnZhciBudWNhcHRjaGE9e19pOm51bGwsZ2V0SW50ZXJmYWNlOmZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDE6cmV0dXJuIHRoaXMuX2k9dGhpcy5pdjF9dGhpcy5fdGhyb3dFcnJvcihcXFwiSW52YWxpZCBpbnRlcmZhY2UgdmVyc2lvbiBcXFwiK2EpfSxfdGhyb3dFcnJvcjpmdW5jdGlvbihhKXt0aHJvd1xcXCJOdUNhcHRjaGEgaW50ZXJmYWNlIGVycm9yOiBcXFwiK2E7fSxfbm90aWZ5TGlzdGVuZXJzOmZ1bmN0aW9uKGEsYil7aWYobnVsbCE9dGhpcy5faSlzd2l0Y2goYSl7Y2FzZSB0aGlzLl9pLkVWRU5UX1JFRlJFU0hfSFRNTDp0aGlzLl9pLl9ub3RpZnlMaXN0ZW5lcnMoYSxiKTticmVhaztjYXNlIHRoaXMuX2kuRVZFTlRfTUVESUFfRE9XTkxPQURfQ09NUExFVEU6dGhpcy5faS5fbm90aWZ5TGlzdGVuZXJzKGEsYil9fSxpdjE6e1BMQVlFUk1PREVfQVVESU86XFxcIlBMQVlFUk1PREVfQVVESU9cXFwiLFBMQVlFUk1PREVfVklERU86XFxcIlBMQVlFUk1PREVfVklERU9cXFwiLElEX05VQ0FQVENIQV9BTlNXRVI6XFxcIm51Y2FwdGNoYS1hbnN3ZXJcXFwiLFxcbklEX05VQ0FQVENIQV9NRURJQUNPTlRBSU5FUjpcXFwibWVkaWEtY29udGFpbmVyXFxcIixJRF9OVUNBUFRDSEFfTUVESUFTVEFUVVM6XFxcIm51Y2FwdGNoYS1tZWRpYS1zdGF0dXNcXFwiLGNtZEdldEFOZXdDaGFsbGVuZ2U6ZnVuY3Rpb24oKXtuY0NtZE5ld0NoYWxsZW5nZSgpfSxjbWRSZWZyZXNoQ2hhbGxlbmdlOmZ1bmN0aW9uKCl7bmNDbWRSZWZyZXNoKCl9LGNtZFNob3dIZWxwOmZ1bmN0aW9uKCl7bmNDbWRIZWxwKCl9LGNtZFJlcGxheTpmdW5jdGlvbigpe25jQ21kUmVwbGF5KCl9LGNtZFNldFBsYXllck1vZGU6ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgdGhpcy5QTEFZRVJNT0RFX1ZJREVPOm5jQ21kU2V0UGxheWVyTW9kZShuY1BsYXllck1vZGVWaWRlbyk7YnJlYWs7Y2FzZSB0aGlzLlBMQVlFUk1PREVfQVVESU86bmNDbWRTZXRQbGF5ZXJNb2RlKG5jUGxheWVyTW9kZUF1ZGlvKTticmVhaztkZWZhdWx0Om5jQ21kU2V0UGxheWVyTW9kZShuY1BsYXllck1vZGVWaWRlbyl9fSxjbWRUb2dnbGVQbGF5ZXJNb2RlOmZ1bmN0aW9uKCl7dGhpcy5jbWRTZXRQbGF5ZXJNb2RlKHRoaXMuZ2V0UGxheWVyTW9kZSgpPT1cXG50aGlzLlBMQVlFUk1PREVfQVVESU8/dGhpcy5QTEFZRVJNT0RFX1ZJREVPOnRoaXMuUExBWUVSTU9ERV9BVURJTyl9LGdldERpcmVjdGlvbnM6ZnVuY3Rpb24oKXt2YXIgYT1uY0dldERpcmVjdGlvbnNUZXh0KCk7cmV0dXJuW25jTG9jU2VjdXJpdHlUZXh0KGFbMF0pLG5jTG9jU2VjdXJpdHlUZXh0KGFbMV0pXX0sZ2V0UGxheWVyTW9kZTpmdW5jdGlvbigpe3N3aXRjaChuY1BsYXllck1vZGUpe2Nhc2UgbmNQbGF5ZXJNb2RlQXVkaW86cmV0dXJuIHRoaXMuUExBWUVSTU9ERV9BVURJT31yZXR1cm4gdGhpcy5QTEFZRVJNT0RFX1ZJREVPfSxnZXRNZWRpYVNpemU6ZnVuY3Rpb24oKXtyZXR1cm5bbmNWaWRlb1dpZHRoLG5jVmlkZW9IZWlnaHRdfSxnZXRSZWFkeVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LEVWRU5UX1JFRlJFU0hfSFRNTDpcXFwiRVZFTlRfUkVGUkVTSF9IVE1MXFxcIixFVkVOVF9DTURfTkVXX0NIQUxMRU5HRTpcXFwiRVZFTlRfQ01EX05FV19DSEFMTEVOR0VcXFwiLEVWRU5UX0NNRF9QTEFZRVJfTU9ERTpcXFwiRVZFTlRfQ01EX1BMQVlFUl9NT0RFXFxcIixcXG5FVkVOVF9DTURfSEVMUDpcXFwiRVZFTlRfQ01EX0hFTFBcXFwiLEVWRU5UX01FRElBX0RPV05MT0FEX0NPTVBMRVRFOlxcXCJFVkVOVF9NRURJQV9ET1dOTE9BRF9DT01QTEVURVxcXCIsRVZFTlRfTUVESUFfRE9XTkxPQURfUkVUUlk6XFxcIkVWRU5UX01FRElBX0RPV05MT0FEX1JFVFJZXFxcIixFVkVOVF9NRURJQV9ET1dOTE9BRF9GQUlMVVJFOlxcXCJFVkVOVF9NRURJQV9ET1dOTE9BRF9GQUlMVVJFXFxcIixFVkVOVF9NRURJQV9ET1dOTE9BRF9XQUlUOlxcXCJFVkVOVF9NRURJQV9ET1dOTE9BRF9XQUlUXFxcIixFVkVOVF9NRURJQV9ET1dOTE9BRF9XQUlUX1RJTUVPVVQ6XFxcIkVWRU5UX01FRElBX0RPV05MT0FEX1dBSVRfVElNRU9VVFxcXCIsX2xpc3RlbmVyczpbXSxhZGRMaXN0ZW5lcjpmdW5jdGlvbihhKXtudWxsPT1hJiZudWNhcHRjaGEuX3Rocm93RXJyb3IoXFxcIkxpc3RlbmVyIGNhbm5vdCBiZSBudWxsXFxcIik7XFxcImZ1bmN0aW9uXFxcIiE9dHlwZW9mIGEub25OdUNhcHRjaGFFdmVudCYmbnVjYXB0Y2hhLl90aHJvd0Vycm9yKFxcXCJMaXN0ZW5lciBtdXN0IGNvbnRhaW4gb25OdUNhcHRjaGFFdmVudCBtZXRob2RcXFwiKTtcXG50aGlzLl9saXN0ZW5lcnMucHVzaChhKX0scmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7Yjx0aGlzLl9saXN0ZW5lcnMubGVuZ3RoO2IrKylpZih0aGlzLl9saXN0ZW5lcnNbYl09PWEpe3RoaXMuX2xpc3RlbmVycy5zcGxpY2UoYiwxKTticmVha319LF9ub3RpZnlMaXN0ZW5lcnM6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPHRoaXMuX2xpc3RlbmVycy5sZW5ndGg7YysrKXRoaXMuX2xpc3RlbmVyc1tjXS5vbk51Q2FwdGNoYUV2ZW50KGEsYil9fX07XFxuXFxuPFxcXC9zY3JpcHQ+XFxuPHNjcmlwdCB0eXBlPVxcXCJ0ZXh0XFxcL2phdmFzY3JpcHRcXFwiPm5jTG9hZFBsYXllcih7XFxcImNoYWxsZW5nZUJhc2VVcmxcXFwiOlxcXCJodHRwczpcXFxcXFxcL1xcXFxcXFwvbmQuc3RhcGxlcy5jb21cXFxcXFxcLzEuMFxcXFxcXFwvd1xcXFxcXFwvMjMuMi4xNTM4ODhcXFxcXFxcL3ctNDE2NTU0XFxcXFxcXC9jYXB0Y2hhXFxcIixcXFwidG9rZW5cXFwiOlxcXCIxLnctNDE2NTU0LjIuMi5WcHpNaXlsVGQzNHR0d2kyX2RHV0ZRLCwuMzRZSVc0ZmZDdHVXd2ZnSnYwaWdaeklkZWtEc2w4Y01Rem84Uy1aZUNMRUwzcXFmcUROdXJOcDZSM3o5MjFtU0NhcFhDRUo3REpFU3RhV1hDWm1VNXhfTEVDUC1CUkRyTTJ6OWE2RFg1SUN1MEQzcUcxNnJwc01EUDhpcmkwZkhZVHJYRmF2ZkxMUV9KY0Z1LXU1SG9yM0FsVE5zSGtoazczNENOZ0wwLU4tX3AxbEZRSDBzWlg5VEcwZzJKaXZaVmE2S252MVI4ZW9haXMwRmJ2dEVNOGE0RTNIbGp2TGt3N3ItZkgxVlo2QlRSQ1BNYzVOR2NjaG05c0NBRmVuNDcwQVpsekRLSGdnZUNFWVVWOTNYakxraVFSME54Nkg2M3hMUlZwOElyUV9GaUxaMDdiRUF0ajF2UHVyUk1YSXoyQkstUzA5b0MwdHlTSEt4M2twNmEyT3M3NjB4amhMaF9hSy1KTFF0LV83MXp4azh3c3VteHBpcmRrMDBCOHloaFI1U0JIRUpCWXlPS2pPLVduRkQ4dWdQWmNFeTRnUnJZNlJVdVRNQnlVLUhDY3FaQXE5dl9kcnIzeU9pVVBQdWk1azlsOHp2QllFcGZJY3F0R3g4UGNwd0RZb2lVT2tVNnFfQ3U4QXFDYzQsXFxcIixcXFwiclxcXCI6XFxcInJzLVkyaFc4aUQ1cHVDZ3NsdmlPTDB0Q1F4eFxcXCIsXFxcImxhbmdcXFwiOlxcXCJlbmdcXFwiLFxcXCJhdWRpb0xhbmdcXFwiOlxcXCJlbmdcXFwiLFxcXCJ0ZXh0TGV2ZWxcXFwiOjIwMCxcXFwiaWlzXFxcIjpcXFwiXFxcIixcXFwidmlkZW9XaWR0aFxcXCI6XFxcIjI0MFxcXCIsXFxcInZpZGVvSGVpZ2h0XFxcIjpcXFwiNjBcXFwiLFxcXCJwbGF5ZXJNb2RlXFxcIjpcXFwiVklERU9cXFwiLFxcXCJlbmFibGVNZWRpYVRvZ2dsZVxcXCI6dHJ1ZSxcXFwiYnJvd3Nlck5hbWVcXFwiOlxcXCJDaHJvbWVcXFwiLFxcXCJwbGF0Zm9ybU5hbWVcXFwiOlxcXCJBbmRyb2lkXFxcIixcXFwiYW5zd2VyTmFtZVxcXCI6XFxcIm51Y2FwdGNoYS1hbnN3ZXJcXFwiLFxcXCJ0b2tlbk5hbWVcXFwiOlxcXCJudWNhcHRjaGEtdG9rZW5cXFwiLFxcXCJ0YWJJbmRleFxcXCI6LTEsXFxcImVuYWJsZUF1ZGlvQ29udHJvbHNcXFwiOnRydWUsXFxcImF1dG9mb2N1c0F1ZGlvRWxlbUlEXFxcIjpcXFwiJydcXFwiLFxcXCJkaXNwbGF5QXVkaW9Eb3dubG9hZFxcXCI6ZmFsc2UsXFxcInVzZUpzQXVkaW9QbGF5ZXJpT1NcXFwiOmZhbHNlLFxcXCJhdXRvZmlsbFNvdXJjZXNcXFwiOltdLFxcXCJzaHVmZmxlU2VlZFxcXCI6NjM5MzM4NjEsXFxcInNodWZmbGVDZWxsU2l6ZVxcXCI6XFxcIjEwXFxcIixcXFwiYXVkaW9Db250cm9sc0lubGluZUNTU1xcXCI6XFxcIndpZHRoOiAzMDFweDsgZGlzcGxheTogYmxvY2s7IG1hcmdpbjoyMHB4O1xcXCJ9KTs8XFxcL3NjcmlwdD48XFxcL2Rpdj5cIn0iLCJzaWQiOiI0NzYyQUMyOC01ODVCLTRDQjUtQkQ0Ni1FQTc2Qjk2OTAwOEMiLCJpbnRlcmRpY3Rpb24tdHlwZSI6Ik51Q2FwdGNoYSJ9" }
Response Parameter
code
Int
msg
String
data
Object
data[nnucaptcha-answer]
String
data[nucaptcha-token]
String
Response eg.
{
"code": 200,
"msg": "Success",
"data": {
"nucaptcha-answer": "7AK",
"nucaptcha-token": "1.w-416554.2.2.VpzMiylTd34ttwi2_dGWFQ,,.34YIW4ffCtuWwfgJv0igZzIdekDsl8cMQzo8S-ZeCLEL3qqfqDNurNp6R3z921mSCapXCEJ7DJEStaWXCZmU5x_LECP-BRDrM2z9a6DX5ICu0D3qG16rpsMDP8iri0fHYTrXFavfLLQ_JcFu-u5Hor3AlTNsHkhk734CNgL0-N-_p1lFQH0sZX9TG0g2JivZVa6Knv1R8eoais0FbvtEM8a4E3HljvLkw7r-fH1VZ6BTRCPMc5NGcchm9sCAFen470AZlzDKHggeCEYUV93XjLkiQR0Nx6H63xLRVp8IrQ_FiLZ07bEAtj1vPurRMXIz2BK-S09oC0tySHKx3kp6a2Os760xjhLh_aK-JLQt-_71zxk8wsumxpirdk00B8yhhR5SBHEJBYyOKjO-WnFD8ugPZcEy4gRrY6RUuTMByU-HCcqZAq9v_drr3yOiUPPui5k9l8zvBYEpfIcqtGx8PcpwDYoiUOkU6q_Cu8AqCc4,|0|VIDEO|4||0|0"
}
}
Pay Per Use
(One request)
$0.06
Monthly
(Unlimited requests)
$2000