data:text/javascript;base64,CiAgICAKICAgIAoKCSAgICB2YXIgdGRCbG9ja3NBcnJheSA9IFtdOyAvL2hlcmUgd2Ugc3RvcmUgYWxsIHRoZSBpdGVtcyBmb3IgdGhlIGN1cnJlbnQgcGFnZQoKCSAgICAvL3RkX2Jsb2NrIGNsYXNzIC0gZWFjaCBhamF4IGJsb2NrIHVzZXMgYSBvYmplY3Qgb2YgdGhpcyBjbGFzcyBmb3IgcmVxdWVzdHMKCSAgICBmdW5jdGlvbiB0ZEJsb2NrKCkgewoJCSAgICB0aGlzLmlkID0gJyc7CgkJICAgIHRoaXMuYmxvY2tfdHlwZSA9IDE7IC8vYmxvY2sgdHlwZSBpZCAoMS0yMzQgZXRjKQoJCSAgICB0aGlzLmF0dHMgPSAnJzsKCQkgICAgdGhpcy50ZF9jb2x1bW5fbnVtYmVyID0gJyc7CgkJICAgIHRoaXMudGRfY3VycmVudF9wYWdlID0gMTsgLy8KCQkgICAgdGhpcy5wb3N0X2NvdW50ID0gMDsgLy9mcm9tIHdwCgkJICAgIHRoaXMuZm91bmRfcG9zdHMgPSAwOyAvL2Zyb20gd3AKCQkgICAgdGhpcy5tYXhfbnVtX3BhZ2VzID0gMDsgLy9mcm9tIHdwCgkJICAgIHRoaXMudGRfZmlsdGVyX3ZhbHVlID0gJyc7IC8vY3VycmVudCBsaXZlIGZpbHRlciB2YWx1ZQoJCSAgICB0aGlzLmlzX2FqYXhfcnVubmluZyA9IGZhbHNlOwoJCSAgICB0aGlzLnRkX3VzZXJfYWN0aW9uID0gJyc7IC8vIGxvYWQgbW9yZSBvciBpbmZpbml0ZSBsb2FkZXIgKHVzZWQgYnkgdGhlIGFuaW1hdGlvbikKCQkgICAgdGhpcy5oZWFkZXJfY29sb3IgPSAnJzsKCQkgICAgdGhpcy5hamF4X3BhZ2luYXRpb25faW5maW5pdGVfc3RvcCA9ICcnOyAvL3Nob3cgbG9hZCBtb3JlIGF0IHBhZ2UgeAoJICAgIH0KCgogICAgICAgIC8vIHRkX2pzX2dlbmVyYXRvciAtIG1pbmkgZGV0ZWN0b3IKICAgICAgICAoZnVuY3Rpb24oKXsKICAgICAgICAgICAgdmFyIGh0bWxUYWcgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdOwoKCSAgICAgICAgaWYgKCBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUgMTAuMCIpID4gLTEgKSB7CiAgICAgICAgICAgICAgICBodG1sVGFnLmNsYXNzTmFtZSArPSAnIGllMTAnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvVHJpZGVudC4qcnZcOjExXC4vKSApIHsKICAgICAgICAgICAgICAgIGh0bWxUYWcuY2xhc3NOYW1lICs9ICcgaWUxMSc7CiAgICAgICAgICAgIH0KCgkgICAgICAgIGlmICggbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJFZGdlIikgPiAtMSApIHsKICAgICAgICAgICAgICAgIGh0bWxUYWcuY2xhc3NOYW1lICs9ICcgaWVFZGdlJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAvKGlQYWR8aVBob25lfGlQb2QpL2cudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSApIHsKICAgICAgICAgICAgICAgIGh0bWxUYWcuY2xhc3NOYW1lICs9ICcgdGQtbWQtaXMtaW9zJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHVzZXJfYWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgIGlmICggdXNlcl9hZ2VudC5pbmRleE9mKCJhbmRyb2lkIikgPiAtMSApIHsKICAgICAgICAgICAgICAgIGh0bWxUYWcuY2xhc3NOYW1lICs9ICcgdGQtbWQtaXMtYW5kcm9pZCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggLTEgIT09IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignTWFjIE9TIFgnKSAgKSB7CiAgICAgICAgICAgICAgICBodG1sVGFnLmNsYXNzTmFtZSArPSAnIHRkLW1kLWlzLW9zLXgnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIC9jaHJvbShlfGl1bSkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKSApIHsKICAgICAgICAgICAgICAgaHRtbFRhZy5jbGFzc05hbWUgKz0gJyB0ZC1tZC1pcy1jaHJvbWUnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIC0xICE9PSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSApIHsKICAgICAgICAgICAgICAgIGh0bWxUYWcuY2xhc3NOYW1lICs9ICcgdGQtbWQtaXMtZmlyZWZveCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggLTEgIT09IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignU2FmYXJpJykgJiYgLTEgPT09IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lJykgKSB7CiAgICAgICAgICAgICAgICBodG1sVGFnLmNsYXNzTmFtZSArPSAnIHRkLW1kLWlzLXNhZmFyaSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmKCAtMSAhPT0gbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdJRU1vYmlsZScpICl7CiAgICAgICAgICAgICAgICBodG1sVGFnLmNsYXNzTmFtZSArPSAnIHRkLW1kLWlzLWllbW9iaWxlJzsKICAgICAgICAgICAgfQoKICAgICAgICB9KSgpOwoKCgoKICAgICAgICB2YXIgdGRMb2NhbENhY2hlID0ge307CgogICAgICAgICggZnVuY3Rpb24gKCkgewogICAgICAgICAgICAidXNlIHN0cmljdCI7CgogICAgICAgICAgICB0ZExvY2FsQ2FjaGUgPSB7CiAgICAgICAgICAgICAgICBkYXRhOiB7fSwKICAgICAgICAgICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKHJlc291cmNlX2lkKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRkTG9jYWxDYWNoZS5kYXRhW3Jlc291cmNlX2lkXTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBleGlzdDogZnVuY3Rpb24gKHJlc291cmNlX2lkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRkTG9jYWxDYWNoZS5kYXRhLmhhc093blByb3BlcnR5KHJlc291cmNlX2lkKSAmJiB0ZExvY2FsQ2FjaGUuZGF0YVtyZXNvdXJjZV9pZF0gIT09IG51bGw7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAocmVzb3VyY2VfaWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGRMb2NhbENhY2hlLmRhdGFbcmVzb3VyY2VfaWRdOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24gKHJlc291cmNlX2lkLCBjYWNoZWREYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgdGRMb2NhbENhY2hlLnJlbW92ZShyZXNvdXJjZV9pZCk7CiAgICAgICAgICAgICAgICAgICAgdGRMb2NhbENhY2hlLmRhdGFbcmVzb3VyY2VfaWRdID0gY2FjaGVkRGF0YTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICB9KSgpOwoKICAgIAogICAgCnZhciB0ZF92aWV3cG9ydF9pbnRlcnZhbF9saXN0PVt7ImxpbWl0Qm90dG9tIjo3NjcsInNpZGViYXJXaWR0aCI6MjI4fSx7ImxpbWl0Qm90dG9tIjoxMDE4LCJzaWRlYmFyV2lkdGgiOjMwMH0seyJsaW1pdEJvdHRvbSI6MTE0MCwic2lkZWJhcldpZHRoIjozMjR9XTsKdmFyIHRkX2FuaW1hdGlvbl9zdGFja19lZmZlY3Q9InR5cGUwIjsKdmFyIHRkc19hbmltYXRpb25fc3RhY2s9dHJ1ZTsKdmFyIHRkX2FuaW1hdGlvbl9zdGFja19zcGVjaWZpY19zZWxlY3RvcnM9Ii5lbnRyeS10aHVtYiwgaW1nLCAudGQtbGF6eS1pbWciOwp2YXIgdGRfYW5pbWF0aW9uX3N0YWNrX2dlbmVyYWxfc2VsZWN0b3JzPSIudGQtYW5pbWF0aW9uLXN0YWNrIGltZywgLnRkLWFuaW1hdGlvbi1zdGFjayAuZW50cnktdGh1bWIsIC5wb3N0IGltZywgLnRkLWFuaW1hdGlvbi1zdGFjayAudGQtbGF6eS1pbWciOwp2YXIgdGRjX2lzX2luc3RhbGxlZD0ieWVzIjsKdmFyIHRkX2FqYXhfdXJsPSJodHRwczpcL1wvc3RhcnR1cHBha2lzdGFuLmNvbS5wa1wvd3AtYWRtaW5cL2FkbWluLWFqYXgucGhwP3RkX3RoZW1lX25hbWU9TmV3c3BhcGVyJnY9MTIuMy4xIjsKdmFyIHRkX2dldF90ZW1wbGF0ZV9kaXJlY3RvcnlfdXJpPSJodHRwczpcL1wvc3RhcnR1cHBha2lzdGFuLmNvbS5wa1wvd3AtY29udGVudFwvcGx1Z2luc1wvdGQtY29tcG9zZXJcL2xlZ2FjeVwvY29tbW9uIjsKdmFyIHRkc19zbmFwX21lbnU9IiI7CnZhciB0ZHNfbG9nb19vbl9zdGlja3k9IiI7CnZhciB0ZHNfaGVhZGVyX3N0eWxlPSIiOwp2YXIgdGRfcGxlYXNlX3dhaXQ9IlBsZWFzZSB3YWl0Li4uIjsKdmFyIHRkX2VtYWlsX3VzZXJfcGFzc19pbmNvcnJlY3Q9IlVzZXIgb3IgcGFzc3dvcmQgaW5jb3JyZWN0ISI7CnZhciB0ZF9lbWFpbF91c2VyX2luY29ycmVjdD0iRW1haWwgb3IgdXNlcm5hbWUgaW5jb3JyZWN0ISI7CnZhciB0ZF9lbWFpbF9pbmNvcnJlY3Q9IkVtYWlsIGluY29ycmVjdCEiOwp2YXIgdGRfdXNlcl9pbmNvcnJlY3Q9IlVzZXJuYW1lIGluY29ycmVjdCEiOwp2YXIgdGRfZW1haWxfdXNlcl9lbXB0eT0iRW1haWwgb3IgdXNlcm5hbWUgZW1wdHkhIjsKdmFyIHRkX3Bhc3NfZW1wdHk9IlBhc3MgZW1wdHkhIjsKdmFyIHRkX3Bhc3NfcGF0dGVybl9pbmNvcnJlY3Q9IkludmFsaWQgUGFzcyBQYXR0ZXJuISI7CnZhciB0ZF9yZXR5cGVfcGFzc19pbmNvcnJlY3Q9IlJldHlwZWQgUGFzcyBpbmNvcnJlY3QhIjsKdmFyIHRkc19tb3JlX2FydGljbGVzX29uX3Bvc3RfZW5hYmxlPSIiOwp2YXIgdGRzX21vcmVfYXJ0aWNsZXNfb25fcG9zdF90aW1lX3RvX3dhaXQ9IiI7CnZhciB0ZHNfbW9yZV9hcnRpY2xlc19vbl9wb3N0X3BhZ2VzX2Rpc3RhbmNlX2Zyb21fdG9wPTA7CnZhciB0ZHNfdGhlbWVfY29sb3Jfc2l0ZV93aWRlPSIjMDA4ZDdmIjsKdmFyIHRkc19zbWFydF9zaWRlYmFyPSIiOwp2YXIgdGRUaGVtZU5hbWU9Ik5ld3NwYXBlciI7CnZhciB0ZFRoZW1lTmFtZVdsPSJOZXdzcGFwZXIiOwp2YXIgdGRfbWFnbmlmaWNfcG9wdXBfdHJhbnNsYXRpb25fdFByZXY9IlByZXZpb3VzIChMZWZ0IGFycm93IGtleSkiOwp2YXIgdGRfbWFnbmlmaWNfcG9wdXBfdHJhbnNsYXRpb25fdE5leHQ9Ik5leHQgKFJpZ2h0IGFycm93IGtleSkiOwp2YXIgdGRfbWFnbmlmaWNfcG9wdXBfdHJhbnNsYXRpb25fdENvdW50ZXI9IiVjdXJyJSBvZiAldG90YWwlIjsKdmFyIHRkX21hZ25pZmljX3BvcHVwX3RyYW5zbGF0aW9uX2FqYXhfdEVycm9yPSJUaGUgY29udGVudCBmcm9tICV1cmwlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIjsKdmFyIHRkX21hZ25pZmljX3BvcHVwX3RyYW5zbGF0aW9uX2ltYWdlX3RFcnJvcj0iVGhlIGltYWdlICMlY3VyciUgY291bGQgbm90IGJlIGxvYWRlZC4iOwp2YXIgdGRCbG9ja05vbmNlPSI3OTE2NDNjMjZlIjsKdmFyIHRkRGF0ZU5hbWVzSTE4bj17Im1vbnRoX25hbWVzIjpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sIm1vbnRoX25hbWVzX3Nob3J0IjpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLCJkYXlfbmFtZXMiOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSwiZGF5X25hbWVzX3Nob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdfTsKdmFyIHRkYl9tb2RhbF9jb25maXJtPSJTYXZlIjsKdmFyIHRkYl9tb2RhbF9jYW5jZWw9IkNhbmNlbCI7CnZhciB0ZGJfbW9kYWxfY29uZmlybV9hbHQ9IlllcyI7CnZhciB0ZGJfbW9kYWxfY2FuY2VsX2FsdD0iTm8iOwp2YXIgdGRfYWRfYmFja2dyb3VuZF9jbGlja19saW5rPSIiOwp2YXIgdGRfYWRfYmFja2dyb3VuZF9jbGlja190YXJnZXQ9IiI7Cg==