diff --git a/dist/webtour.js b/dist/webtour.js index 2d86e6a..3b0bd9a 100644 --- a/dist/webtour.js +++ b/dist/webtour.js @@ -611,4 +611,4 @@ var WebTour = (function () { return WebTour; }()); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VidG91ci5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYlRvdXIgeyAgICBcclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGlmICghIXRoaXMuY29uc3RydWN0b3IuaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuaW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLmluc3RhbmNlID0gdGhpcztcclxuXHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0ge1xyXG4gICAgICAgICAgICBhbmltYXRlOiB0cnVlLFxyXG4gICAgICAgICAgICBvcGFjaXR5OiAwLjUsXHJcbiAgICAgICAgICAgIG9mZnNldDogMjAsXHJcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogMyxcclxuICAgICAgICAgICAgYWxsb3dDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxyXG4gICAgICAgICAgICBoaWdobGlnaHRPZmZzZXQ6IDUsXHJcbiAgICAgICAgICAgIGtleWJvYXJkOiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogJzMwMHB4JyxcclxuICAgICAgICAgICAgekluZGV4OiAxMDA1MCxcclxuICAgICAgICAgICAgcmVtb3ZlQXJyb3c6IGZhbHNlLFxyXG4gICAgICAgICAgICBvbk5leHQ6ICgpID0+IG51bGwsXHJcbiAgICAgICAgICAgIG9uUHJldmlvdXM6ICgpID0+IG51bGwsXHJcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnN0ZXBzID0gW107XHJcbiAgICAgICAgdGhpcy5zdGVwSW5kZXggPSAwO1xyXG4gICAgICAgIHRoaXMuaXNSdW5uaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1BhdXNlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAvL2VsZW1lbnRzXHJcbiAgICAgICAgdGhpcy53aW5kb3cgPSB3aW5kb3c7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xyXG5cclxuICAgICAgICAvL2V2ZW50c1xyXG4gICAgICAgIHRoaXMub25DbGljayA9IHRoaXMub25DbGljay5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25SZXNpemUgPSB0aGlzLm9uUmVzaXplLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbktleVVwID0gdGhpcy5vbktleVVwLmJpbmQodGhpcyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5iaW5kKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBiaW5kKCkge1xyXG4gICAgICAgIGlmICghKCdvbnRvdWNoc3RhcnQnIGluIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSkge1xyXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25DbGljaywgZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLm9uQ2xpY2ssIGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25SZXNpemUsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMub25LZXlVcCwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2soZSkge1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnd3QtYnRuLW5leHQnKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uTmV4dCgpO1xyXG4gICAgICAgICAgICB0aGlzLm5leHQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3d0LWJ0bi1iYWNrJykpIHtcclxuICAgICAgICAgICAgdGhpcy5vblByZXZpb3VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3d0LW92ZXJsYXknKSkge1xyXG4gICAgICAgICAgICAvL2lmIGFsbG93Q2xvc2UgPSB0cnVlIGNsb3NlIHdoZW4gYmFja2Ryb3AgaXMgY2xpY2tcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd0Nsb3NlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbktleVVwKGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzUnVubmluZyB8fCAhdGhpcy5vcHRpb25zLmtleWJvYXJkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAyNyAmJiB0aGlzLm9wdGlvbnMuYWxsb3dDbG9zZSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3AoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9yaWdodCBrZXkgZm9yIG5leHRcclxuICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMzkpIHtcclxuICAgICAgICAgICAgdGhpcy5vbk5leHQoKTtcclxuICAgICAgICAgICAgdGhpcy5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICAvL2xlZnQga2V5IGZvciBiYWNrXHJcbiAgICAgICAgZWxzZSBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMzcgKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25QcmV2aW91cygpO1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vcGFnZSBpcyByZXNpemUgdXBkYXRlIHBvcG92ZXJcclxuICAgIG9uUmVzaXplKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyKHRoaXMuc3RlcHNbdGhpcy5zdGVwSW5kZXhdKTtcclxuICAgIH1cclxuXHJcbiAgICAvL3NldCB3ZWIgdG91ciBzdGVwc1xyXG4gICAgc2V0U3RlcHMoc3RlcHMpIHtcclxuICAgICAgICB0aGlzLnN0ZXBzID0gbnVsbDtcclxuICAgICAgICB0aGlzLnN0ZXBzID0gc3RlcHM7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldFN0ZXBzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBoaWdobGlnaHQoZWxlbWVudCwgc3RlcCA9IG51bGwpe1xyXG4gICAgICAgIHRoaXMuaXNSdW5uaW5nID0gdHJ1ZTtcclxuICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbGVtZW50KTtcclxuICAgICAgICBpZiAoZWxlbWVudCl7XHJcbiAgICAgICAgICAgIGlmIChzdGVwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RlcHMgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcyA9IHN0ZXA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0aGlzLnN0ZXBzW3RoaXMuc3RlcEluZGV4XSk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVPdmVybGF5KGVsZW1lbnQsIHN0ZXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLy9zdGFydCB0aGUgd2ViIHRvdXJcclxuICAgIHN0YXJ0KHN0YXJ0SW5kZXggPSAwKSB7XHJcbiAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3RlcEluZGV4ID0gc3RhcnRJbmRleDtcclxuICAgICAgICB0aGlzLnJlbmRlcih0aGlzLnN0ZXBzW3RoaXMuc3RlcEluZGV4XSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RvcCgpIHtcclxuICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvL3Nob3cgbG9hZGVyIHByb2dyZXNzXHJcbiAgICBzaG93TG9hZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHBvcG92ZXIgPSB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53dC1wb3BvdmVyJyk7XHJcbiAgICAgICAgY29uc3QgbG9hZGVyID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBsb2FkZXIuY2xhc3NMaXN0LmFkZCgnd3QtbG9hZGVyJyk7XHJcbiAgICAgICAgbG9hZGVyLnN0eWxlLnpJbmRleCA9IHRoaXMub3B0aW9ucy56SW5kZXggKyAxMDtcclxuICAgICAgICBwb3BvdmVyLnByZXBlbmQobG9hZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBtb3ZlTmV4dCgpIHtcclxuICAgICAgICB0aGlzLmlzUGF1c2VkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbW92ZVByZXZpb3VzKCkge1xyXG4gICAgICAgIHRoaXMuaXNQYXVzZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnByZXZpb3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25OZXh0KCl7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNQYXVzZWQpIHJldHVybjtcclxuICAgICAgICAvL2V4ZWN1dGUgb25OZXh0IGZ1bmN0aW9uKClcclxuICAgICAgICBpZiAodGhpcy5zdGVwc1t0aGlzLnN0ZXBJbmRleF0gJiYgdGhpcy5zdGVwc1t0aGlzLnN0ZXBJbmRleF0ub25OZXh0KSB0aGlzLnN0ZXBzW3RoaXMuc3RlcEluZGV4XS5vbk5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblByZXZpb3VzKCl7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNQYXVzZWQpIHJldHVybjtcclxuICAgICAgICAvL2V4ZWN1dGUgb25CYWNrIGZ1bmN0aW9uKClcclxuICAgICAgICBpZiAodGhpcy5zdGVwc1t0aGlzLnN0ZXBJbmRleF0gJiYgdGhpcy5zdGVwc1t0aGlzLnN0ZXBJbmRleF0ub25QcmV2aW91cykgdGhpcy5zdGVwc1t0aGlzLnN0ZXBJbmRleF0ub25QcmV2aW91cygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKmdvIHRvIG5leHQgc3RlcCAqL1xyXG4gICAgbmV4dCgpIHtcclxuICAgICAgICBpZiAodGhpcy5pc1BhdXNlZCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLnN0ZXBJbmRleCsrO1xyXG4gICAgICAgIHRoaXMuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnN0ZXBJbmRleCA+PSB0aGlzLnN0ZXBzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3AoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXIodGhpcy5zdGVwc1t0aGlzLnN0ZXBJbmRleF0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByZXZpb3VzKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUGF1c2VkKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuc3RlcEluZGV4LS07XHJcbiAgICAgICAgdGhpcy5jbGVhcigpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zdGVwcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3RlcEluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3AoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yZW5kZXIodGhpcy5zdGVwc1t0aGlzLnN0ZXBJbmRleF0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vYWRkIHRoZSBwb3BvdmVyIHRvIGRvY3VtZW50XHJcbiAgICByZW5kZXIoc3RlcCkge1xyXG4gICAgICAgIHZhciBlbGVtZW50ID0gc3RlcC5lbGVtZW50ID8gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHN0ZXAuZWxlbWVudCkgOiBudWxsO1xyXG5cclxuICAgICAgICAvL2NoZWNrIGlmIGVsZW1lbnQgaXMgcHJlc2VudCBpZiBub3QgbWFrZSBpdCBmbG9hdGluZ1xyXG4gICAgICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAhZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA/ICdyZWxhdGl2ZScgOiBlbGVtZW50LnN0eWxlLnBvc2l0aW9uO1xyXG4gICAgICAgICAgICBjb25zdCBzdGVwX2hpZ2hsaWdodCA9ICFzdGVwLmhpZ2hsaWdodCA/IHRydWUgOiBzdGVwLmhpZ2hsaWdodDsgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vaGlnaGxpZ2h0IGlzIHNldCB0byB0cnVlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0ICYmIHN0ZXBfaGlnaGxpZ2h0ICkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3d0LWhpZ2hsaWdodCcsICd0cnVlJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vcG9wb3ZlclxyXG4gICAgICAgIGNvbnN0IHBvcG92ZXIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyAgICAgICAgXHJcbiAgICAgICAgcG9wb3Zlci5jbGFzc0xpc3QuYWRkKCd3dC1wb3BvdmVyJyk7XHJcbiAgICAgICAgcG9wb3Zlci5zdHlsZS5ib3JkZXJSYWRpdXMgPSB0aGlzLm9wdGlvbnMuYm9yZGVyUmFkaXVzICsgJ3B4JztcclxuICAgICAgICBwb3BvdmVyLnN0eWxlLnpJbmRleCA9IHRoaXMub3B0aW9ucy56SW5kZXggKyAxMDtcclxuICAgICAgICBpZiAoc3RlcC5wbGFjZW1lbnQpIHBvcG92ZXIuY2xhc3NMaXN0LmFkZChzdGVwLnBsYWNlbWVudCk7IC8vYWRkIHVzZXIgZGVmaW5lIHBsYWNlbWVudCB0byBjbGFzcyBmb3IgcG9zaXRpb24gaW4gY3NzXHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2lkdGgpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMud2lkdGggPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLndpZHRoID0gdGhpcy5vcHRpb25zLndpZHRoO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy53aWR0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUud2lkdGggPSB0aGlzLm9wdGlvbnMud2lkdGggKyAncHgnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc3RlcC53aWR0aCkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHN0ZXAud2lkdGggPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLndpZHRoID0gc3RlcC53aWR0aDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGVwLndpZHRoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS53aWR0aCA9IHN0ZXAud2lkdGggKyAncHgnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL3BvcG92ZXIgaW5uZXIgY29udGFpbmVyXHJcbiAgICAgICAgY29uc3QgcG9wb3ZlcklubmVyID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBwb3BvdmVySW5uZXIuY2xhc3NMaXN0LmFkZCgnd3QtcG9wb3Zlci1pbm5lcicpO1xyXG4gICAgICAgXHJcbiAgICAgICAgLy90aXRsZVxyXG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICB0aXRsZS5jbGFzc0xpc3QuYWRkKCd3dC10aXRsZScpO1xyXG4gICAgICAgIGlmIChzdGVwLnRpdGxlKSBwb3BvdmVySW5uZXIuYXBwZW5kKHRpdGxlKTtcclxuICAgICAgICBpZiAoc3RlcC50aXRsZSkgdGl0bGUuaW5uZXJUZXh0ID0gc3RlcC50aXRsZTtcclxuXHJcbiAgICAgICAgLy9jb250ZW50XHJcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgY29udGVudC5jbGFzc0xpc3QuYWRkKCd3dC1jb250ZW50Jyk7XHJcbiAgICAgICAgcG9wb3ZlcklubmVyLmFwcGVuZChjb250ZW50KTtcclxuICAgICAgICBjb250ZW50LmlubmVySFRNTCA9IChzdGVwLmNvbnRlbnQgPyBzdGVwLmNvbnRlbnQgOiAnJyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy9idXR0b25zXHJcbiAgICAgICAgY29uc3Qgc2hvd0J0bnMgPSAoc3RlcC5zaG93QnRucyA9PSBudWxsIHx8IHN0ZXAuc2hvd0J0bnMgPT0gJ3VuZGVmaW5lZCcpID8gdHJ1ZSA6IEJvb2xlYW4oc3RlcC5zaG93QnRucyk7XHJcblxyXG4gICAgICAgIGlmIChzaG93QnRucyl7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ0bk5leHQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBidG5CYWNrID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuXHJcbiAgICAgICAgICAgIGJ0bk5leHQuY2xhc3NMaXN0LmFkZCgnd3QtYnRucycsICd3dC1idG4tbmV4dCcpO1xyXG4gICAgICAgICAgICBidG5CYWNrLmNsYXNzTGlzdC5hZGQoJ3d0LWJ0bnMnLCAnd3QtYnRuLWJhY2snKTtcclxuXHJcbiAgICAgICAgICAgIGJ0bk5leHQuaW5uZXJIVE1MID0gKHN0ZXAuYnRuTmV4dCAmJiBzdGVwLmJ0bk5leHQudGV4dCA/IHN0ZXAuYnRuTmV4dC50ZXh0IDogKHRoaXMuc3RlcEluZGV4ID09IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSA/ICdEb25lJyA6ICdOZXh0ICYjODU5NDsnKSk7XHJcbiAgICAgICAgICAgIGJ0bkJhY2suaW5uZXJIVE1MID0gKHN0ZXAuYnRuQmFjayAmJiBzdGVwLmJ0bkJhY2sudGV4dCA/IHN0ZXAuYnRuQmFjay50ZXh0IDogKHRoaXMuc3RlcEluZGV4ID09IDAgPyAnQ2xvc2UnIDogJ1x0JiM4NTkyOyBCYWNrJykpO1xyXG5cclxuICAgICAgICAgICAgLy9hZGQgc3R5bGVzXHJcbiAgICAgICAgICAgIGJ0bk5leHQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gKHN0ZXAuYnRuTmV4dCAmJiBzdGVwLmJ0bk5leHQuYmFja2dyb3VuZENvbG9yID8gc3RlcC5idG5OZXh0LmJhY2tncm91bmRDb2xvciA6ICcjN2NkMWY5Jyk7XHJcbiAgICAgICAgICAgIGJ0bk5leHQuc3R5bGUuY29sb3IgPSAoc3RlcC5idG5OZXh0ICYmIHN0ZXAuYnRuTmV4dC50ZXh0Q29sb3IgPyBzdGVwLmJ0bk5leHQudGV4dENvbG9yIDogJyNmZmYnKTtcclxuXHJcbiAgICAgICAgICAgIGJ0bkJhY2suc3R5bGUuYmFja2dyb3VuZENvbG9yID0gKHN0ZXAuYnRuQmFjayAmJiBzdGVwLmJ0bkJhY2suYmFja2dyb3VuZENvbG9yID8gc3RlcC5idG5CYWNrLmJhY2tncm91bmRDb2xvciA6ICcjZWZlZmVmOycpO1xyXG4gICAgICAgICAgICBidG5CYWNrLnN0eWxlLmNvbG9yID0gKHN0ZXAuYnRuQmFjayAmJiBzdGVwLmJ0bkJhY2sudGV4dENvbG9yID8gc3RlcC5idG5CYWNrLnRleHRDb2xvciA6ICcjNTU1Jyk7XHJcbiAgICAgICAgICAgIHBvcG92ZXJJbm5lci5hcHBlbmQoYnRuTmV4dCk7XHJcbiAgICAgICAgICAgIHBvcG92ZXJJbm5lci5hcHBlbmQoYnRuQmFjayk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL3BvcG92ZXIgYXJyb3dcclxuICAgICAgICBjb25zdCBhcnJvdyA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgYXJyb3cuY2xhc3NMaXN0LmFkZCgnd3QtYXJyb3cnKTtcclxuICAgICAgICBhcnJvdy5zZXRBdHRyaWJ1dGUoJ2RhdGEtcG9wcGVyLWFycm93JywgJ3RydWUnKTtcclxuICAgICAgICBwb3BvdmVyLmFwcGVuZChhcnJvdyk7XHJcblxyXG4gICAgICAgIC8vcG9wb3ZlciBpbm5lciBjb250YWluZXJcclxuICAgICAgICBwb3BvdmVyLmFwcGVuZChwb3BvdmVySW5uZXIpO1xyXG5cclxuICAgICAgICAvL2FwcGVuZCBwb3BvdmVyIHRvIGJvZHlcclxuICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocG9wb3Zlcik7XHJcblxyXG4gICAgICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25Qb3BvdmVyKGVsZW1lbnQsIHBvcG92ZXIsIGFycm93LCBzdGVwKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oaWdobGlnaHQpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVPdmVybGF5KGVsZW1lbnQsIHN0ZXApO1xyXG4gICAgICAgICAgICB9ICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICogTm8gZWxlbWVudCBpcyBkZWZpbmVcclxuICAgICAgICAqIE1ha2UgcG9wb3ZlciBmbG9hdGluZyAocG9zaXRpb24gY2VudGVyKVxyXG4gICAgICAgICovXHJcbiAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBwb3BvdmVyLmNsYXNzTGlzdC5hZGQoJ3d0LXNsaWRlcycpO1xyXG4gICAgICAgICAgICBwb3BvdmVyLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjogXCJzbW9vdGhcIiwgYmxvY2s6IFwiY2VudGVyXCIsIGlubGluZTogXCJjZW50ZXJcIn0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oaWdobGlnaHQpe1xyXG4gICAgICAgICAgICAgICAgdmFyIG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICAgICAgICAgIG92ZXJsYXkuY2xhc3NMaXN0LmFkZCgnd3Qtb3ZlcmxheScsICdvcGVuJyk7XHJcbiAgICAgICAgICAgICAgICBvdmVybGF5LnN0eWxlLnpJbmRleCA9IHRoaXMub3B0aW9ucy56SW5kZXggLSAxMDtcclxuICAgICAgICAgICAgICAgIG92ZXJsYXkuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xyXG4gICAgICAgICAgICAgICAgb3ZlcmxheS5zdHlsZS50b3AgPSAwO1xyXG4gICAgICAgICAgICAgICAgb3ZlcmxheS5zdHlsZS5sZWZ0ID0gMDtcclxuICAgICAgICAgICAgICAgIG92ZXJsYXkuc3R5bGUucmlnaHQgPSAwO1xyXG4gICAgICAgICAgICAgICAgb3ZlcmxheS5zdHlsZS5ib3R0b20gPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG92ZXJsYXkpO1xyXG4gICAgICAgICAgICB9ICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgYXJyb3cucmVtb3ZlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL2FkZCBvcHRpb24gdG8gcmVtb3ZlIGFycm93IGJlY2F1c2UgcG9wcGVyIGFycm93cyBhcmUgbm90IHBvc2l0aW9uaW5nIHdlbGxcclxuICAgICAgICAvL1RPRE86IGZpeCBwb3BwZXIgYXJyb3dcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlbW92ZUFycm93KXtcclxuICAgICAgICAgICAgYXJyb3cucmVtb3ZlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL3JlbW92ZSBwb3BvdmVyXHJcbiAgICBjbGVhcigpIHtcclxuICAgICAgICB2YXIgcG9wdXAgPSB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53dC1wb3BvdmVyJyk7XHJcbiAgICAgICAgdmFyIGxvYWRlciA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnd0LWxvYWRlcicpO1xyXG5cclxuICAgICAgICBpZiAocG9wdXApIHBvcHVwLnJlbW92ZSgpO1xyXG4gICAgICAgIGlmIChsb2FkZXIpIGxvYWRlci5yZW1vdmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcud3Qtb3ZlcmxheScpLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmUoKTtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJypbd3QtaGlnaGxpZ2h0XScpLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3d0LWhpZ2hsaWdodCcpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2luZG93T2Zmc2V0KCl7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLndpbmRvdy5pbm5lckhlaWdodCAtICh0aGlzLndpbmRvdy5pbm5lckhlaWdodCAtIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCksXHJcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpbmRvdy5pbm5lcldpZHRoIC0gKHRoaXMud2luZG93LmlubmVyV2lkdGggLSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldE9mZnNldCggZWwgKSB7XHJcbiAgICAgICAgdmFyIF94ID0gMDtcclxuICAgICAgICB2YXIgX3kgPSAwO1xyXG4gICAgICAgIHdoaWxlKCBlbCAmJiAhaXNOYU4oIGVsLm9mZnNldExlZnQgKSAmJiAhaXNOYU4oIGVsLm9mZnNldFRvcCApICkge1xyXG4gICAgICAgICAgICBfeCArPSBlbC5vZmZzZXRMZWZ0IC0gZWwuc2Nyb2xsTGVmdDtcclxuICAgICAgICAgICAgX3kgKz0gZWwub2Zmc2V0VG9wIC0gZWwuc2Nyb2xsVG9wO1xyXG4gICAgICAgICAgICBlbCA9IGVsLm9mZnNldFBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsgdG9wOiBfeSwgbGVmdDogX3ggfTtcclxuICAgIH1cclxuXHJcbiAgICAvL2dldCBjc3MgdHJhbnNmb3JtIHByb3BlcnR5IHRvIGZpeGVkIGlzc3VlcyB3aXRoIHRyYW5zZm9ybSBlbGVtZW50c1xyXG4gICAgZ2V0VHJhbnNsYXRlWFkoZWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudClcclxuICAgICAgICBjb25zdCBtYXRyaXggPSBuZXcgRE9NTWF0cml4UmVhZE9ubHkoc3R5bGUudHJhbnNmb3JtKVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0cmFuc2xhdGVYOiAgTWF0aC5hYnMoZWxlbWVudC5vZmZzZXRXaWR0aCAqIChtYXRyaXgubTQxIC8gMTAwKSksXHJcbiAgICAgICAgICAgIHRyYW5zbGF0ZVk6ICBNYXRoLmFicyhlbGVtZW50Lm9mZnNldEhlaWdodCAqIChtYXRyaXgubTQyIC8gMTAwKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RWxlbWVudFBvc2l0aW9uKGVsZW1lbnQpe1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRvcDogdGhpcy5nZXRPZmZzZXQoZWxlbWVudCkudG9wIC0gKGVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID8gdGhpcy5nZXRUcmFuc2xhdGVYWShlbGVtZW50KS50cmFuc2xhdGVZIDogMCksXHJcbiAgICAgICAgICAgIGxlZnQ6IHRoaXMuZ2V0T2Zmc2V0KGVsZW1lbnQpLmxlZnQgLSggZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPyB0aGlzLmdldFRyYW5zbGF0ZVhZKGVsZW1lbnQpLnRyYW5zbGF0ZVggOiAwKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL3Bvc2l0aW9uIHBvcG92ZXJcclxuICAgIHBvc2l0aW9uUG9wb3ZlcihlbGVtZW50LCBwb3BvdmVyLCBhcnJvdywgc3RlcCkge1xyXG4gICAgICAgIHZhciBwbGFjZW1lbnQgPSBzdGVwLnBsYWNlbWVudCB8fCAnYXV0byc7XHJcbiAgICAgICAgdmFyIHN0cmF0ZWd5ID0gc3RlcC5zdHJhdGVneSB8fCAnYWJzb2x1dGUnO1xyXG5cclxuICAgICAgICBwb3BvdmVyLnN0eWxlLnBvc2l0aW9uID0gc3RyYXRlZ3k7XHJcbiAgICAgICAgYXJyb3cuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xyXG5cclxuICAgICAgICAvL2VsZW1lbnQgdG9wICYgbGVmdFxyXG4gICAgICAgIHZhciBlbF90b3AsIGVsX2xlZnQ7XHJcbiAgICAgICAgZWxfdG9wID0gdGhpcy5nZXRFbGVtZW50UG9zaXRpb24oZWxlbWVudCkudG9wOyBcclxuICAgICAgICBlbF9sZWZ0ID0gdGhpcy5nZXRFbGVtZW50UG9zaXRpb24oZWxlbWVudCkubGVmdDsgXHJcbiAgICBcclxuICAgICAgICAvL2lmIHBsYWNlbWVudCBpcyBub3QgZGVmaW5lZCBvciBhdXRvIHRoZW4gY2FsY3VsYXRlIGxvY2F0aW9uXHJcbiAgICAgICAgaWYgKHBsYWNlbWVudCA9PSAnYXV0bycgfHwgcGxhY2VtZW50ID09ICdhdXRvLXN0YXJ0JyB8fCBwbGFjZW1lbnQgPT0gJ2F1dG8tZW5kJykge1xyXG4gICAgICAgICAgICBjb25zdCBhcnJvdyA9IHBsYWNlbWVudC5yZXBsYWNlKCdhdXRvJywgJycpLnRyaW0oKTtcclxuICAgICAgICAgICAgdmFyIG5ld19hcnJvdyA9ICcnO1xyXG5cclxuICAgICAgICAgICAgLy9lbGVtZW50IGlzIHBvc2l0aW9uIHRvIHRoZSBib3R0b20gb2YgdGhlIHNjcmVlblxyXG4gICAgICAgICAgICAvL3Bvc2l0aW9uIHBvcG92ZXIgdG8gdG9wXHJcbiAgICAgICAgICAgIGlmIChlbF90b3AgKyAocG9wb3Zlci5vZmZzZXRIZWlnaHQgKyB0aGlzLm9wdGlvbnMub2Zmc2V0KSA+IHRoaXMud2luZG93LmlubmVySGVpZ2h0IC0gMTAwKSB7XHJcbiAgICAgICAgICAgICAgICAvL2RpdmlkZSB0aGUgc2NyZWVuIGludG8gMyBzZWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgLy9pZiBsZWZ0IGlzIHdpdGhpbiBzZWN0aW9uIDEvMyBvZiB0aGUgc2NyZWVuIHRoZW4gYXJyb3cgaXMgaW4gdGhlIHN0YXJ0IHBvc2l0aW9uXHJcbiAgICAgICAgICAgICAgICBpZiAoZWxfbGVmdCA8ICh0aGlzLndpbmRvdy5pbm5lcldpZHRoIC8gMykpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdfYXJyb3cgPSBhcnJvdy5sZW5ndGggPiAwID8gYXJyb3cgOiAnLXN0YXJ0JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvL2lmIGxlZnQgaXMgd2l0aGluIHRoYXQgc2VjdGlvbiAzLzMgb2YgdGhlIHNjcmVlbiB0aGVuIGFycm93IGlzIGluIHRoZSBlbmQgcG9zaXRpb25cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVsX2xlZnQgPiAodGhpcy53aW5kb3cuaW5uZXJXaWR0aCAtICh0aGlzLndpbmRvdy5pbm5lcldpZHRoIC8gMykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3X2Fycm93ID0gYXJyb3cubGVuZ3RoID4gMCA/IGFycm93IDogJy1lbmQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50ID0gJ3RvcCcgKyBuZXdfYXJyb3c7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vZWxlbWVudCBpcyBwb3NpdGlvbiB0byB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgc2NyZWVuXHJcbiAgICAgICAgICAgIC8vcG9zaXRpb24gcG9wb3ZlciB0byB0aGUgbGVmdFxyXG4gICAgICAgICAgICBpZiAoKGVsX2xlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoICsgcG9wb3Zlci5vZmZzZXRXaWR0aCkgPiB0aGlzLndpbmRvdy5pbm5lcldpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAvL2RpdmlkZSB0aGUgc2NyZWVuIGludG8gMyBzZWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgLy9pZiBsZWZ0IGlzIHdpdGhpbiBzZWN0aW9uIDEvMyBvZiB0aGUgc2NyZWVuIHRoZW4gYXJyb3cgaXMgaW4gdGhlIHN0YXJ0IHBvc2l0aW9uXHJcbiAgICAgICAgICAgICAgICBpZiAoZWxfdG9wIDwgKHRoaXMud2luZG93LmlubmVySGVpZ2h0IC8gMykpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdfYXJyb3cgPSBhcnJvdy5sZW5ndGggPiAwID8gYXJyb3cgOiAnLXN0YXJ0JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvL2lmIGxlZnQgaXMgd2l0aGluIHRoYXQgc2VjdGlvbiAzLzMgb2YgdGhlIHNjcmVlbiB0aGVuIGFycm93IGlzIGluIHRoZSBlbmQgcG9zaXRpb25cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVsX3RvcCA+ICh0aGlzLndpbmRvdy5pbm5lckhlaWdodCAtICh0aGlzLndpbmRvdy5pbm5lckhlaWdodCAvIDMpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld19hcnJvdyA9IGFycm93Lmxlbmd0aCA+IDAgPyBhcnJvdyA6ICctc3RhcnQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50ID0gJ2xlZnQnICsgbmV3X2Fycm93O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2VsZW1lbnQgaXMgcG9zaXRpb24gdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgc2NyZWVuXHJcbiAgICAgICAgICAgIC8vcG9zaXRpb24gcG9wb3ZlciB0byB0aGUgcmlnaHRcclxuICAgICAgICAgICAgaWYgKGVsX2xlZnQgPCBwb3BvdmVyLm9mZnNldFdpZHRoICYmIChlbGVtZW50Lm9mZnNldFdpZHRoICsgcG9wb3Zlci5vZmZzZXRXaWR0aCkgPCB0aGlzLndpbmRvdy5pbm5lcldpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAvL2RpdmlkZSB0aGUgc2NyZWVuIGludG8gMyBzZWN0aW9uc1xyXG4gICAgICAgICAgICAgICAgLy9pZiBsZWZ0IGlzIHdpdGhpbiBzZWN0aW9uIDEvMyBvZiB0aGUgc2NyZWVuIHRoZW4gYXJyb3cgaXMgaW4gdGhlIHN0YXJ0IHBvc2l0aW9uXHJcbiAgICAgICAgICAgICAgICBpZiAoZWxfdG9wIDwgKHRoaXMud2luZG93LmlubmVySGVpZ2h0IC8gMykpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdfYXJyb3cgPSBhcnJvdy5sZW5ndGggPiAwID8gYXJyb3cgOiAnLXN0YXJ0JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvL2lmIGxlZnQgaXMgd2l0aGluIHRoYXQgc2VjdGlvbiAzLzMgb2YgdGhlIHNjcmVlbiB0aGVuIGFycm93IGlzIGluIHRoZSBlbmQgcG9zaXRpb25cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVsX3RvcCA+ICh0aGlzLndpbmRvdy5pbm5lckhlaWdodCAtICh0aGlzLndpbmRvdy5pbm5lckhlaWdodCAvIDMpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld19hcnJvdyA9IGFycm93Lmxlbmd0aCA+IDAgPyBhcnJvdyA6ICctc3RhcnQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50ID0gJ3JpZ2h0JyArIG5ld19hcnJvdztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9lbGVtZW50IGlzIHBvc2l0aW9uIHRvIHRoZSB0b3Agb2YgdGhlIHNjcmVlblxyXG4gICAgICAgICAgICAvL3Bvc2l0aW9uIHBvcG92ZXIgdG8gYm90dG9tXHJcbiAgICAgICAgICAgIGlmIChlbF90b3AgPCAocG9wb3Zlci5vZmZzZXRIZWlnaHQgKyB0aGlzLm9wdGlvbnMub2Zmc2V0KSB8fCBlbF90b3AgPCAxMDApIHtcclxuICAgICAgICAgICAgICAgIC8vZGl2aWRlIHRoZSBzY3JlZW4gaW50byAzIHNlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAvL2lmIGxlZnQgaXMgd2l0aGluIHNlY3Rpb24gMS8zIG9mIHRoZSBzY3JlZW4gdGhlbiBhcnJvdyBpcyBpbiB0aGUgc3RhcnQgcG9zaXRpb25cclxuICAgICAgICAgICAgICAgIGlmIChlbF9sZWZ0IDwgKHRoaXMud2luZG93LmlubmVyV2lkdGggLyAzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld19hcnJvdyA9IGFycm93Lmxlbmd0aCA+IDAgPyBhcnJvdyA6ICctc3RhcnQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vaWYgbGVmdCBpcyB3aXRoaW4gdGhhdCBzZWN0aW9uIDMvMyBvZiB0aGUgc2NyZWVuIHRoZW4gYXJyb3cgaXMgaW4gdGhlIGVuZCBwb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxfbGVmdCA+ICh0aGlzLndpbmRvdy5pbm5lcldpZHRoIC0gKHRoaXMud2luZG93LmlubmVyV2lkdGggLyAzKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdfYXJyb3cgPSBhcnJvdy5sZW5ndGggPiAwID8gYXJyb3cgOiAnLWVuZCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyArIG5ld19hcnJvdztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9hZGQgdG8gY2xhc3MgZm9yIGNzc1xyXG4gICAgICAgICAgICBwb3BvdmVyLmNsYXNzTGlzdC5hZGQocGxhY2VtZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vdG9wXHJcbiAgICAgICAgaWYgKHBsYWNlbWVudCA9PSAndG9wJykge1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9IChlbF90b3AgLSAocG9wb3Zlci5vZmZzZXRIZWlnaHQgKyB0aGlzLm9wdGlvbnMub2Zmc2V0KSkgKyAncHgnO1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSAoZWxfbGVmdCArICgoZWxlbWVudC5vZmZzZXRXaWR0aCAvIDIpIC0gKHBvcG92ZXIub2Zmc2V0V2lkdGggLyAyKSkpICsgJ3B4JztcclxuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudCA9PSAndG9wLXN0YXJ0Jykge1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9IChlbF90b3AgLSAocG9wb3Zlci5vZmZzZXRIZWlnaHQgKyB0aGlzLm9wdGlvbnMub2Zmc2V0KSkgKyAncHgnO1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSBlbF9sZWZ0IC0gdGhpcy5vcHRpb25zLmhpZ2hsaWdodE9mZnNldCArICdweCc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwbGFjZW1lbnQgPT0gJ3RvcC1lbmQnKSB7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudG9wID0gKGVsX3RvcCAtIChwb3BvdmVyLm9mZnNldEhlaWdodCArIHRoaXMub3B0aW9ucy5vZmZzZXQpKSArICdweCc7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9ICgoZWxfbGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggKyB0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0T2Zmc2V0KSAtIHBvcG92ZXIub2Zmc2V0V2lkdGgpICsgJ3B4JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2JvdHRvbVxyXG4gICAgICAgIGVsc2UgaWYgKHBsYWNlbWVudCA9PSAnYm90dG9tJykge1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9IChlbF90b3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCkgKyB0aGlzLm9wdGlvbnMub2Zmc2V0ICsgJ3B4JztcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS5sZWZ0ID0gKGVsX2xlZnQgKyAoZWxlbWVudC5vZmZzZXRXaWR0aCAvIDIpIC0gcG9wb3Zlci5vZmZzZXRXaWR0aCAvIDIpICsgJ3B4JztcclxuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudCA9PSAnYm90dG9tLXN0YXJ0Jykge1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9IChlbF90b3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCkgKyB0aGlzLm9wdGlvbnMub2Zmc2V0ICsgJ3B4JztcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS5sZWZ0ID0gKGVsX2xlZnQgLSB0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0T2Zmc2V0KSArICdweCc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwbGFjZW1lbnQgPT0gJ2JvdHRvbS1lbmQnKSB7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudG9wID0gKGVsX3RvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0KSArIHRoaXMub3B0aW9ucy5vZmZzZXQgKyAncHgnO1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSAoKGVsX2xlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoICsgdGhpcy5vcHRpb25zLmhpZ2hsaWdodE9mZnNldCkgLSBwb3BvdmVyLm9mZnNldFdpZHRoKSArICdweCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9sZWZ0XHJcbiAgICAgICAgZWxzZSBpZiAocGxhY2VtZW50ID09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS50b3AgPSAoZWxfdG9wICsgKE1hdGguYWJzKHBvcG92ZXIub2Zmc2V0SGVpZ2h0IC0gZWxlbWVudC5vZmZzZXRIZWlnaHQpIC8gMikpICsgJ3B4JztcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS5sZWZ0ID0gKGVsX2xlZnQgKyAoZWxlbWVudC5vZmZzZXRXaWR0aCArIHRoaXMub3B0aW9ucy5vZmZzZXQpKSArICdweCc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwbGFjZW1lbnQgPT0gJ3JpZ2h0LXN0YXJ0Jykge1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9IGVsX3RvcCAtIHRoaXMub3B0aW9ucy5oaWdobGlnaHRPZmZzZXQgKyAncHgnO1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSAoZWxfbGVmdCArIChlbGVtZW50Lm9mZnNldFdpZHRoICsgdGhpcy5vcHRpb25zLm9mZnNldCkpICsgJ3B4JztcclxuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudCA9PSAncmlnaHQtZW5kJykge1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9ICgoZWxfdG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQpIC0gcG9wb3Zlci5vZmZzZXRIZWlnaHQpICsgdGhpcy5vcHRpb25zLmhpZ2hsaWdodE9mZnNldCArICdweCc7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IChlbF9sZWZ0ICsgKGVsZW1lbnQub2Zmc2V0V2lkdGggKyB0aGlzLm9wdGlvbnMub2Zmc2V0KSkgKyAncHgnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9yaWdodFxyXG4gICAgICAgIGVsc2UgaWYgKHBsYWNlbWVudCA9PSAnbGVmdCcpIHtcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS50b3AgPSAoZWxfdG9wICsgKE1hdGguYWJzKHBvcG92ZXIub2Zmc2V0SGVpZ2h0IC0gZWxlbWVudC5vZmZzZXRIZWlnaHQpIC8gMikpICsgJ3B4JztcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS5sZWZ0ID0gKGVsX2xlZnQgLSAocG9wb3Zlci5vZmZzZXRXaWR0aCArIHRoaXMub3B0aW9ucy5vZmZzZXQpKSArICdweCc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwbGFjZW1lbnQgPT0gJ2xlZnQtc3RhcnQnKSB7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudG9wID0gZWxfdG9wIC0gdGhpcy5vcHRpb25zLmhpZ2hsaWdodE9mZnNldCArICdweCc7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IChlbF9sZWZ0IC0gKHBvcG92ZXIub2Zmc2V0V2lkdGggKyB0aGlzLm9wdGlvbnMub2Zmc2V0KSkgKyAncHgnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50ID09ICdsZWZ0LWVuZCcpIHtcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS50b3AgPSAoKGVsX3RvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAtIHBvcG92ZXIub2Zmc2V0SGVpZ2h0KSArIHRoaXMub3B0aW9ucy5oaWdobGlnaHRPZmZzZXQgKyAncHgnO1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSAoZWxfbGVmdCAtIChwb3BvdmVyLm9mZnNldFdpZHRoICsgdGhpcy5vcHRpb25zLm9mZnNldCkpICsgJ3B4JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vaWYgcG9zaXRpb24gaXMgZml4ZWQgc2Nyb2xsIHRvIHRvcFxyXG4gICAgICAgIGlmIChzdHJhdGVneSA9PT0gJ2ZpeGVkJyl7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LnNjcm9sbFRvKDAsIDApO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBwb3BvdmVyLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjogXCJzbW9vdGhcIiwgYmxvY2s6IFwiY2VudGVyXCIsIGlubGluZTogXCJuZWFyZXN0XCJ9KTtcclxuICAgICAgICB9ICAgICAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlT3ZlcmxheShlbGVtZW50LCBzdGVwID0gbnVsbCl7XHJcbiAgICAgICAgdmFyIHN0cmF0ZWd5ID0gKHN0ZXAgJiYgc3RlcC5zdHJhdGVneSkgPyBzdGVwLnN0cmF0ZWd5IDogJ2Fic29sdXRlJztcclxuXHJcbiAgICAgICAgdmFyIG92ZXJsYXkxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgb3ZlcmxheTEuY2xhc3NMaXN0LmFkZCgnd3Qtb3ZlcmxheScsICdvcGVuJywgJ292ZXJsYXkxJyk7XHJcbiAgICAgICAgb3ZlcmxheTEuc3R5bGUuekluZGV4ID0gdGhpcy5vcHRpb25zLnpJbmRleCAtIDEwO1xyXG5cclxuICAgICAgICB2YXIgb3ZlcmxheTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBvdmVybGF5Mi5jbGFzc0xpc3QuYWRkKCd3dC1vdmVybGF5JywgJ29wZW4nLCAnb3ZlcmxheTInKTtcclxuICAgICAgICBvdmVybGF5Mi5zdHlsZS56SW5kZXggPSB0aGlzLm9wdGlvbnMuekluZGV4IC0gMTA7XHJcblxyXG4gICAgICAgIHZhciBvdmVybGF5MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIG92ZXJsYXkzLmNsYXNzTGlzdC5hZGQoJ3d0LW92ZXJsYXknLCAnb3BlbicsICdvdmVybGF5MycpO1xyXG4gICAgICAgIG92ZXJsYXkzLnN0eWxlLnpJbmRleCA9IHRoaXMub3B0aW9ucy56SW5kZXggLSAxMDtcclxuXHJcbiAgICAgICAgdmFyIG92ZXJsYXk0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgb3ZlcmxheTQuY2xhc3NMaXN0LmFkZCgnd3Qtb3ZlcmxheScsICdvcGVuJywgJ292ZXJsYXk0Jyk7XHJcbiAgICAgICAgb3ZlcmxheTQuc3R5bGUuekluZGV4ID0gdGhpcy5vcHRpb25zLnpJbmRleCAtIDEwO1xyXG4gICAgXHJcbiAgICAgICAgLy9hcHBlbmQgdG8gYm9keVxyXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5MSk7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG92ZXJsYXkyKTtcclxuICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheTMpO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5NCk7XHJcblxyXG4gICAgICAgIC8vZWxlbWVudCB0b3AgJiBsZWZ0XHJcbiAgICAgICAgdmFyIGVsX3RvcCwgZWxfbGVmdDtcclxuICAgICAgICBlbF90b3AgPSB0aGlzLmdldEVsZW1lbnRQb3NpdGlvbihlbGVtZW50KS50b3A7IFxyXG4gICAgICAgIGVsX2xlZnQgPSB0aGlzLmdldEVsZW1lbnRQb3NpdGlvbihlbGVtZW50KS5sZWZ0O1xyXG4gICAgICAgIFxyXG4gICAgICAgIHZhciBoaWdobGlnaHRfb2Zmc2V0ID0gdGhpcy5vcHRpb25zLmhpZ2hsaWdodE9mZnNldDtcclxuXHJcbiAgICAgICAgLy9vdmVybGF5cyB0b3AtbGVmdFxyXG4gICAgICAgIG92ZXJsYXkxLnN0eWxlLnBvc2l0aW9uID0gc3RyYXRlZ3k7XHJcbiAgICAgICAgb3ZlcmxheTEuc3R5bGUudG9wID0gMDtcclxuICAgICAgICBvdmVybGF5MS5zdHlsZS53aWR0aCA9ICBlbF9sZWZ0IC0gaGlnaGxpZ2h0X29mZnNldCArICdweCc7XHJcbiAgICAgICAgb3ZlcmxheTEuc3R5bGUuaGVpZ2h0ID0gIChlbF90b3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCArIGhpZ2hsaWdodF9vZmZzZXQpICsgJ3B4JztcclxuICAgICAgICBvdmVybGF5MS5zdHlsZS5sZWZ0ID0gMDtcclxuXHJcbiAgICAgICAgLy9vdmVybGF5cyB0b3AtcmlnaHRcclxuICAgICAgICBvdmVybGF5Mi5zdHlsZS5wb3NpdGlvbiA9IHN0cmF0ZWd5O1xyXG4gICAgICAgIG92ZXJsYXkyLnN0eWxlLnRvcCA9IDA7XHJcbiAgICAgICAgb3ZlcmxheTIuc3R5bGUucmlnaHQgPSAwO1xyXG4gICAgICAgIG92ZXJsYXkyLnN0eWxlLmhlaWdodCA9IChlbF90b3AgLSBoaWdobGlnaHRfb2Zmc2V0KSArICdweCc7XHJcbiAgICAgICAgb3ZlcmxheTIuc3R5bGUubGVmdCA9IChlbF9sZWZ0IC0gaGlnaGxpZ2h0X29mZnNldCkgKyAncHgnO1xyXG5cclxuICAgICAgICAvL292ZXJsYXlzIGJvdHRvbS1yaWdodFxyXG4gICAgICAgIG92ZXJsYXkzLnN0eWxlLnBvc2l0aW9uID0gc3RyYXRlZ3k7XHJcbiAgICAgICAgb3ZlcmxheTMuc3R5bGUudG9wID0gKGVsX3RvcCAtIGhpZ2hsaWdodF9vZmZzZXQpICsgJ3B4JztcclxuICAgICAgICBvdmVybGF5My5zdHlsZS5yaWdodCA9IDA7XHJcbiAgICAgICAgb3ZlcmxheTMuc3R5bGUuYm90dG9tID0gMCAtICh0aGlzLmRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0IC0gdGhpcy53aW5kb3cuaW5uZXJIZWlnaHQpICsgJ3B4JztcclxuICAgICAgICBvdmVybGF5My5zdHlsZS5sZWZ0ID0gKGVsX2xlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoICsgaGlnaGxpZ2h0X29mZnNldCkgKyAncHgnO1xyXG5cclxuICAgICAgICAvL292ZXJsYXlzIGJvdHRvbS1sZWZ0XHJcbiAgICAgICAgb3ZlcmxheTQuc3R5bGUucG9zaXRpb24gPSBzdHJhdGVneTtcclxuICAgICAgICBvdmVybGF5NC5zdHlsZS50b3AgPSAoZWxfdG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgKyBoaWdobGlnaHRfb2Zmc2V0KSArICdweCc7XHJcbiAgICAgICAgb3ZlcmxheTQuc3R5bGUud2lkdGggPSAgIGVsX2xlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoICsgaGlnaGxpZ2h0X29mZnNldCAgKyAncHgnO1xyXG4gICAgICAgIG92ZXJsYXk0LnN0eWxlLmJvdHRvbSA9IDAgLSAodGhpcy5kb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCAtIHRoaXMud2luZG93LmlubmVySGVpZ2h0KSArICdweCc7XHJcbiAgICAgICAgb3ZlcmxheTQuc3R5bGUubGVmdCA9IDA7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdLCJuYW1lcyI6WyJXZWJUb3VyIiwib3B0aW9ucyIsImNvbnN0cnVjdG9yIiwiaW5zdGFuY2UiLCJhbmltYXRlIiwib3BhY2l0eSIsIm9mZnNldCIsImJvcmRlclJhZGl1cyIsImFsbG93Q2xvc2UiLCJoaWdobGlnaHQiLCJoaWdobGlnaHRPZmZzZXQiLCJrZXlib2FyZCIsIndpZHRoIiwiekluZGV4IiwicmVtb3ZlQXJyb3ciLCJvbk5leHQiLCJvblByZXZpb3VzIiwic3RlcHMiLCJzdGVwSW5kZXgiLCJpc1J1bm5pbmciLCJpc1BhdXNlZCIsIndpbmRvdyIsImRvY3VtZW50Iiwib25DbGljayIsImJpbmQiLCJvblJlc2l6ZSIsIm9uS2V5VXAiLCJkb2N1bWVudEVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsInN0b3BQcm9wYWdhdGlvbiIsInRhcmdldCIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwibmV4dCIsInByZXZpb3VzIiwic3RvcCIsImV2ZW50Iiwia2V5Q29kZSIsImNsZWFyIiwicmVuZGVyIiwiZWxlbWVudCIsInN0ZXAiLCJxdWVyeVNlbGVjdG9yIiwiY3JlYXRlT3ZlcmxheSIsInN0YXJ0SW5kZXgiLCJwb3BvdmVyIiwibG9hZGVyIiwiY3JlYXRlRWxlbWVudCIsImFkZCIsInN0eWxlIiwicHJlcGVuZCIsImxlbmd0aCIsInBvc2l0aW9uIiwic3RlcF9oaWdobGlnaHQiLCJzZXRBdHRyaWJ1dGUiLCJwbGFjZW1lbnQiLCJwb3BvdmVySW5uZXIiLCJ0aXRsZSIsImFwcGVuZCIsImlubmVyVGV4dCIsImNvbnRlbnQiLCJpbm5lckhUTUwiLCJzaG93QnRucyIsIkJvb2xlYW4iLCJidG5OZXh0IiwiYnRuQmFjayIsInRleHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb2xvciIsInRleHRDb2xvciIsImFycm93IiwiYm9keSIsImFwcGVuZENoaWxkIiwicG9zaXRpb25Qb3BvdmVyIiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwiaW5saW5lIiwib3ZlcmxheSIsInRvcCIsImxlZnQiLCJyaWdodCIsImJvdHRvbSIsInJlbW92ZSIsInBvcHVwIiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJyZW1vdmVBdHRyaWJ1dGUiLCJoZWlnaHQiLCJpbm5lckhlaWdodCIsImNsaWVudEhlaWdodCIsImlubmVyV2lkdGgiLCJjbGllbnRXaWR0aCIsImVsIiwiX3giLCJfeSIsImlzTmFOIiwib2Zmc2V0TGVmdCIsIm9mZnNldFRvcCIsInNjcm9sbExlZnQiLCJzY3JvbGxUb3AiLCJvZmZzZXRQYXJlbnQiLCJnZXRDb21wdXRlZFN0eWxlIiwibWF0cml4IiwiRE9NTWF0cml4UmVhZE9ubHkiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGVYIiwiTWF0aCIsImFicyIsIm9mZnNldFdpZHRoIiwibTQxIiwidHJhbnNsYXRlWSIsIm9mZnNldEhlaWdodCIsIm00MiIsImdldE9mZnNldCIsImdldFRyYW5zbGF0ZVhZIiwic3RyYXRlZ3kiLCJlbF90b3AiLCJlbF9sZWZ0IiwiZ2V0RWxlbWVudFBvc2l0aW9uIiwicmVwbGFjZSIsInRyaW0iLCJuZXdfYXJyb3ciLCJzY3JvbGxUbyIsIm92ZXJsYXkxIiwib3ZlcmxheTIiLCJvdmVybGF5MyIsIm92ZXJsYXk0IiwiaGlnaGxpZ2h0X29mZnNldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFBcUJBO0VBQ2pCLHFCQUEwQjtFQUFBLFFBQWRDLE9BQWMsdUVBQUosRUFBSTs7RUFBQTs7RUFDdEIsUUFBSSxDQUFDLENBQUMsS0FBS0MsV0FBTCxDQUFpQkMsUUFBdkIsRUFBaUM7RUFDN0IsYUFBTyxLQUFLRCxXQUFMLENBQWlCQyxRQUF4QjtFQUNIOztFQUVELFNBQUtELFdBQUwsQ0FBaUJDLFFBQWpCLEdBQTRCLElBQTVCO0VBRUEsU0FBS0YsT0FBTDtFQUNJRyxNQUFBQSxPQUFPLEVBQUUsSUFEYjtFQUVJQyxNQUFBQSxPQUFPLEVBQUUsR0FGYjtFQUdJQyxNQUFBQSxNQUFNLEVBQUUsRUFIWjtFQUlJQyxNQUFBQSxZQUFZLEVBQUUsQ0FKbEI7RUFLSUMsTUFBQUEsVUFBVSxFQUFFLElBTGhCO0VBTUlDLE1BQUFBLFNBQVMsRUFBRSxJQU5mO0VBT0lDLE1BQUFBLGVBQWUsRUFBRSxDQVByQjtFQVFJQyxNQUFBQSxRQUFRLEVBQUUsSUFSZDtFQVNJQyxNQUFBQSxLQUFLLEVBQUUsT0FUWDtFQVVJQyxNQUFBQSxNQUFN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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VidG91ci5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYlRvdXIgeyAgICBcclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIGlmICghIXRoaXMuY29uc3RydWN0b3IuaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuaW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLmluc3RhbmNlID0gdGhpcztcclxuXHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0ge1xyXG4gICAgICAgICAgICBhbmltYXRlOiB0cnVlLFxyXG4gICAgICAgICAgICBvcGFjaXR5OiAwLjUsXHJcbiAgICAgICAgICAgIG9mZnNldDogMjAsXHJcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogMyxcclxuICAgICAgICAgICAgYWxsb3dDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxyXG4gICAgICAgICAgICBoaWdobGlnaHRPZmZzZXQ6IDUsXHJcbiAgICAgICAgICAgIGtleWJvYXJkOiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogJzMwMHB4JyxcclxuICAgICAgICAgICAgekluZGV4OiAxMDA1MCxcclxuICAgICAgICAgICAgcmVtb3ZlQXJyb3c6IGZhbHNlLFxyXG4gICAgICAgICAgICBvbk5leHQ6ICgpID0+IG51bGwsXHJcbiAgICAgICAgICAgIG9uUHJldmlvdXM6ICgpID0+IG51bGwsXHJcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnN0ZXBzID0gW107XHJcbiAgICAgICAgdGhpcy5zdGVwSW5kZXggPSAwO1xyXG4gICAgICAgIHRoaXMuaXNSdW5uaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc1BhdXNlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAvL2VsZW1lbnRzXHJcbiAgICAgICAgdGhpcy53aW5kb3cgPSB3aW5kb3c7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xyXG5cclxuICAgICAgICAvL2V2ZW50c1xyXG4gICAgICAgIHRoaXMub25DbGljayA9IHRoaXMub25DbGljay5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMub25SZXNpemUgPSB0aGlzLm9uUmVzaXplLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vbktleVVwID0gdGhpcy5vbktleVVwLmJpbmQodGhpcyk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5iaW5kKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBiaW5kKCkge1xyXG4gICAgICAgIGlmICghKCdvbnRvdWNoc3RhcnQnIGluIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSkge1xyXG4gICAgICAgICAgICB0aGlzLndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25DbGljaywgZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLm9uQ2xpY2ssIGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25SZXNpemUsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMub25LZXlVcCwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2soZSkge1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnd3QtYnRuLW5leHQnKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uTmV4dCgpO1xyXG4gICAgICAgICAgICB0aGlzLm5leHQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3d0LWJ0bi1iYWNrJykpIHtcclxuICAgICAgICAgICAgdGhpcy5vblByZXZpb3VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ3d0LW92ZXJsYXknKSkge1xyXG4gICAgICAgICAgICAvL2lmIGFsbG93Q2xvc2UgPSB0cnVlIGNsb3NlIHdoZW4gYmFja2Ryb3AgaXMgY2xpY2tcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5hbGxvd0Nsb3NlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbktleVVwKGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzUnVubmluZyB8fCAhdGhpcy5vcHRpb25zLmtleWJvYXJkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAyNyAmJiB0aGlzLm9wdGlvbnMuYWxsb3dDbG9zZSkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3AoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9yaWdodCBrZXkgZm9yIG5leHRcclxuICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMzkpIHtcclxuICAgICAgICAgICAgdGhpcy5vbk5leHQoKTtcclxuICAgICAgICAgICAgdGhpcy5uZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICAvL2xlZnQga2V5IGZvciBiYWNrXHJcbiAgICAgICAgZWxzZSBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMzcgKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25QcmV2aW91cygpO1xyXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vcGFnZSBpcyByZXNpemUgdXBkYXRlIHBvcG92ZXJcclxuICAgIG9uUmVzaXplKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc1J1bm5pbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyKHRoaXMuc3RlcHNbdGhpcy5zdGVwSW5kZXhdKTtcclxuICAgIH1cclxuXHJcbiAgICAvL3NldCB3ZWIgdG91ciBzdGVwc1xyXG4gICAgc2V0U3RlcHMoc3RlcHMpIHtcclxuICAgICAgICB0aGlzLnN0ZXBzID0gbnVsbDtcclxuICAgICAgICB0aGlzLnN0ZXBzID0gc3RlcHM7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldFN0ZXBzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzO1xyXG4gICAgfVxyXG5cclxuICAgIGhpZ2hsaWdodChlbGVtZW50LCBzdGVwID0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSB0cnVlO1xyXG4gICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGVsZW1lbnQpO1xyXG4gICAgICAgIGlmIChlbGVtZW50KXtcclxuICAgICAgICAgICAgaWYgKHN0ZXApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBJbmRleCA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXBzID0gc3RlcDtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKHRoaXMuc3RlcHNbdGhpcy5zdGVwSW5kZXhdKTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU92ZXJsYXkoZWxlbWVudCwgc3RlcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICAvL3N0YXJ0IHRoZSB3ZWIgdG91clxyXG4gICAgc3RhcnQoc3RhcnRJbmRleCA9IDApIHtcclxuICAgICAgICB0aGlzLmlzUnVubmluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zdGVwSW5kZXggPSBzdGFydEluZGV4O1xyXG4gICAgICAgIHRoaXMucmVuZGVyKHRoaXMuc3RlcHNbdGhpcy5zdGVwSW5kZXhdKTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wKCkge1xyXG4gICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmlzUnVubmluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc2hvdyBsb2FkZXIgcHJvZ3Jlc3NcclxuICAgIHNob3dMb2FkZXIoKSB7XHJcbiAgICAgICAgY29uc3QgcG9wb3ZlciA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnd0LXBvcG92ZXInKTtcclxuICAgICAgICBjb25zdCBsb2FkZXIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIGxvYWRlci5jbGFzc0xpc3QuYWRkKCd3dC1sb2FkZXInKTtcclxuICAgICAgICBsb2FkZXIuc3R5bGUuekluZGV4ID0gdGhpcy5vcHRpb25zLnpJbmRleCArIDEwO1xyXG4gICAgICAgIHBvcG92ZXIucHJlcGVuZChsb2FkZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIG1vdmVOZXh0KCkge1xyXG4gICAgICAgIHRoaXMuaXNQYXVzZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBtb3ZlUHJldmlvdXMoKSB7XHJcbiAgICAgICAgdGhpcy5pc1BhdXNlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJldmlvdXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbk5leHQoKXtcclxuICAgICAgICBpZiAodGhpcy5pc1BhdXNlZCkgcmV0dXJuO1xyXG4gICAgICAgIC8vZXhlY3V0ZSBvbk5leHQgZnVuY3Rpb24oKVxyXG4gICAgICAgIGlmICh0aGlzLnN0ZXBzW3RoaXMuc3RlcEluZGV4XSAmJiB0aGlzLnN0ZXBzW3RoaXMuc3RlcEluZGV4XS5vbk5leHQpIHRoaXMuc3RlcHNbdGhpcy5zdGVwSW5kZXhdLm9uTmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uUHJldmlvdXMoKXtcclxuICAgICAgICBpZiAodGhpcy5pc1BhdXNlZCkgcmV0dXJuO1xyXG4gICAgICAgIC8vZXhlY3V0ZSBvbkJhY2sgZnVuY3Rpb24oKVxyXG4gICAgICAgIGlmICh0aGlzLnN0ZXBzW3RoaXMuc3RlcEluZGV4XSAmJiB0aGlzLnN0ZXBzW3RoaXMuc3RlcEluZGV4XS5vblByZXZpb3VzKSB0aGlzLnN0ZXBzW3RoaXMuc3RlcEluZGV4XS5vblByZXZpb3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqZ28gdG8gbmV4dCBzdGVwICovXHJcbiAgICBuZXh0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUGF1c2VkKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuc3RlcEluZGV4Kys7XHJcbiAgICAgICAgdGhpcy5jbGVhcigpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zdGVwcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3RlcEluZGV4ID49IHRoaXMuc3RlcHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJlbmRlcih0aGlzLnN0ZXBzW3RoaXMuc3RlcEluZGV4XSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJldmlvdXMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNQYXVzZWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5zdGVwSW5kZXgtLTtcclxuICAgICAgICB0aGlzLmNsZWFyKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zdGVwSW5kZXggPCAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJlbmRlcih0aGlzLnN0ZXBzW3RoaXMuc3RlcEluZGV4XSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9hZGQgdGhlIHBvcG92ZXIgdG8gZG9jdW1lbnRcclxuICAgIHJlbmRlcihzdGVwKSB7XHJcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBzdGVwLmVsZW1lbnQgPyB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc3RlcC5lbGVtZW50KSA6IG51bGw7XHJcblxyXG4gICAgICAgIC8vY2hlY2sgaWYgZWxlbWVudCBpcyBwcmVzZW50IGlmIG5vdCBtYWtlIGl0IGZsb2F0aW5nXHJcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICFlbGVtZW50LnN0eWxlLnBvc2l0aW9uID8gJ3JlbGF0aXZlJyA6IGVsZW1lbnQuc3R5bGUucG9zaXRpb247XHJcbiAgICAgICAgICAgIGNvbnN0IHN0ZXBfaGlnaGxpZ2h0ID0gIXN0ZXAuaGlnaGxpZ2h0ID8gdHJ1ZSA6IHN0ZXAuaGlnaGxpZ2h0OyAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgLy9oaWdobGlnaHQgaXMgc2V0IHRvIHRydWVcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5oaWdobGlnaHQgJiYgc3RlcF9oaWdobGlnaHQgKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnd3QtaGlnaGxpZ2h0JywgJ3RydWUnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9wb3BvdmVyXHJcbiAgICAgICAgY29uc3QgcG9wb3ZlciA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7ICAgICAgICBcclxuICAgICAgICBwb3BvdmVyLmNsYXNzTGlzdC5hZGQoJ3d0LXBvcG92ZXInKTtcclxuICAgICAgICBwb3BvdmVyLnN0eWxlLmJvcmRlclJhZGl1cyA9IHRoaXMub3B0aW9ucy5ib3JkZXJSYWRpdXMgKyAncHgnO1xyXG4gICAgICAgIHBvcG92ZXIuc3R5bGUuekluZGV4ID0gdGhpcy5vcHRpb25zLnpJbmRleCArIDEwO1xyXG4gICAgICAgIGlmIChzdGVwLnBsYWNlbWVudCkgcG9wb3Zlci5jbGFzc0xpc3QuYWRkKHN0ZXAucGxhY2VtZW50KTsgLy9hZGQgdXNlciBkZWZpbmUgcGxhY2VtZW50IHRvIGNsYXNzIGZvciBwb3NpdGlvbiBpbiBjc3NcclxuXHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy53aWR0aCkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy53aWR0aCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUud2lkdGggPSB0aGlzLm9wdGlvbnMud2lkdGg7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLndpZHRoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS53aWR0aCA9IHRoaXMub3B0aW9ucy53aWR0aCArICdweCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzdGVwLndpZHRoKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RlcC53aWR0aCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUud2lkdGggPSBzdGVwLndpZHRoO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAud2lkdGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBwb3BvdmVyLnN0eWxlLndpZHRoID0gc3RlcC53aWR0aCArICdweCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vcG9wb3ZlciBpbm5lciBjb250YWluZXJcclxuICAgICAgICBjb25zdCBwb3BvdmVySW5uZXIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIHBvcG92ZXJJbm5lci5jbGFzc0xpc3QuYWRkKCd3dC1wb3BvdmVyLWlubmVyJyk7XHJcbiAgICAgICBcclxuICAgICAgICAvL3RpdGxlXHJcbiAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIHRpdGxlLmNsYXNzTGlzdC5hZGQoJ3d0LXRpdGxlJyk7XHJcbiAgICAgICAgaWYgKHN0ZXAudGl0bGUpIHBvcG92ZXJJbm5lci5hcHBlbmQodGl0bGUpO1xyXG4gICAgICAgIGlmIChzdGVwLnRpdGxlKSB0aXRsZS5pbm5lclRleHQgPSBzdGVwLnRpdGxlO1xyXG5cclxuICAgICAgICAvL2NvbnRlbnRcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBjb250ZW50LmNsYXNzTGlzdC5hZGQoJ3d0LWNvbnRlbnQnKTtcclxuICAgICAgICBwb3BvdmVySW5uZXIuYXBwZW5kKGNvbnRlbnQpO1xyXG4gICAgICAgIGNvbnRlbnQuaW5uZXJIVE1MID0gKHN0ZXAuY29udGVudCA/IHN0ZXAuY29udGVudCA6ICcnKTtcclxuICAgICAgICBcclxuICAgICAgICAvL2J1dHRvbnNcclxuICAgICAgICBjb25zdCBzaG93QnRucyA9IChzdGVwLnNob3dCdG5zID09IG51bGwgfHwgc3RlcC5zaG93QnRucyA9PSAndW5kZWZpbmVkJykgPyB0cnVlIDogQm9vbGVhbihzdGVwLnNob3dCdG5zKTtcclxuXHJcbiAgICAgICAgaWYgKHNob3dCdG5zKXtcclxuICAgICAgICAgICAgY29uc3QgYnRuTmV4dCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGJ0bkJhY2sgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xyXG5cclxuICAgICAgICAgICAgYnRuTmV4dC5jbGFzc0xpc3QuYWRkKCd3dC1idG5zJywgJ3d0LWJ0bi1uZXh0Jyk7XHJcbiAgICAgICAgICAgIGJ0bkJhY2suY2xhc3NMaXN0LmFkZCgnd3QtYnRucycsICd3dC1idG4tYmFjaycpO1xyXG5cclxuICAgICAgICAgICAgYnRuTmV4dC5pbm5lckhUTUwgPSAoc3RlcC5idG5OZXh0ICYmIHN0ZXAuYnRuTmV4dC50ZXh0ID8gc3RlcC5idG5OZXh0LnRleHQgOiAodGhpcy5zdGVwSW5kZXggPT0gdGhpcy5zdGVwcy5sZW5ndGggLSAxID8gJ0RvbmUnIDogJ05leHQgJiM4NTk0OycpKTtcclxuICAgICAgICAgICAgYnRuQmFjay5pbm5lckhUTUwgPSAoc3RlcC5idG5CYWNrICYmIHN0ZXAuYnRuQmFjay50ZXh0ID8gc3RlcC5idG5CYWNrLnRleHQgOiAodGhpcy5zdGVwSW5kZXggPT0gMCA/ICdDbG9zZScgOiAnXHQmIzg1OTI7IEJhY2snKSk7XHJcblxyXG4gICAgICAgICAgICAvL2FkZCBzdHlsZXNcclxuICAgICAgICAgICAgYnRuTmV4dC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAoc3RlcC5idG5OZXh0ICYmIHN0ZXAuYnRuTmV4dC5iYWNrZ3JvdW5kQ29sb3IgPyBzdGVwLmJ0bk5leHQuYmFja2dyb3VuZENvbG9yIDogJyM3Y2QxZjknKTtcclxuICAgICAgICAgICAgYnRuTmV4dC5zdHlsZS5jb2xvciA9IChzdGVwLmJ0bk5leHQgJiYgc3RlcC5idG5OZXh0LnRleHRDb2xvciA/IHN0ZXAuYnRuTmV4dC50ZXh0Q29sb3IgOiAnI2ZmZicpO1xyXG5cclxuICAgICAgICAgICAgYnRuQmFjay5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAoc3RlcC5idG5CYWNrICYmIHN0ZXAuYnRuQmFjay5iYWNrZ3JvdW5kQ29sb3IgPyBzdGVwLmJ0bkJhY2suYmFja2dyb3VuZENvbG9yIDogJyNlZmVmZWY7Jyk7XHJcbiAgICAgICAgICAgIGJ0bkJhY2suc3R5bGUuY29sb3IgPSAoc3RlcC5idG5CYWNrICYmIHN0ZXAuYnRuQmFjay50ZXh0Q29sb3IgPyBzdGVwLmJ0bkJhY2sudGV4dENvbG9yIDogJyM1NTUnKTtcclxuICAgICAgICAgICAgcG9wb3ZlcklubmVyLmFwcGVuZChidG5OZXh0KTtcclxuICAgICAgICAgICAgcG9wb3ZlcklubmVyLmFwcGVuZChidG5CYWNrKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vcG9wb3ZlciBhcnJvd1xyXG4gICAgICAgIGNvbnN0IGFycm93ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBhcnJvdy5jbGFzc0xpc3QuYWRkKCd3dC1hcnJvdycpO1xyXG4gICAgICAgIGFycm93LnNldEF0dHJpYnV0ZSgnZGF0YS1wb3BwZXItYXJyb3cnLCAndHJ1ZScpO1xyXG4gICAgICAgIHBvcG92ZXIuYXBwZW5kKGFycm93KTtcclxuXHJcbiAgICAgICAgLy9wb3BvdmVyIGlubmVyIGNvbnRhaW5lclxyXG4gICAgICAgIHBvcG92ZXIuYXBwZW5kKHBvcG92ZXJJbm5lcik7XHJcblxyXG4gICAgICAgIC8vYXBwZW5kIHBvcG92ZXIgdG8gYm9keVxyXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwb3BvdmVyKTtcclxuXHJcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvblBvcG92ZXIoZWxlbWVudCwgcG9wb3ZlciwgYXJyb3csIHN0ZXApO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhpZ2hsaWdodCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU92ZXJsYXkoZWxlbWVudCwgc3RlcCk7XHJcbiAgICAgICAgICAgIH0gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgKiBObyBlbGVtZW50IGlzIGRlZmluZVxyXG4gICAgICAgICogTWFrZSBwb3BvdmVyIGZsb2F0aW5nIChwb3NpdGlvbiBjZW50ZXIpXHJcbiAgICAgICAgKi9cclxuICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHBvcG92ZXIuY2xhc3NMaXN0LmFkZCgnd3Qtc2xpZGVzJyk7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiBcInNtb290aFwiLCBibG9jazogXCJjZW50ZXJcIiwgaW5saW5lOiBcImNlbnRlclwifSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmhpZ2hsaWdodCl7XHJcbiAgICAgICAgICAgICAgICB2YXIgb3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgICAgICAgICAgb3ZlcmxheS5jbGFzc0xpc3QuYWRkKCd3dC1vdmVybGF5JywgJ29wZW4nKTtcclxuICAgICAgICAgICAgICAgIG92ZXJsYXkuc3R5bGUuekluZGV4ID0gdGhpcy5vcHRpb25zLnpJbmRleCAtIDEwO1xyXG4gICAgICAgICAgICAgICAgb3ZlcmxheS5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XHJcbiAgICAgICAgICAgICAgICBvdmVybGF5LnN0eWxlLnRvcCA9IDA7XHJcbiAgICAgICAgICAgICAgICBvdmVybGF5LnN0eWxlLmxlZnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgb3ZlcmxheS5zdHlsZS5yaWdodCA9IDA7XHJcbiAgICAgICAgICAgICAgICBvdmVybGF5LnN0eWxlLmJvdHRvbSA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XHJcbiAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICBhcnJvdy5yZW1vdmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vYWRkIG9wdGlvbiB0byByZW1vdmUgYXJyb3cgYmVjYXVzZSBwb3BwZXIgYXJyb3dzIGFyZSBub3QgcG9zaXRpb25pbmcgd2VsbFxyXG4gICAgICAgIC8vVE9ETzogZml4IHBvcHBlciBhcnJvd1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVtb3ZlQXJyb3cpe1xyXG4gICAgICAgICAgICBhcnJvdy5yZW1vdmUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8vcmVtb3ZlIHBvcG92ZXJcclxuICAgIGNsZWFyKCkge1xyXG4gICAgICAgIHZhciBwb3B1cCA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnd0LXBvcG92ZXInKTtcclxuICAgICAgICB2YXIgbG9hZGVyID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcud3QtbG9hZGVyJyk7XHJcblxyXG4gICAgICAgIGlmIChwb3B1cCkgcG9wdXAucmVtb3ZlKCk7XHJcbiAgICAgICAgaWYgKGxvYWRlcikgbG9hZGVyLnJlbW92ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy53dC1vdmVybGF5JykuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZSgpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnKlt3dC1oaWdobGlnaHRdJykuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnd3QtaGlnaGxpZ2h0Jyk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBnZXRXaW5kb3dPZmZzZXQoKXtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBoZWlnaHQ6IHRoaXMud2luZG93LmlubmVySGVpZ2h0IC0gKHRoaXMud2luZG93LmlubmVySGVpZ2h0IC0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSxcclxuICAgICAgICAgICAgd2lkdGg6IHRoaXMud2luZG93LmlubmVyV2lkdGggLSAodGhpcy53aW5kb3cuaW5uZXJXaWR0aCAtIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKSxcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0T2Zmc2V0KCBlbCApIHtcclxuICAgICAgICB2YXIgX3ggPSAwO1xyXG4gICAgICAgIHZhciBfeSA9IDA7XHJcbiAgICAgICAgd2hpbGUoIGVsICYmICFpc05hTiggZWwub2Zmc2V0TGVmdCApICYmICFpc05hTiggZWwub2Zmc2V0VG9wICkgKSB7XHJcbiAgICAgICAgICAgIF94ICs9IGVsLm9mZnNldExlZnQgLSBlbC5zY3JvbGxMZWZ0O1xyXG4gICAgICAgICAgICBfeSArPSBlbC5vZmZzZXRUb3AgLSBlbC5zY3JvbGxUb3A7XHJcbiAgICAgICAgICAgIGVsID0gZWwub2Zmc2V0UGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4geyB0b3A6IF95LCBsZWZ0OiBfeCB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vZ2V0IGNzcyB0cmFuc2Zvcm0gcHJvcGVydHkgdG8gZml4ZWQgaXNzdWVzIHdpdGggdHJhbnNmb3JtIGVsZW1lbnRzXHJcbiAgICBnZXRUcmFuc2xhdGVYWShlbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVxyXG4gICAgICAgIGNvbnN0IG1hdHJpeCA9IG5ldyBET01NYXRyaXhSZWFkT25seShzdHlsZS50cmFuc2Zvcm0pXHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0ZVg6ICBNYXRoLmFicyhlbGVtZW50Lm9mZnNldFdpZHRoICogKG1hdHJpeC5tNDEgLyAxMDApKSxcclxuICAgICAgICAgICAgdHJhbnNsYXRlWTogIE1hdGguYWJzKGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICogKG1hdHJpeC5tNDIgLyAxMDApKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRFbGVtZW50UG9zaXRpb24oZWxlbWVudCl7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdG9wOiB0aGlzLmdldE9mZnNldChlbGVtZW50KS50b3AgLSAoZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPyB0aGlzLmdldFRyYW5zbGF0ZVhZKGVsZW1lbnQpLnRyYW5zbGF0ZVkgOiAwKSxcclxuICAgICAgICAgICAgbGVmdDogdGhpcy5nZXRPZmZzZXQoZWxlbWVudCkubGVmdCAtKCBlbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA/IHRoaXMuZ2V0VHJhbnNsYXRlWFkoZWxlbWVudCkudHJhbnNsYXRlWCA6IDApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vcG9zaXRpb24gcG9wb3ZlclxyXG4gICAgcG9zaXRpb25Qb3BvdmVyKGVsZW1lbnQsIHBvcG92ZXIsIGFycm93LCBzdGVwKSB7XHJcbiAgICAgICAgdmFyIHBsYWNlbWVudCA9IHN0ZXAucGxhY2VtZW50IHx8ICdhdXRvJztcclxuICAgICAgICB2YXIgc3RyYXRlZ3kgPSBzdGVwLnN0cmF0ZWd5IHx8ICdhYnNvbHV0ZSc7XHJcblxyXG4gICAgICAgIHBvcG92ZXIuc3R5bGUucG9zaXRpb24gPSBzdHJhdGVneTtcclxuICAgICAgICBhcnJvdy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcblxyXG4gICAgICAgIC8vZWxlbWVudCB0b3AgJiBsZWZ0XHJcbiAgICAgICAgdmFyIGVsX3RvcCwgZWxfbGVmdDtcclxuICAgICAgICBlbF90b3AgPSB0aGlzLmdldEVsZW1lbnRQb3NpdGlvbihlbGVtZW50KS50b3A7IFxyXG4gICAgICAgIGVsX2xlZnQgPSB0aGlzLmdldEVsZW1lbnRQb3NpdGlvbihlbGVtZW50KS5sZWZ0OyBcclxuICAgIFxyXG4gICAgICAgIC8vaWYgcGxhY2VtZW50IGlzIG5vdCBkZWZpbmVkIG9yIGF1dG8gdGhlbiBjYWxjdWxhdGUgbG9jYXRpb25cclxuICAgICAgICBpZiAocGxhY2VtZW50ID09ICdhdXRvJyB8fCBwbGFjZW1lbnQgPT0gJ2F1dG8tc3RhcnQnIHx8IHBsYWNlbWVudCA9PSAnYXV0by1lbmQnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFycm93ID0gcGxhY2VtZW50LnJlcGxhY2UoJ2F1dG8nLCAnJykudHJpbSgpO1xyXG4gICAgICAgICAgICB2YXIgbmV3X2Fycm93ID0gJyc7XHJcblxyXG4gICAgICAgICAgICAvL2VsZW1lbnQgaXMgcG9zaXRpb24gdG8gdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuXHJcbiAgICAgICAgICAgIC8vcG9zaXRpb24gcG9wb3ZlciB0byB0b3BcclxuICAgICAgICAgICAgaWYgKGVsX3RvcCArIChwb3BvdmVyLm9mZnNldEhlaWdodCArIHRoaXMub3B0aW9ucy5vZmZzZXQpID4gdGhpcy53aW5kb3cuaW5uZXJIZWlnaHQgLSAxMDApIHtcclxuICAgICAgICAgICAgICAgIC8vZGl2aWRlIHRoZSBzY3JlZW4gaW50byAzIHNlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAvL2lmIGxlZnQgaXMgd2l0aGluIHNlY3Rpb24gMS8zIG9mIHRoZSBzY3JlZW4gdGhlbiBhcnJvdyBpcyBpbiB0aGUgc3RhcnQgcG9zaXRpb25cclxuICAgICAgICAgICAgICAgIGlmIChlbF9sZWZ0IDwgKHRoaXMud2luZG93LmlubmVyV2lkdGggLyAzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld19hcnJvdyA9IGFycm93Lmxlbmd0aCA+IDAgPyBhcnJvdyA6ICctc3RhcnQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vaWYgbGVmdCBpcyB3aXRoaW4gdGhhdCBzZWN0aW9uIDMvMyBvZiB0aGUgc2NyZWVuIHRoZW4gYXJyb3cgaXMgaW4gdGhlIGVuZCBwb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxfbGVmdCA+ICh0aGlzLndpbmRvdy5pbm5lcldpZHRoIC0gKHRoaXMud2luZG93LmlubmVyV2lkdGggLyAzKSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXdfYXJyb3cgPSBhcnJvdy5sZW5ndGggPiAwID8gYXJyb3cgOiAnLWVuZCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQgPSAndG9wJyArIG5ld19hcnJvdztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9lbGVtZW50IGlzIHBvc2l0aW9uIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSBzY3JlZW5cclxuICAgICAgICAgICAgLy9wb3NpdGlvbiBwb3BvdmVyIHRvIHRoZSBsZWZ0XHJcbiAgICAgICAgICAgIGlmICgoZWxfbGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggKyBwb3BvdmVyLm9mZnNldFdpZHRoKSA+IHRoaXMud2luZG93LmlubmVyV2lkdGgpIHtcclxuICAgICAgICAgICAgICAgIC8vZGl2aWRlIHRoZSBzY3JlZW4gaW50byAzIHNlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAvL2lmIGxlZnQgaXMgd2l0aGluIHNlY3Rpb24gMS8zIG9mIHRoZSBzY3JlZW4gdGhlbiBhcnJvdyBpcyBpbiB0aGUgc3RhcnQgcG9zaXRpb25cclxuICAgICAgICAgICAgICAgIGlmIChlbF90b3AgPCAodGhpcy53aW5kb3cuaW5uZXJIZWlnaHQgLyAzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld19hcnJvdyA9IGFycm93Lmxlbmd0aCA+IDAgPyBhcnJvdyA6ICctc3RhcnQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vaWYgbGVmdCBpcyB3aXRoaW4gdGhhdCBzZWN0aW9uIDMvMyBvZiB0aGUgc2NyZWVuIHRoZW4gYXJyb3cgaXMgaW4gdGhlIGVuZCBwb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxfdG9wID4gKHRoaXMud2luZG93LmlubmVySGVpZ2h0IC0gKHRoaXMud2luZG93LmlubmVySGVpZ2h0IC8gMykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3X2Fycm93ID0gYXJyb3cubGVuZ3RoID4gMCA/IGFycm93IDogJy1zdGFydCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQgPSAnbGVmdCcgKyBuZXdfYXJyb3c7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vZWxlbWVudCBpcyBwb3NpdGlvbiB0byB0aGUgbGVmdCBzaWRlIG9mIHRoZSBzY3JlZW5cclxuICAgICAgICAgICAgLy9wb3NpdGlvbiBwb3BvdmVyIHRvIHRoZSByaWdodFxyXG4gICAgICAgICAgICBpZiAoZWxfbGVmdCA8IHBvcG92ZXIub2Zmc2V0V2lkdGggJiYgKGVsZW1lbnQub2Zmc2V0V2lkdGggKyBwb3BvdmVyLm9mZnNldFdpZHRoKSA8IHRoaXMud2luZG93LmlubmVyV2lkdGgpIHtcclxuICAgICAgICAgICAgICAgIC8vZGl2aWRlIHRoZSBzY3JlZW4gaW50byAzIHNlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAvL2lmIGxlZnQgaXMgd2l0aGluIHNlY3Rpb24gMS8zIG9mIHRoZSBzY3JlZW4gdGhlbiBhcnJvdyBpcyBpbiB0aGUgc3RhcnQgcG9zaXRpb25cclxuICAgICAgICAgICAgICAgIGlmIChlbF90b3AgPCAodGhpcy53aW5kb3cuaW5uZXJIZWlnaHQgLyAzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld19hcnJvdyA9IGFycm93Lmxlbmd0aCA+IDAgPyBhcnJvdyA6ICctc3RhcnQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vaWYgbGVmdCBpcyB3aXRoaW4gdGhhdCBzZWN0aW9uIDMvMyBvZiB0aGUgc2NyZWVuIHRoZW4gYXJyb3cgaXMgaW4gdGhlIGVuZCBwb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZWxfdG9wID4gKHRoaXMud2luZG93LmlubmVySGVpZ2h0IC0gKHRoaXMud2luZG93LmlubmVySGVpZ2h0IC8gMykpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3X2Fycm93ID0gYXJyb3cubGVuZ3RoID4gMCA/IGFycm93IDogJy1zdGFydCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQgPSAncmlnaHQnICsgbmV3X2Fycm93O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2VsZW1lbnQgaXMgcG9zaXRpb24gdG8gdGhlIHRvcCBvZiB0aGUgc2NyZWVuXHJcbiAgICAgICAgICAgIC8vcG9zaXRpb24gcG9wb3ZlciB0byBib3R0b21cclxuICAgICAgICAgICAgaWYgKGVsX3RvcCA8IChwb3BvdmVyLm9mZnNldEhlaWdodCArIHRoaXMub3B0aW9ucy5vZmZzZXQpIHx8IGVsX3RvcCA8IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgLy9kaXZpZGUgdGhlIHNjcmVlbiBpbnRvIDMgc2VjdGlvbnNcclxuICAgICAgICAgICAgICAgIC8vaWYgbGVmdCBpcyB3aXRoaW4gc2VjdGlvbiAxLzMgb2YgdGhlIHNjcmVlbiB0aGVuIGFycm93IGlzIGluIHRoZSBzdGFydCBwb3NpdGlvblxyXG4gICAgICAgICAgICAgICAgaWYgKGVsX2xlZnQgPCAodGhpcy53aW5kb3cuaW5uZXJXaWR0aCAvIDMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3X2Fycm93ID0gYXJyb3cubGVuZ3RoID4gMCA/IGFycm93IDogJy1zdGFydCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy9pZiBsZWZ0IGlzIHdpdGhpbiB0aGF0IHNlY3Rpb24gMy8zIG9mIHRoZSBzY3JlZW4gdGhlbiBhcnJvdyBpcyBpbiB0aGUgZW5kIHBvc2l0aW9uXHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChlbF9sZWZ0ID4gKHRoaXMud2luZG93LmlubmVyV2lkdGggLSAodGhpcy53aW5kb3cuaW5uZXJXaWR0aCAvIDMpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld19hcnJvdyA9IGFycm93Lmxlbmd0aCA+IDAgPyBhcnJvdyA6ICctZW5kJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHBsYWNlbWVudCA9ICdib3R0b20nICsgbmV3X2Fycm93O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2FkZCB0byBjbGFzcyBmb3IgY3NzXHJcbiAgICAgICAgICAgIHBvcG92ZXIuY2xhc3NMaXN0LmFkZChwbGFjZW1lbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy90b3BcclxuICAgICAgICBpZiAocGxhY2VtZW50ID09ICd0b3AnKSB7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudG9wID0gKGVsX3RvcCAtIChwb3BvdmVyLm9mZnNldEhlaWdodCArIHRoaXMub3B0aW9ucy5vZmZzZXQpKSArICdweCc7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IChlbF9sZWZ0ICsgKChlbGVtZW50Lm9mZnNldFdpZHRoIC8gMikgLSAocG9wb3Zlci5vZmZzZXRXaWR0aCAvIDIpKSkgKyAncHgnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50ID09ICd0b3Atc3RhcnQnKSB7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudG9wID0gKGVsX3RvcCAtIChwb3BvdmVyLm9mZnNldEhlaWdodCArIHRoaXMub3B0aW9ucy5vZmZzZXQpKSArICdweCc7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IGVsX2xlZnQgLSB0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0T2Zmc2V0ICsgJ3B4JztcclxuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudCA9PSAndG9wLWVuZCcpIHtcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS50b3AgPSAoZWxfdG9wIC0gKHBvcG92ZXIub2Zmc2V0SGVpZ2h0ICsgdGhpcy5vcHRpb25zLm9mZnNldCkpICsgJ3B4JztcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS5sZWZ0ID0gKChlbF9sZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCArIHRoaXMub3B0aW9ucy5oaWdobGlnaHRPZmZzZXQpIC0gcG9wb3Zlci5vZmZzZXRXaWR0aCkgKyAncHgnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vYm90dG9tXHJcbiAgICAgICAgZWxzZSBpZiAocGxhY2VtZW50ID09ICdib3R0b20nKSB7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudG9wID0gKGVsX3RvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0KSArIHRoaXMub3B0aW9ucy5vZmZzZXQgKyAncHgnO1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSAoZWxfbGVmdCArIChlbGVtZW50Lm9mZnNldFdpZHRoIC8gMikgLSBwb3BvdmVyLm9mZnNldFdpZHRoIC8gMikgKyAncHgnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50ID09ICdib3R0b20tc3RhcnQnKSB7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudG9wID0gKGVsX3RvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0KSArIHRoaXMub3B0aW9ucy5vZmZzZXQgKyAncHgnO1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSAoZWxfbGVmdCAtIHRoaXMub3B0aW9ucy5oaWdobGlnaHRPZmZzZXQpICsgJ3B4JztcclxuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudCA9PSAnYm90dG9tLWVuZCcpIHtcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS50b3AgPSAoZWxfdG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQpICsgdGhpcy5vcHRpb25zLm9mZnNldCArICdweCc7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9ICgoZWxfbGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggKyB0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0T2Zmc2V0KSAtIHBvcG92ZXIub2Zmc2V0V2lkdGgpICsgJ3B4JztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2xlZnRcclxuICAgICAgICBlbHNlIGlmIChwbGFjZW1lbnQgPT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9IChlbF90b3AgKyAoTWF0aC5hYnMocG9wb3Zlci5vZmZzZXRIZWlnaHQgLSBlbGVtZW50Lm9mZnNldEhlaWdodCkgLyAyKSkgKyAncHgnO1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSAoZWxfbGVmdCArIChlbGVtZW50Lm9mZnNldFdpZHRoICsgdGhpcy5vcHRpb25zLm9mZnNldCkpICsgJ3B4JztcclxuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudCA9PSAncmlnaHQtc3RhcnQnKSB7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudG9wID0gZWxfdG9wIC0gdGhpcy5vcHRpb25zLmhpZ2hsaWdodE9mZnNldCArICdweCc7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IChlbF9sZWZ0ICsgKGVsZW1lbnQub2Zmc2V0V2lkdGggKyB0aGlzLm9wdGlvbnMub2Zmc2V0KSkgKyAncHgnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGxhY2VtZW50ID09ICdyaWdodC1lbmQnKSB7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUudG9wID0gKChlbF90b3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCkgLSBwb3BvdmVyLm9mZnNldEhlaWdodCkgKyB0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0T2Zmc2V0ICsgJ3B4JztcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS5sZWZ0ID0gKGVsX2xlZnQgKyAoZWxlbWVudC5vZmZzZXRXaWR0aCArIHRoaXMub3B0aW9ucy5vZmZzZXQpKSArICdweCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL3JpZ2h0XHJcbiAgICAgICAgZWxzZSBpZiAocGxhY2VtZW50ID09ICdsZWZ0Jykge1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9IChlbF90b3AgKyAoTWF0aC5hYnMocG9wb3Zlci5vZmZzZXRIZWlnaHQgLSBlbGVtZW50Lm9mZnNldEhlaWdodCkgLyAyKSkgKyAncHgnO1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSAoZWxfbGVmdCAtIChwb3BvdmVyLm9mZnNldFdpZHRoICsgdGhpcy5vcHRpb25zLm9mZnNldCkpICsgJ3B4JztcclxuICAgICAgICB9IGVsc2UgaWYgKHBsYWNlbWVudCA9PSAnbGVmdC1zdGFydCcpIHtcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS50b3AgPSBlbF90b3AgLSB0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0T2Zmc2V0ICsgJ3B4JztcclxuICAgICAgICAgICAgcG9wb3Zlci5zdHlsZS5sZWZ0ID0gKGVsX2xlZnQgLSAocG9wb3Zlci5vZmZzZXRXaWR0aCArIHRoaXMub3B0aW9ucy5vZmZzZXQpKSArICdweCc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwbGFjZW1lbnQgPT0gJ2xlZnQtZW5kJykge1xyXG4gICAgICAgICAgICBwb3BvdmVyLnN0eWxlLnRvcCA9ICgoZWxfdG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQpIC0gcG9wb3Zlci5vZmZzZXRIZWlnaHQpICsgdGhpcy5vcHRpb25zLmhpZ2hsaWdodE9mZnNldCArICdweCc7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc3R5bGUubGVmdCA9IChlbF9sZWZ0IC0gKHBvcG92ZXIub2Zmc2V0V2lkdGggKyB0aGlzLm9wdGlvbnMub2Zmc2V0KSkgKyAncHgnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9pZiBwb3NpdGlvbiBpcyBmaXhlZCBzY3JvbGwgdG8gdG9wXHJcbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSAnZml4ZWQnKXtcclxuICAgICAgICAgICAgdGhpcy53aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHBvcG92ZXIuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiBcInNtb290aFwiLCBibG9jazogXCJjZW50ZXJcIiwgaW5saW5lOiBcIm5lYXJlc3RcIn0pO1xyXG4gICAgICAgIH0gICAgICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVPdmVybGF5KGVsZW1lbnQsIHN0ZXAgPSBudWxsKXtcclxuICAgICAgICB2YXIgc3RyYXRlZ3kgPSAoc3RlcCAmJiBzdGVwLnN0cmF0ZWd5KSA/IHN0ZXAuc3RyYXRlZ3kgOiAnYWJzb2x1dGUnO1xyXG5cclxuICAgICAgICB2YXIgb3ZlcmxheTEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBvdmVybGF5MS5jbGFzc0xpc3QuYWRkKCd3dC1vdmVybGF5JywgJ29wZW4nLCAnb3ZlcmxheTEnKTtcclxuICAgICAgICBvdmVybGF5MS5zdHlsZS56SW5kZXggPSB0aGlzLm9wdGlvbnMuekluZGV4IC0gMTA7XHJcblxyXG4gICAgICAgIHZhciBvdmVybGF5MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIG92ZXJsYXkyLmNsYXNzTGlzdC5hZGQoJ3d0LW92ZXJsYXknLCAnb3BlbicsICdvdmVybGF5MicpO1xyXG4gICAgICAgIG92ZXJsYXkyLnN0eWxlLnpJbmRleCA9IHRoaXMub3B0aW9ucy56SW5kZXggLSAxMDtcclxuXHJcbiAgICAgICAgdmFyIG92ZXJsYXkzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgb3ZlcmxheTMuY2xhc3NMaXN0LmFkZCgnd3Qtb3ZlcmxheScsICdvcGVuJywgJ292ZXJsYXkzJyk7XHJcbiAgICAgICAgb3ZlcmxheTMuc3R5bGUuekluZGV4ID0gdGhpcy5vcHRpb25zLnpJbmRleCAtIDEwO1xyXG5cclxuICAgICAgICB2YXIgb3ZlcmxheTQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBvdmVybGF5NC5jbGFzc0xpc3QuYWRkKCd3dC1vdmVybGF5JywgJ29wZW4nLCAnb3ZlcmxheTQnKTtcclxuICAgICAgICBvdmVybGF5NC5zdHlsZS56SW5kZXggPSB0aGlzLm9wdGlvbnMuekluZGV4IC0gMTA7XHJcbiAgICBcclxuICAgICAgICAvL2FwcGVuZCB0byBib2R5XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG92ZXJsYXkxKTtcclxuICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheTIpO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5Myk7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG92ZXJsYXk0KTtcclxuXHJcbiAgICAgICAgLy9lbGVtZW50IHRvcCAmIGxlZnRcclxuICAgICAgICB2YXIgZWxfdG9wLCBlbF9sZWZ0O1xyXG4gICAgICAgIGVsX3RvcCA9IHRoaXMuZ2V0RWxlbWVudFBvc2l0aW9uKGVsZW1lbnQpLnRvcDsgXHJcbiAgICAgICAgZWxfbGVmdCA9IHRoaXMuZ2V0RWxlbWVudFBvc2l0aW9uKGVsZW1lbnQpLmxlZnQ7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdmFyIGhpZ2hsaWdodF9vZmZzZXQgPSB0aGlzLm9wdGlvbnMuaGlnaGxpZ2h0T2Zmc2V0O1xyXG5cclxuICAgICAgICAvL292ZXJsYXlzIHRvcC1sZWZ0XHJcbiAgICAgICAgb3ZlcmxheTEuc3R5bGUucG9zaXRpb24gPSBzdHJhdGVneTtcclxuICAgICAgICBvdmVybGF5MS5zdHlsZS50b3AgPSAwO1xyXG4gICAgICAgIG92ZXJsYXkxLnN0eWxlLndpZHRoID0gIGVsX2xlZnQgLSBoaWdobGlnaHRfb2Zmc2V0ICsgJ3B4JztcclxuICAgICAgICBvdmVybGF5MS5zdHlsZS5oZWlnaHQgPSAgKGVsX3RvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgaGlnaGxpZ2h0X29mZnNldCkgKyAncHgnO1xyXG4gICAgICAgIG92ZXJsYXkxLnN0eWxlLmxlZnQgPSAwO1xyXG5cclxuICAgICAgICAvL292ZXJsYXlzIHRvcC1yaWdodFxyXG4gICAgICAgIG92ZXJsYXkyLnN0eWxlLnBvc2l0aW9uID0gc3RyYXRlZ3k7XHJcbiAgICAgICAgb3ZlcmxheTIuc3R5bGUudG9wID0gMDtcclxuICAgICAgICBvdmVybGF5Mi5zdHlsZS5yaWdodCA9IDA7XHJcbiAgICAgICAgb3ZlcmxheTIuc3R5bGUuaGVpZ2h0ID0gKGVsX3RvcCAtIGhpZ2hsaWdodF9vZmZzZXQpICsgJ3B4JztcclxuICAgICAgICBvdmVybGF5Mi5zdHlsZS5sZWZ0ID0gKGVsX2xlZnQgLSBoaWdobGlnaHRfb2Zmc2V0KSArICdweCc7XHJcblxyXG4gICAgICAgIC8vb3ZlcmxheXMgYm90dG9tLXJpZ2h0XHJcbiAgICAgICAgb3ZlcmxheTMuc3R5bGUucG9zaXRpb24gPSBzdHJhdGVneTtcclxuICAgICAgICBvdmVybGF5My5zdHlsZS50b3AgPSAoZWxfdG9wIC0gaGlnaGxpZ2h0X29mZnNldCkgKyAncHgnO1xyXG4gICAgICAgIG92ZXJsYXkzLnN0eWxlLnJpZ2h0ID0gMDtcclxuICAgICAgICBvdmVybGF5My5zdHlsZS5ib3R0b20gPSAwIC0gKHRoaXMuZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgLSB0aGlzLndpbmRvdy5pbm5lckhlaWdodCkgKyAncHgnO1xyXG4gICAgICAgIG92ZXJsYXkzLnN0eWxlLmxlZnQgPSAoZWxfbGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggKyBoaWdobGlnaHRfb2Zmc2V0KSArICdweCc7XHJcblxyXG4gICAgICAgIC8vb3ZlcmxheXMgYm90dG9tLWxlZnRcclxuICAgICAgICBvdmVybGF5NC5zdHlsZS5wb3NpdGlvbiA9IHN0cmF0ZWd5O1xyXG4gICAgICAgIG92ZXJsYXk0LnN0eWxlLnRvcCA9IChlbF90b3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCArIGhpZ2hsaWdodF9vZmZzZXQpICsgJ3B4JztcclxuICAgICAgICBvdmVybGF5NC5zdHlsZS53aWR0aCA9ICAgZWxfbGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggKyBoaWdobGlnaHRfb2Zmc2V0ICArICdweCc7XHJcbiAgICAgICAgb3ZlcmxheTQuc3R5bGUuYm90dG9tID0gMCAtICh0aGlzLmRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0IC0gdGhpcy53aW5kb3cuaW5uZXJIZWlnaHQpICsgJ3B4JztcclxuICAgICAgICBvdmVybGF5NC5zdHlsZS5sZWZ0ID0gMDtcclxuICAgIH1cclxuXHJcbn1cclxuIl0sIm5hbWVzIjpbIldlYlRvdXIiLCJvcHRpb25zIiwiY29uc3RydWN0b3IiLCJpbnN0YW5jZSIsImFuaW1hdGUiLCJvcGFjaXR5Iiwib2Zmc2V0IiwiYm9yZGVyUmFkaXVzIiwiYWxsb3dDbG9zZSIsImhpZ2hsaWdodCIsImhpZ2hsaWdodE9mZnNldCIsImtleWJvYXJkIiwid2lkdGgiLCJ6SW5kZXgiLCJyZW1vdmVBcnJvdyIsIm9uTmV4dCIsIm9uUHJldmlvdXMiLCJzdGVwcyIsInN0ZXBJbmRleCIsImlzUnVubmluZyIsImlzUGF1c2VkIiwid2luZG93IiwiZG9jdW1lbnQiLCJvbkNsaWNrIiwiYmluZCIsIm9uUmVzaXplIiwib25LZXlVcCIsImRvY3VtZW50RWxlbWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwidGFyZ2V0IiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJuZXh0IiwicHJldmlvdXMiLCJzdG9wIiwiZXZlbnQiLCJrZXlDb2RlIiwiY2xlYXIiLCJyZW5kZXIiLCJlbGVtZW50Iiwic3RlcCIsInF1ZXJ5U2VsZWN0b3IiLCJjcmVhdGVPdmVybGF5Iiwic3RhcnRJbmRleCIsInBvcG92ZXIiLCJsb2FkZXIiLCJjcmVhdGVFbGVtZW50IiwiYWRkIiwic3R5bGUiLCJwcmVwZW5kIiwibGVuZ3RoIiwicG9zaXRpb24iLCJzdGVwX2hpZ2hsaWdodCIsInNldEF0dHJpYnV0ZSIsInBsYWNlbWVudCIsInBvcG92ZXJJbm5lciIsInRpdGxlIiwiYXBwZW5kIiwiaW5uZXJUZXh0IiwiY29udGVudCIsImlubmVySFRNTCIsInNob3dCdG5zIiwiQm9vbGVhbiIsImJ0bk5leHQiLCJidG5CYWNrIiwidGV4dCIsImJhY2tncm91bmRDb2xvciIsImNvbG9yIiwidGV4dENvbG9yIiwiYXJyb3ciLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJwb3NpdGlvblBvcG92ZXIiLCJzY3JvbGxJbnRvVmlldyIsImJlaGF2aW9yIiwiYmxvY2siLCJpbmxpbmUiLCJvdmVybGF5IiwidG9wIiwibGVmdCIsInJpZ2h0IiwiYm90dG9tIiwicmVtb3ZlIiwicG9wdXAiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInJlbW92ZUF0dHJpYnV0ZSIsImhlaWdodCIsImlubmVySGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiaW5uZXJXaWR0aCIsImNsaWVudFdpZHRoIiwiZWwiLCJfeCIsIl95IiwiaXNOYU4iLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwic2Nyb2xsTGVmdCIsInNjcm9sbFRvcCIsIm9mZnNldFBhcmVudCIsImdldENvbXB1dGVkU3R5bGUiLCJtYXRyaXgiLCJET01NYXRyaXhSZWFkT25seSIsInRyYW5zZm9ybSIsInRyYW5zbGF0ZVgiLCJNYXRoIiwiYWJzIiwib2Zmc2V0V2lkdGgiLCJtNDEiLCJ0cmFuc2xhdGVZIiwib2Zmc2V0SGVpZ2h0IiwibTQyIiwiZ2V0T2Zmc2V0IiwiZ2V0VHJhbnNsYXRlWFkiLCJzdHJhdGVneSIsImVsX3RvcCIsImVsX2xlZnQiLCJnZXRFbGVtZW50UG9zaXRpb24iLCJyZXBsYWNlIiwidHJpbSIsIm5ld19hcnJvdyIsInNjcm9sbFRvIiwib3ZlcmxheTEiLCJvdmVybGF5MiIsIm92ZXJsYXkzIiwib3ZlcmxheTQiLCJoaWdobGlnaHRfb2Zmc2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQUFxQkE7RUFDakIscUJBQTBCO0VBQUEsUUFBZEMsT0FBYyx1RUFBSixFQUFJOztFQUFBOztFQUN0QixRQUFJLENBQUMsQ0FBQyxLQUFLQyxXQUFMLENBQWlCQyxRQUF2QixFQUFpQztFQUM3QixhQUFPLEtBQUtELFdBQUwsQ0FBaUJDLFFBQXhCO0VBQ0g7O0VBRUQsU0FBS0QsV0FBTCxDQUFpQkMsUUFBakIsR0FBNEIsSUFBNUI7RUFFQSxTQUFLRixPQUFMO0VBQ0lHLE1BQUFBLE9BQU8sRUFBRSxJQURiO0VBRUlDLE1BQUFBLE9BQU8sRUFBRSxHQUZiO0VBR0lDLE1BQUFBLE1BQU0sRUFBRSxFQUhaO0VBSUlDLE1BQUFBLFlBQVksRUFBRSxDQUpsQjtFQUtJQyxNQUFBQSxVQUFVLEVBQUUsSUFMaEI7RUFNSUMsTUFBQUEsU0FBUyxFQUFFLElBTmY7RUFPSUMsTUFBQUEsZUFBZSxFQUFFLENBUHJCO0VBUUlDLE1BQUFBLFFBQVEsRUFBRSxJQVJkO0VBU0lDLE1BQUFBLEtBQUssRUFBRSxPQVRYO0VBVUlDLE1BQUFBLE1BQU0sRUFB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