@ts-core/angular 17.0.24 → 17.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -153,10 +153,10 @@ export class ViewUtil {
153
153
  //
154
154
  // --------------------------------------------------------------------------
155
155
  static getStageWidth() {
156
- return ViewUtil.window.innerWidth || ViewUtil.document.body.clientWidth;
156
+ return ViewUtil.document.body?.clientWidth || ViewUtil.window.innerWidth;
157
157
  }
158
158
  static getStageHeight() {
159
- return ViewUtil.window.innerHeight || ViewUtil.document.body.clientHeight;
159
+ return ViewUtil.document.body?.clientHeight || ViewUtil.window.innerHeight;
160
160
  }
161
161
  static getCanvasContext2d(container, options) {
162
162
  let canvas = ViewUtil.parseElement(container);
@@ -586,4 +586,4 @@ export class ViewUtil {
586
586
  ViewUtil.removeChild(object.parentNode, object);
587
587
  }
588
588
  }
589
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlld1V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9WaWV3VXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThDLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sUUFBUTtJQUNqQiw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLFlBQVk7SUFDWixFQUFFO0lBQ0YsNkVBQTZFO0lBRXJFLE1BQU0sQ0FBQyxTQUFTLEdBQWMsSUFBSSxDQUFDO0lBQ25DLE1BQU0sQ0FBQyxTQUFTLEdBQWEsSUFBSSxDQUFDO0lBRW5DLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksYUFBYSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBQ00sTUFBTSxLQUFLLFFBQVEsQ0FBQyxLQUFnQjtRQUN2QyxJQUFJLEtBQUssS0FBSyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0IsT0FBTztRQUNYLENBQUM7UUFDRCxRQUFRLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxLQUFLLFFBQVE7UUFDdEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDeEUsQ0FBQztJQUNNLE1BQU0sS0FBSyxRQUFRLENBQUMsS0FBZTtRQUN0QyxRQUFRLENBQUMsU0FB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QUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzFCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUNELFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBSZW5kZXJlclN0eWxlRmxhZ3MyLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFeHRlbmRlZEVycm9yIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNsYXNzIFZpZXdVdGlsIHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdENvbnN0YW50c1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByaXZhdGUgc3RhdGljIF9yZW5kZXJlcjogUmVuZGVyZXIyID0gbnVsbDtcbiAgICBwcml2YXRlIHN0YXRpYyBfZG9jdW1lbnQ6IERvY3VtZW50ID0gbnVsbDtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IHJlbmRlcmVyKCk6IFJlbmRlcmVyMiB7XG4gICAgICAgIGlmIChfLmlzTmlsKFZpZXdVdGlsLl9yZW5kZXJlcikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFeHRlbmRlZEVycm9yKGBWaWV3VXRpbCBpcyBub3QgaW5pdGlhbGl6ZWQ6IHJlbmRlcmVyIGluIG5pbGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBWaWV3VXRpbC5fcmVuZGVyZXI7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgc2V0IHJlbmRlcmVyKHZhbHVlOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBWaWV3VXRpbC5fcmVuZGVyZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBWaWV3VXRpbC5fcmVuZGVyZXIgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCBkb2N1bWVudCgpOiBEb2N1bWVudCB7XG4gICAgICAgIHJldHVybiAhXy5pc05pbChWaWV3VXRpbC5fZG9jdW1lbnQpID8gVmlld1V0aWwuX2RvY3VtZW50IDogZG9jdW1lbnQ7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgc2V0IGRvY3VtZW50KHZhbHVlOiBEb2N1bWVudCkge1xuICAgICAgICBWaWV3VXRpbC5fZG9jdW1lbnQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCB3aW5kb3coKTogV2luZG93IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcml2YXRlIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIHN0YXRpYyBjb3B5VG9DbGlwYm9hcmQoKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5kb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdENvbW1vbiBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZUVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQ+KGVsZW1lbnQ6IElWaWV3RWxlbWVudDxUPik6IFQge1xuICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudCBhcyBUO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIV8uaXNOaWwoZWxlbWVudCkgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlQmFzZTY0KGVsZW1lbnQ6IEhUTUxJbWFnZUVsZW1lbnQgfCBIVE1MQ2FudmFzRWxlbWVudCB8IEhUTUxWaWRlb0VsZW1lbnQpOiBzdHJpbmcge1xuICAgICAgICBsZXQgdmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgY2FudmFzID0gVmlld1V0aWwuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIFZpZXdVdGlsLnNldFByb3BlcnR5KGNhbnZhcywgJ3dpZHRoJywgZWxlbWVudC5vZmZzZXRXaWR0aCk7XG4gICAgICAgIFZpZXdVdGlsLnNldFByb3BlcnR5KGNhbnZhcywgJ2hlaWdodCcsIGVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGVsZW1lbnQsIDAsIDAsIGVsZW1lbnQub2Zmc2V0V2lkdGgsIGVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcbiAgICAgICAgICAgIHZhbHVlID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIDEuMCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJywgJycpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2VsZWN0Q29udGVudChjb250YWluZXI6IElWaWV3RWxlbWVudCwgaXNOZWVkQ29weVRvQ2xpcGJvYXJkOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChjb250YWluZXIgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IGNvbnRhaW5lciBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGxldCBpc1dhc0Rpc2FibGVkID0gY29udGFpbmVyLmRpc2FibGVkO1xuICAgICAgICAgICAgaWYgKGlzV2FzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRhaW5lci5zZWxlY3QoKTtcbiAgICAgICAgICAgIGlmIChpc05lZWRDb3B5VG9DbGlwYm9hcmQpIHtcbiAgICAgICAgICAgICAgICBWaWV3VXRpbC5jb3B5VG9DbGlwYm9hcmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1dhc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3Rpb24gPSBWaWV3VXRpbC53aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG5cbiAgICAgICAgICAgIGxldCByYW5nZSA9IFZpZXdVdGlsLmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgICAgICBpZiAoIV8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhjb250YWluZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcblxuICAgICAgICAgICAgaWYgKGlzTmVlZENvcHlUb0NsaXBib2FyZCkge1xuICAgICAgICAgICAgICAgIFZpZXdVdGlsLmNvcHlUb0NsaXBib2FyZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRCYWNrZ3JvdW5kKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBpbWFnZTogc3RyaW5nLCByZXBlYXQ6IHN0cmluZyA9ICdyZXBlYXQnLCBlcnJvcj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc05pbChpbWFnZSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbW92ZVN0eWxlKGNvbnRhaW5lciwgJ2JhY2tncm91bmRJbWFnZScpO1xuICAgICAgICAgICAgVmlld1V0aWwucmVtb3ZlU3R5bGUoY29udGFpbmVyLCAnYmFja2dyb3VuZFJlcGVhdCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaW1hZ2UgPSBWaWV3VXRpbC5nZXRCYWNrZ3JvdW5kVXJsKGltYWdlKTtcbiAgICAgICAgaWYgKCFfLmlzRW1wdHkoZXJyb3IpKSB7XG4gICAgICAgICAgICBpbWFnZSArPSBgLCAke1ZpZXdVdGlsLmdldEJhY2tncm91bmRVcmwoZXJyb3IpfWA7XG4gICAgICAgIH1cblxuICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZShjb250YWluZXIsICdiYWNrZ3JvdW5kSW1hZ2UnLCBpbWFnZSk7XG4gICAgICAgIFZpZXdVdGlsLnNldFN0eWxlKGNvbnRhaW5lciwgJ2JhY2tncm91bmRSZXBlYXQnLCByZXBlYXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QmFja2dyb3VuZFVybChpdGVtOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gIWl0ZW0uaW5jbHVkZXMoJ3VybCgnKSA/IGB1cmwoJHtpdGVtfSlgIDogaXRlbTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdENoaWxkIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUVsZW1lbnQ8VCA9IGFueT4obmFtZTogc3RyaW5nLCBjbGFzc05hbWU/OiBzdHJpbmcsIGlubmVySFRNTD86IHN0cmluZyk6IFQge1xuICAgICAgICBsZXQgZWxlbWVudCA9IFZpZXdVdGlsLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQobmFtZSk7XG4gICAgICAgIGlmICghXy5pc05pbChuYW1lKSkge1xuICAgICAgICAgICAgVmlld1V0aWwuc2V0UHJvcGVydHkoZWxlbWVudCwgJ2NsYXNzTmFtZScsIGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmlsKGlubmVySFRNTCkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnNldFByb3BlcnR5KGVsZW1lbnQsICdpbm5lckhUTUwnLCBpbm5lckhUTUwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXBwZW5kQ2hpbGQocGFyZW50OiBhbnksIGNoaWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHBhcmVudCkgJiYgIV8uaXNOaWwoY2hpbGQpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQ2hpbGQocGFyZW50OiBhbnksIGNoaWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHBhcmVudCkgJiYgIV8uaXNOaWwoY2hpbGQpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnQsIGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdG9nZ2xlQ2hpbGQoY29udGFpbmVyOiBOb2RlLCBjaGlsZDogTm9kZSwgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgbGV0IGlzQ29udGFpbnMgPSBjb250YWluZXIuY29udGFpbnMoY2hpbGQpO1xuICAgICAgICBpZiAodmFsdWUgJiYgIWlzQ29udGFpbnMpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLmFwcGVuZENoaWxkKGNvbnRhaW5lciwgY2hpbGQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsdWUgJiYgaXNDb250YWlucykge1xuICAgICAgICAgICAgVmlld1V0aWwucmVtb3ZlQ2hpbGQoY29udGFpbmVyLCBjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdFNpemUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U3RhZ2VXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gVmlld1V0aWwud2luZG93LmlubmVyV2lkdGggfHwgVmlld1V0aWwuZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFN0YWdlSGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBWaWV3VXRpbC53aW5kb3cuaW5uZXJIZWlnaHQgfHwgVmlld1V0aWwuZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRDYW52YXNDb250ZXh0MmQoY29udGFpbmVyOiBJVmlld0VsZW1lbnQ8SFRNTENhbnZhc0VsZW1lbnQ+LCBvcHRpb25zPzogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEU2V0dGluZ3MpOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQge1xuICAgICAgICBsZXQgY2FudmFzID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gY2FudmFzLmdldENvbnRleHQoJzJkJywgb3B0aW9ucyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Qm91bmRpbmdSZWN0YW5nbGUoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBET01SZWN0IHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikgfHwgXy5pc05pbChjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB4OiBOYU4sXG4gICAgICAgICAgICAgICAgeTogTmFOLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBOYU4sXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBOYU4sXG4gICAgICAgICAgICAgICAgdG9wOiBOYU4sXG4gICAgICAgICAgICAgICAgcmlnaHQ6IE5hTixcbiAgICAgICAgICAgICAgICBsZWZ0OiBOYU4sXG4gICAgICAgICAgICAgICAgYm90dG9tOiBOYU5cbiAgICAgICAgICAgIH0gYXMgRE9NUmVjdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0V2lkdGgoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KFZpZXdVdGlsLmdldFN0eWxlKGNvbnRhaW5lciwgJ3dpZHRoJykpO1xuICAgICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gVmlld1V0aWwuZ2V0Qm91bmRpbmdSZWN0YW5nbGUoY29udGFpbmVyKS53aWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gY29udGFpbmVyLm9mZnNldFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNldFdpZHRoKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCB2YWx1ZTogbnVtYmVyLCBpc05lZWRDaGVja0xpbWl0czogYm9vbGVhbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikgfHwgXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGlzTmVlZENoZWNrTGltaXRzICYmXG4gICAgICAgICAgICAodmFsdWUgPCBWaWV3VXRpbC5nZXRNaW5XaWR0aChjb250YWluZXIpIHx8IHZhbHVlID4gVmlld1V0aWwuZ2V0TWF4V2lkdGgoY29udGFpbmVyKSB8fCB2YWx1ZSA9PT0gVmlld1V0aWwuZ2V0V2lkdGgoY29udGFpbmVyKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZShjb250YWluZXIsICd3aWR0aCcsIHZhbHVlICsgJ3B4Jyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TWF4V2lkdGgoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCAnbWF4V2lkdGgnKSk7XG4gICAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TWluV2lkdGgoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCAnbWluV2lkdGgnKSk7XG4gICAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEhlaWdodChjb250YWluZXI6IElWaWV3RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsICdoZWlnaHQnKSk7XG4gICAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBWaWV3VXRpbC5nZXRCb3VuZGluZ1JlY3RhbmdsZShjb250YWluZXIpLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gY29udGFpbmVyLm9mZnNldEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgc2V0SGVpZ2h0KGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCB2YWx1ZTogbnVtYmVyLCBpc05lZWRDaGVja0xpbWl0czogYm9vbGVhbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikgfHwgXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBpc05lZWRDaGVja0xpbWl0cyAmJlxuICAgICAgICAgICAgKHZhbHVlIDwgVmlld1V0aWwuZ2V0TWluSGVpZ2h0KGNvbnRhaW5lcikgfHwgdmFsdWUgPiBWaWV3VXRpbC5nZXRNYXhIZWlnaHQoY29udGFpbmVyKSB8fCB2YWx1ZSA9PT0gVmlld1V0aWwuZ2V0SGVpZ2h0KGNvbnRhaW5lcikpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIFZpZXdVdGlsLnNldFN0eWxlKGNvbnRhaW5lciwgJ2hlaWdodCcsIHZhbHVlICsgJ3B4Jyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldE1heEhlaWdodChjb250YWluZXI6IElWaWV3RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsICdtYXhIZWlnaHQnKSk7XG4gICAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldE1pbkhlaWdodChjb250YWluZXI6IElWaWV3RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsICdtaW5IZWlnaHQnKSk7XG4gICAgICAgIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzaXplKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgaXNOZWVkQ2hlY2tMaW1pdHM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgVmlld1V0aWwuc2V0V2lkdGgoY29udGFpbmVyLCB3aWR0aCwgaXNOZWVkQ2hlY2tMaW1pdHMpO1xuICAgICAgICBWaWV3VXRpbC5zZXRIZWlnaHQoY29udGFpbmVyLCBoZWlnaHQsIGlzTmVlZENoZWNrTGltaXRzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFgoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCAnbGVmdCcpKTtcbiAgICAgICAgcmV0dXJuIF8uaXNOYU4odmFsdWUpID8gMCA6IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0WChjb250YWluZXI6IElWaWV3RWxlbWVudCwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwoY29udGFpbmVyKSAmJiAhXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnNldFN0eWxlKGNvbnRhaW5lciwgJ2xlZnQnLCB2YWx1ZSArICdweCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRZKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KFZpZXdVdGlsLmdldFN0eWxlKGNvbnRhaW5lciwgJ3RvcCcpKTtcbiAgICAgICAgcmV0dXJuIF8uaXNOYU4odmFsdWUpID8gMCA6IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIHNldFkoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKGNvbnRhaW5lcikgJiYgIV8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZShjb250YWluZXIsICd0b3AnLCB2YWx1ZSArICdweCcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgbW92ZShjb250YWluZXI6IElWaWV3RWxlbWVudCwgeDogbnVtYmVyLCB5OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgVmlld1V0aWwuc2V0WChjb250YWluZXIsIHgpO1xuICAgICAgICBWaWV3VXRpbC5zZXRZKGNvbnRhaW5lciwgeSk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRGb2N1cyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHN0YXRpYyBmb2N1c0lucHV0KGlucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBsZXQgY2FyZXRJbmRleCA9IDA7XG4gICAgICAgIGlmICghXy5pc05pbChpbnB1dC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNhcmV0SW5kZXggPSBNYXRoLm1heCgwLCBpbnB1dC52YWx1ZS50b1N0cmluZygpLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoY2FyZXRJbmRleCwgY2FyZXRJbmRleCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRDbGFzc2VzIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGFkZENsYXNzKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKF8uaXNFbXB0eShuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoIV8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgVmlld1V0aWwucmVuZGVyZXIuYWRkQ2xhc3MoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkQ2xhc3Nlcyhjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZXM6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc0VtcHR5KG5hbWVzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG5hbWVzLnNwbGl0KCcgJykuZm9yRWFjaChuYW1lID0+IFZpZXdVdGlsLmFkZENsYXNzKGNvbnRhaW5lciwgbmFtZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQ2xhc3MoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc0VtcHR5KG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmICghXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5yZW1vdmVDbGFzcyhjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVDbGFzc2VzKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lczogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChfLmlzRW1wdHkobmFtZXMpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbmFtZXMuc3BsaXQoJyAnKS5mb3JFYWNoKG5hbWUgPT4gVmlld1V0aWwucmVtb3ZlQ2xhc3MoY29udGFpbmVyLCBuYW1lKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBoYXNDbGFzcyhjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIHJldHVybiAhXy5pc05pbChjb250YWluZXIpID8gY29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucyhuYW1lKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdG9nZ2xlQ2xhc3MoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5hZGRDbGFzcyhjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgVmlld1V0aWwucmVtb3ZlQ2xhc3MoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdG9nZ2xlQ2xhc3Nlcyhjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLmFkZENsYXNzZXMoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbW92ZUNsYXNzZXMoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UHJvcGVydHkoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKGNvbnRhaW5lcikgPyBjb250YWluZXJbbmFtZV0gOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0UHJvcGVydHkoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkgfHwgXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmlsKHZhbHVlKSkge1xuICAgICAgICAgICAgVmlld1V0aWwucmVuZGVyZXIuc2V0UHJvcGVydHkoY29udGFpbmVyLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW1vdmVQcm9wZXJ0eShjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVQcm9wZXJ0eShjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIFZpZXdVdGlsLnJlbW92ZUF0dHJpYnV0ZShjb250YWluZXIsIG5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXR0cmlidXRlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoXy5pc05pbChuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIHJldHVybiAhXy5pc05pbChjb250YWluZXIpID8gY29udGFpbmVyLmdldEF0dHJpYnV0ZShuYW1lKSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVBdHRyaWJ1dGUoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkgfHwgXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgVmlld1V0aWwucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKGNvbnRhaW5lciwgbmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRBdHRyaWJ1dGUoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkgfHwgXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmlsKHZhbHVlKSkge1xuICAgICAgICAgICAgVmlld1V0aWwucmVuZGVyZXIuc2V0QXR0cmlidXRlKGNvbnRhaW5lciwgbmFtZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgVmlld1V0aWwucmVtb3ZlQXR0cmlidXRlKGNvbnRhaW5lciwgbmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFN0eWxlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkgfHwgXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGFpbmVyLnN0eWxlW25hbWVdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0U3R5bGUoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgZmxhZ3M/OiBSZW5kZXJlclN0eWxlRmxhZ3MyKTogdm9pZCB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoXy5pc05pbChuYW1lKSB8fCBfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgIT09IFZpZXdVdGlsLmdldFN0eWxlKGNvbnRhaW5lciwgbmFtZSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbmRlcmVyLnNldFN0eWxlKGNvbnRhaW5lciwgbmFtZSwgdmFsdWUsIGZsYWdzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlU3R5bGUoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZywgZmxhZ3M/OiBSZW5kZXJlclN0eWxlRmxhZ3MyKTogdm9pZCB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoXy5pc05pbChuYW1lKSB8fCBfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5yZW1vdmVTdHlsZShjb250YWluZXIsIG5hbWUsIGZsYWdzKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdFZpZGVvIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVZpZGVvKGlzTXV0ZTogYm9vbGVhbiA9IHRydWUsIGlzSW5saW5lOiBib29sZWFuID0gZmFsc2UpOiBIVE1MVmlkZW9FbGVtZW50IHtcbiAgICAgICAgbGV0IHZpZGVvID0gVmlld1V0aWwuY3JlYXRlRWxlbWVudCgndmlkZW8nKTtcbiAgICAgICAgVmlld1V0aWwuc2V0UHJvcGVydHkodmlkZW8sICdhdXRvcGxheScsIHRydWUpO1xuICAgICAgICBpZiAoaXNNdXRlKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5zZXRWaWRlb011dGVQYXJhbWV0ZXJzKHZpZGVvLCBpc011dGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0lubGluZSkge1xuICAgICAgICAgICAgVmlld1V0aWwuc2V0VmlkZW9JbmxpbmVQYXJhbWV0ZXJzKHZpZGVvKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmlkZW87XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRWaWRlb011dGVQYXJhbWV0ZXJzKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50LCBpc011dGU6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbCh2aWRlbykpIHtcbiAgICAgICAgICAgIHZpZGVvLm11dGVkID0gdmlkZW8uZGVmYXVsdE11dGVkID0gaXNNdXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRWaWRlb0lubGluZVBhcmFtZXRlcnModmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgVmlld1V0aWwuc2V0QXR0cmlidXRlKHZpZGVvLCAnd2Via2l0LXBsYXlzaW5saW5lJywgMSk7XG4gICAgICAgIFZpZXdVdGlsLnNldEF0dHJpYnV0ZSh2aWRlbywgJ3BsYXlzaW5saW5lJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRWaWRlb0Vycm9yKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKF8uaXNOaWwodmlkZW8pIHx8IF8uaXNOaWwodmlkZW8uZXJyb3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlcnJvcjogTWVkaWFFcnJvciA9IHZpZGVvLmVycm9yO1xuICAgICAgICBsZXQgdmFsdWUgPSAnVmlkZW8gZXJyb3IgJyArIHZpZGVvLnNyYyArICcsICc7XG4gICAgICAgIHN3aXRjaCAoZXJyb3IuY29kZSkge1xuICAgICAgICAgICAgY2FzZSBNZWRpYUVycm9yLk1FRElBX0VSUl9BQk9SVEVEOlxuICAgICAgICAgICAgICAgIHZhbHVlICs9ICdtZWRpYSBhYm9ydGVkJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTWVkaWFFcnJvci5NRURJQV9FUlJfREVDT0RFOlxuICAgICAgICAgICAgICAgIHZhbHVlICs9ICdlcnJvciB0byBkZWNvZGUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBNZWRpYUVycm9yLk1FRElBX0VSUl9ORVRXT1JLOlxuICAgICAgICAgICAgICAgIHZhbHVlICs9ICduZXR3b3JrIGVycm9yJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTWVkaWFFcnJvci5NRURJQV9FUlJfU1JDX05PVF9TVVBQT1JURUQ6XG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJ3NvdXJjZSBub3Qgc3VwcG9ydGVkJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBwbGF5VmlkZW8odmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKF8uaXNOaWwodmlkZW8pKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdmlkZW8ucGxheSgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcGxheUF1ZGlvKGF1ZGlvOiBIVE1MQXVkaW9FbGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChfLmlzTmlsKGF1ZGlvKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhdWRpby5wbGF5KCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBwYXVzZVZpZGVvKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbCh2aWRlbykpIHtcbiAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzVmlkZW9QbGF5aW5nKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhXy5pc05pbCh2aWRlbykgPyAhdmlkZW8ucGF1c2VkICYmICF2aWRlby5lbmRlZCA6IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbG9hZFZpZGVvKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbCh2aWRlbykpIHtcbiAgICAgICAgICAgIHZpZGVvLmxvYWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3RvcFZpZGVvSWZOZWVkKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbCh2aWRlbykgJiYgKCFfLmlzTmlsKHZpZGVvLnNyYykgfHwgIV8uaXNOaWwodmlkZW8uc3JjT2JqZWN0KSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnN0b3BWaWRlbyh2aWRlbyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHN0b3BWaWRlbyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc05pbCh2aWRlbykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2aWRlby5zcmNPYmplY3QgaW5zdGFuY2VvZiBNZWRpYVN0cmVhbSkge1xuICAgICAgICAgICAgbGV0IHRyYWNrcyA9IHZpZGVvLnNyY09iamVjdC5nZXRUcmFja3MoKTtcbiAgICAgICAgICAgIHRyYWNrcy5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2aWRlby5zcmNPYmplY3QgPSBudWxsO1xuXG4gICAgICAgIHZpZGVvLnBhdXNlKCk7XG4gICAgICAgIHZpZGVvLnNyYyA9ICcnO1xuICAgICAgICB2aWRlby5sb2FkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBkaXNwb3NlVmlkZW8odmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgVmlld1V0aWwuc3RvcFZpZGVvKHZpZGVvKTtcbiAgICAgICAgVmlld1V0aWwucmVtb3ZlQ2hpbGQodmlkZW8ucGFyZW50Tm9kZSwgdmlkZW8pO1xuICAgICAgICB2aWRlby5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRpc3Bvc2VWaWRlb3MoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGZvciAobGV0IGkgPSBjb250YWluZXIuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBpdGVtID0gY29udGFpbmVyLmNoaWxkcmVuLml0ZW0oaSk7XG4gICAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBWaWV3VXRpbC5kaXNwb3NlVmlkZW8oaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdE9iamVjdCBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHN0YXRpYyBkaXNwb3NlT2JqZWN0cyhjb250YWluZXI6IElWaWV3RWxlbWVudCwgaXNJRUJyb3dzZXI/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBmb3IgKGxldCBpID0gY29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgaXRlbSA9IGNvbnRhaW5lci5jaGlsZHJlbi5pdGVtKGkpO1xuICAgICAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBIVE1MT2JqZWN0RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIFZpZXdVdGlsLmRpc3Bvc2VPYmplY3QoaXRlbSwgaXNJRUJyb3dzZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBkaXNwb3NlT2JqZWN0KG9iamVjdDogSFRNTE9iamVjdEVsZW1lbnQsIGlzSUVCcm93c2VyPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoaXNJRUJyb3dzZXIgJiYgb2JqZWN0WydyZWFkeVN0YXRlJ10gPT09IDQpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uaXNGdW5jdGlvbihvYmplY3RbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdFtpXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFZpZXdVdGlsLnJlbW92ZUNoaWxkKG9iamVjdC5wYXJlbnROb2RlLCBvYmplY3QpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgSVZpZXdFbGVtZW50PFQgZXh0ZW5kcyBIVE1MRWxlbWVudCA9IEhUTUxFbGVtZW50PiA9IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZjxUPiB8IFZpZXdDb250YWluZXJSZWY7XG4iXX0=
589
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlld1V0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9WaWV3VXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQThDLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sUUFBUTtJQUNqQiw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLFlBQVk7SUFDWixFQUFFO0lBQ0YsNkVBQTZFO0lBRXJFLE1BQU0sQ0FBQyxTQUFTLEdBQWMsSUFBSSxDQUFDO0lBQ25DLE1BQU0sQ0FBQyxTQUFTLEdBQWEsSUFBSSxDQUFDO0lBRW5DLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksYUFBYSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBQ00sTUFBTSxLQUFLLFFBQVEsQ0FBQyxLQUFnQjtRQUN2QyxJQUFJLEtBQUssS0FBSyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0IsT0FBTztRQUNYLENBQUM7UUFDRCxRQUFRLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTSxLQUFLLFFBQVE7UUFDdEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDeEUsQ0FBQztJQUNNLE1BQU0sS0FBSyxRQUFRLENBQUMsS0FBZTtRQUN0QyxRQUFRLENBQUMsU0FB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QUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzFCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUNELFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBSZW5kZXJlclN0eWxlRmxhZ3MyLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFeHRlbmRlZEVycm9yIH0gZnJvbSAnQHRzLWNvcmUvY29tbW9uJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNsYXNzIFZpZXdVdGlsIHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdENvbnN0YW50c1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByaXZhdGUgc3RhdGljIF9yZW5kZXJlcjogUmVuZGVyZXIyID0gbnVsbDtcbiAgICBwcml2YXRlIHN0YXRpYyBfZG9jdW1lbnQ6IERvY3VtZW50ID0gbnVsbDtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IHJlbmRlcmVyKCk6IFJlbmRlcmVyMiB7XG4gICAgICAgIGlmIChfLmlzTmlsKFZpZXdVdGlsLl9yZW5kZXJlcikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFeHRlbmRlZEVycm9yKGBWaWV3VXRpbCBpcyBub3QgaW5pdGlhbGl6ZWQ6IHJlbmRlcmVyIGluIG5pbGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBWaWV3VXRpbC5fcmVuZGVyZXI7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgc2V0IHJlbmRlcmVyKHZhbHVlOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBWaWV3VXRpbC5fcmVuZGVyZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBWaWV3VXRpbC5fcmVuZGVyZXIgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCBkb2N1bWVudCgpOiBEb2N1bWVudCB7XG4gICAgICAgIHJldHVybiAhXy5pc05pbChWaWV3VXRpbC5fZG9jdW1lbnQpID8gVmlld1V0aWwuX2RvY3VtZW50IDogZG9jdW1lbnQ7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgc2V0IGRvY3VtZW50KHZhbHVlOiBEb2N1bWVudCkge1xuICAgICAgICBWaWV3VXRpbC5fZG9jdW1lbnQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCB3aW5kb3coKTogV2luZG93IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vXHRQcml2YXRlIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIHN0YXRpYyBjb3B5VG9DbGlwYm9hcmQoKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5kb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdENvbW1vbiBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZUVsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQ+KGVsZW1lbnQ6IElWaWV3RWxlbWVudDxUPik6IFQge1xuICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudCBhcyBUO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIV8uaXNOaWwoZWxlbWVudCkgPyBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlQmFzZTY0KGVsZW1lbnQ6IEhUTUxJbWFnZUVsZW1lbnQgfCBIVE1MQ2FudmFzRWxlbWVudCB8IEhUTUxWaWRlb0VsZW1lbnQpOiBzdHJpbmcge1xuICAgICAgICBsZXQgdmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgY2FudmFzID0gVmlld1V0aWwuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIFZpZXdVdGlsLnNldFByb3BlcnR5KGNhbnZhcywgJ3dpZHRoJywgZWxlbWVudC5vZmZzZXRXaWR0aCk7XG4gICAgICAgIFZpZXdVdGlsLnNldFByb3BlcnR5KGNhbnZhcywgJ2hlaWdodCcsIGVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGVsZW1lbnQsIDAsIDAsIGVsZW1lbnQub2Zmc2V0V2lkdGgsIGVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcbiAgICAgICAgICAgIHZhbHVlID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIDEuMCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJywgJycpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2VsZWN0Q29udGVudChjb250YWluZXI6IElWaWV3RWxlbWVudCwgaXNOZWVkQ29weVRvQ2xpcGJvYXJkOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChjb250YWluZXIgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IGNvbnRhaW5lciBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGxldCBpc1dhc0Rpc2FibGVkID0gY29udGFpbmVyLmRpc2FibGVkO1xuICAgICAgICAgICAgaWYgKGlzV2FzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRhaW5lci5zZWxlY3QoKTtcbiAgICAgICAgICAgIGlmIChpc05lZWRDb3B5VG9DbGlwYm9hcmQpIHtcbiAgICAgICAgICAgICAgICBWaWV3VXRpbC5jb3B5VG9DbGlwYm9hcmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1dhc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3Rpb24gPSBWaWV3VXRpbC53aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG5cbiAgICAgICAgICAgIGxldCByYW5nZSA9IFZpZXdVdGlsLmRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgICAgICBpZiAoIV8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhjb250YWluZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcblxuICAgICAgICAgICAgaWYgKGlzTmVlZENvcHlUb0NsaXBib2FyZCkge1xuICAgICAgICAgICAgICAgIFZpZXdVdGlsLmNvcHlUb0NsaXBib2FyZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRCYWNrZ3JvdW5kKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBpbWFnZTogc3RyaW5nLCByZXBlYXQ6IHN0cmluZyA9ICdyZXBlYXQnLCBlcnJvcj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc05pbChpbWFnZSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbW92ZVN0eWxlKGNvbnRhaW5lciwgJ2JhY2tncm91bmRJbWFnZScpO1xuICAgICAgICAgICAgVmlld1V0aWwucmVtb3ZlU3R5bGUoY29udGFpbmVyLCAnYmFja2dyb3VuZFJlcGVhdCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaW1hZ2UgPSBWaWV3VXRpbC5nZXRCYWNrZ3JvdW5kVXJsKGltYWdlKTtcbiAgICAgICAgaWYgKCFfLmlzRW1wdHkoZXJyb3IpKSB7XG4gICAgICAgICAgICBpbWFnZSArPSBgLCAke1ZpZXdVdGlsLmdldEJhY2tncm91bmRVcmwoZXJyb3IpfWA7XG4gICAgICAgIH1cblxuICAgICAgICBWaWV3VXRpbC5zZXRTdHlsZShjb250YWluZXIsICdiYWNrZ3JvdW5kSW1hZ2UnLCBpbWFnZSk7XG4gICAgICAgIFZpZXdVdGlsLnNldFN0eWxlKGNvbnRhaW5lciwgJ2JhY2tncm91bmRSZXBlYXQnLCByZXBlYXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QmFja2dyb3VuZFVybChpdGVtOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gIWl0ZW0uaW5jbHVkZXMoJ3VybCgnKSA/IGB1cmwoJHtpdGVtfSlgIDogaXRlbTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdENoaWxkIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUVsZW1lbnQ8VCA9IGFueT4obmFtZTogc3RyaW5nLCBjbGFzc05hbWU/OiBzdHJpbmcsIGlubmVySFRNTD86IHN0cmluZyk6IFQge1xuICAgICAgICBsZXQgZWxlbWVudCA9IFZpZXdVdGlsLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQobmFtZSk7XG4gICAgICAgIGlmICghXy5pc05pbChuYW1lKSkge1xuICAgICAgICAgICAgVmlld1V0aWwuc2V0UHJvcGVydHkoZWxlbWVudCwgJ2NsYXNzTmFtZScsIGNsYXNzTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmlsKGlubmVySFRNTCkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnNldFByb3BlcnR5KGVsZW1lbnQsICdpbm5lckhUTUwnLCBpbm5lckhUTUwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXBwZW5kQ2hpbGQocGFyZW50OiBhbnksIGNoaWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHBhcmVudCkgJiYgIV8uaXNOaWwoY2hpbGQpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQ2hpbGQocGFyZW50OiBhbnksIGNoaWxkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHBhcmVudCkgJiYgIV8uaXNOaWwoY2hpbGQpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnQsIGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdG9nZ2xlQ2hpbGQoY29udGFpbmVyOiBOb2RlLCBjaGlsZDogTm9kZSwgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgbGV0IGlzQ29udGFpbnMgPSBjb250YWluZXIuY29udGFpbnMoY2hpbGQpO1xuICAgICAgICBpZiAodmFsdWUgJiYgIWlzQ29udGFpbnMpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLmFwcGVuZENoaWxkKGNvbnRhaW5lciwgY2hpbGQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsdWUgJiYgaXNDb250YWlucykge1xuICAgICAgICAgICAgVmlld1V0aWwucmVtb3ZlQ2hpbGQoY29udGFpbmVyLCBjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdFNpemUgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U3RhZ2VXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gVmlld1V0aWwuZG9jdW1lbnQuYm9keT8uY2xpZW50V2lkdGggfHwgVmlld1V0aWwud2luZG93LmlubmVyV2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRTdGFnZUhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gVmlld1V0aWwuZG9jdW1lbnQuYm9keT8uY2xpZW50SGVpZ2h0IHx8IFZpZXdVdGlsLndpbmRvdy5pbm5lckhlaWdodDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldENhbnZhc0NvbnRleHQyZChjb250YWluZXI6IElWaWV3RWxlbWVudDxIVE1MQ2FudmFzRWxlbWVudD4sIG9wdGlvbnM/OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRTZXR0aW5ncyk6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB7XG4gICAgICAgIGxldCBjYW52YXMgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCBvcHRpb25zKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRCb3VuZGluZ1JlY3RhbmdsZShjb250YWluZXI6IElWaWV3RWxlbWVudCk6IERPTVJlY3Qge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSB8fCBfLmlzTmlsKGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHg6IE5hTixcbiAgICAgICAgICAgICAgICB5OiBOYU4sXG4gICAgICAgICAgICAgICAgd2lkdGg6IE5hTixcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IE5hTixcbiAgICAgICAgICAgICAgICB0b3A6IE5hTixcbiAgICAgICAgICAgICAgICByaWdodDogTmFOLFxuICAgICAgICAgICAgICAgIGxlZnQ6IE5hTixcbiAgICAgICAgICAgICAgICBib3R0b206IE5hTlxuICAgICAgICAgICAgfSBhcyBET01SZWN0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRXaWR0aChjb250YWluZXI6IElWaWV3RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCAnd2lkdGgnKSk7XG4gICAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBWaWV3VXRpbC5nZXRCb3VuZGluZ1JlY3RhbmdsZShjb250YWluZXIpLndpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBjb250YWluZXIub2Zmc2V0V2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0V2lkdGgoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIHZhbHVlOiBudW1iZXIsIGlzTmVlZENoZWNrTGltaXRzOiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSB8fCBfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXNOZWVkQ2hlY2tMaW1pdHMgJiZcbiAgICAgICAgICAgICh2YWx1ZSA8IFZpZXdVdGlsLmdldE1pbldpZHRoKGNvbnRhaW5lcikgfHwgdmFsdWUgPiBWaWV3VXRpbC5nZXRNYXhXaWR0aChjb250YWluZXIpIHx8IHZhbHVlID09PSBWaWV3VXRpbC5nZXRXaWR0aChjb250YWluZXIpKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIFZpZXdVdGlsLnNldFN0eWxlKGNvbnRhaW5lciwgJ3dpZHRoJywgdmFsdWUgKyAncHgnKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRNYXhXaWR0aChjb250YWluZXI6IElWaWV3RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsICdtYXhXaWR0aCcpKTtcbiAgICAgICAgaWYgKF8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRNaW5XaWR0aChjb250YWluZXI6IElWaWV3RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsICdtaW5XaWR0aCcpKTtcbiAgICAgICAgaWYgKF8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SGVpZ2h0KGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KFZpZXdVdGlsLmdldFN0eWxlKGNvbnRhaW5lciwgJ2hlaWdodCcpKTtcbiAgICAgICAgaWYgKF8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IFZpZXdVdGlsLmdldEJvdW5kaW5nUmVjdGFuZ2xlKGNvbnRhaW5lcikuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBjb250YWluZXIub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBzZXRIZWlnaHQoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIHZhbHVlOiBudW1iZXIsIGlzTmVlZENoZWNrTGltaXRzOiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSB8fCBfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGlzTmVlZENoZWNrTGltaXRzICYmXG4gICAgICAgICAgICAodmFsdWUgPCBWaWV3VXRpbC5nZXRNaW5IZWlnaHQoY29udGFpbmVyKSB8fCB2YWx1ZSA+IFZpZXdVdGlsLmdldE1heEhlaWdodChjb250YWluZXIpIHx8IHZhbHVlID09PSBWaWV3VXRpbC5nZXRIZWlnaHQoY29udGFpbmVyKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgVmlld1V0aWwuc2V0U3R5bGUoY29udGFpbmVyLCAnaGVpZ2h0JywgdmFsdWUgKyAncHgnKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TWF4SGVpZ2h0KGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KFZpZXdVdGlsLmdldFN0eWxlKGNvbnRhaW5lciwgJ21heEhlaWdodCcpKTtcbiAgICAgICAgaWYgKF8uaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TWluSGVpZ2h0KGNvbnRhaW5lcjogSVZpZXdFbGVtZW50KTogbnVtYmVyIHtcbiAgICAgICAgaWYgKF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KFZpZXdVdGlsLmdldFN0eWxlKGNvbnRhaW5lciwgJ21pbkhlaWdodCcpKTtcbiAgICAgICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNpemUoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBpc05lZWRDaGVja0xpbWl0czogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBWaWV3VXRpbC5zZXRXaWR0aChjb250YWluZXIsIHdpZHRoLCBpc05lZWRDaGVja0xpbWl0cyk7XG4gICAgICAgIFZpZXdVdGlsLnNldEhlaWdodChjb250YWluZXIsIGhlaWdodCwgaXNOZWVkQ2hlY2tMaW1pdHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0WChjb250YWluZXI6IElWaWV3RWxlbWVudCk6IG51bWJlciB7XG4gICAgICAgIGlmIChfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChWaWV3VXRpbC5nZXRTdHlsZShjb250YWluZXIsICdsZWZ0JykpO1xuICAgICAgICByZXR1cm4gXy5pc05hTih2YWx1ZSkgPyAwIDogdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRYKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbChjb250YWluZXIpICYmICFfLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgVmlld1V0aWwuc2V0U3R5bGUoY29udGFpbmVyLCAnbGVmdCcsIHZhbHVlICsgJ3B4Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFkoY29udGFpbmVyOiBJVmlld0VsZW1lbnQpOiBudW1iZXIge1xuICAgICAgICBpZiAoXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRmxvYXQoVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCAndG9wJykpO1xuICAgICAgICByZXR1cm4gXy5pc05hTih2YWx1ZSkgPyAwIDogdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgc2V0WShjb250YWluZXI6IElWaWV3RWxlbWVudCwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwoY29udGFpbmVyKSAmJiAhXy5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnNldFN0eWxlKGNvbnRhaW5lciwgJ3RvcCcsIHZhbHVlICsgJ3B4Jyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBtb3ZlKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCB4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBWaWV3VXRpbC5zZXRYKGNvbnRhaW5lciwgeCk7XG4gICAgICAgIFZpZXdVdGlsLnNldFkoY29udGFpbmVyLCB5KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdEZvY3VzIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGZvY3VzSW5wdXQoaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGxldCBjYXJldEluZGV4ID0gMDtcbiAgICAgICAgaWYgKCFfLmlzTmlsKGlucHV0LnZhbHVlKSkge1xuICAgICAgICAgICAgY2FyZXRJbmRleCA9IE1hdGgubWF4KDAsIGlucHV0LnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShjYXJldEluZGV4LCBjYXJldEluZGV4KTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy9cdENsYXNzZXMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWRkQ2xhc3MoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc0VtcHR5KG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmICghXy5pc05pbChjb250YWluZXIpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5hZGRDbGFzcyhjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhZGRDbGFzc2VzKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lczogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChfLmlzRW1wdHkobmFtZXMpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbmFtZXMuc3BsaXQoJyAnKS5mb3JFYWNoKG5hbWUgPT4gVmlld1V0aWwuYWRkQ2xhc3MoY29udGFpbmVyLCBuYW1lKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVDbGFzcyhjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChfLmlzRW1wdHkobmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKCFfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGNvbnRhaW5lciwgbmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZUNsYXNzZXMoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWVzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKF8uaXNFbXB0eShuYW1lcykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBuYW1lcy5zcGxpdCgnICcpLmZvckVhY2gobmFtZSA9PiBWaWV3VXRpbC5yZW1vdmVDbGFzcyhjb250YWluZXIsIG5hbWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGhhc0NsYXNzKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKGNvbnRhaW5lcikgPyBjb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKG5hbWUpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB0b2dnbGVDbGFzcyhjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLmFkZENsYXNzKGNvbnRhaW5lciwgbmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW1vdmVDbGFzcyhjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB0b2dnbGVDbGFzc2VzKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgVmlld1V0aWwuYWRkQ2xhc3Nlcyhjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgVmlld1V0aWwucmVtb3ZlQ2xhc3Nlcyhjb250YWluZXIsIG5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0eShjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKF8uaXNOaWwobmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwoY29udGFpbmVyKSA/IGNvbnRhaW5lcltuYW1lXSA6IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRQcm9wZXJ0eShjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoXy5pc05pbChuYW1lKSB8fCBfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIV8uaXNOaWwodmFsdWUpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5zZXRQcm9wZXJ0eShjb250YWluZXIsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnJlbW92ZVByb3BlcnR5KGNvbnRhaW5lciwgbmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZVByb3BlcnR5KGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgVmlld1V0aWwucmVtb3ZlQXR0cmlidXRlKGNvbnRhaW5lciwgbmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBdHRyaWJ1dGUoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKGNvbnRhaW5lcikgPyBjb250YWluZXIuZ2V0QXR0cmlidXRlKG5hbWUpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlbW92ZUF0dHJpYnV0ZShjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoXy5pc05pbChuYW1lKSB8fCBfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUoY29udGFpbmVyLCBuYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNldEF0dHJpYnV0ZShjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoXy5pc05pbChuYW1lKSB8fCBfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIV8uaXNOaWwodmFsdWUpKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoY29udGFpbmVyLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5yZW1vdmVBdHRyaWJ1dGUoY29udGFpbmVyLCBuYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U3R5bGUoY29udGFpbmVyOiBJVmlld0VsZW1lbnQsIG5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGNvbnRhaW5lciA9IFZpZXdVdGlsLnBhcnNlRWxlbWVudChjb250YWluZXIpO1xuICAgICAgICBpZiAoXy5pc05pbChuYW1lKSB8fCBfLmlzTmlsKGNvbnRhaW5lcikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250YWluZXIuc3R5bGVbbmFtZV07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRTdHlsZShjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBmbGFncz86IFJlbmRlcmVyU3R5bGVGbGFnczIpOiB2b2lkIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpIHx8IF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gVmlld1V0aWwuZ2V0U3R5bGUoY29udGFpbmVyLCBuYW1lKSkge1xuICAgICAgICAgICAgVmlld1V0aWwucmVuZGVyZXIuc2V0U3R5bGUoY29udGFpbmVyLCBuYW1lLCB2YWx1ZSwgZmxhZ3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVTdHlsZShjb250YWluZXI6IElWaWV3RWxlbWVudCwgbmFtZTogc3RyaW5nLCBmbGFncz86IFJlbmRlcmVyU3R5bGVGbGFnczIpOiB2b2lkIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChfLmlzTmlsKG5hbWUpIHx8IF8uaXNOaWwoY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIFZpZXdVdGlsLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGNvbnRhaW5lciwgbmFtZSwgZmxhZ3MpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0VmlkZW8gTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlVmlkZW8oaXNNdXRlOiBib29sZWFuID0gdHJ1ZSwgaXNJbmxpbmU6IGJvb2xlYW4gPSBmYWxzZSk6IEhUTUxWaWRlb0VsZW1lbnQge1xuICAgICAgICBsZXQgdmlkZW8gPSBWaWV3VXRpbC5jcmVhdGVFbGVtZW50KCd2aWRlbycpO1xuICAgICAgICBWaWV3VXRpbC5zZXRQcm9wZXJ0eSh2aWRlbywgJ2F1dG9wbGF5JywgdHJ1ZSk7XG4gICAgICAgIGlmIChpc011dGUpIHtcbiAgICAgICAgICAgIFZpZXdVdGlsLnNldFZpZGVvTXV0ZVBhcmFtZXRlcnModmlkZW8sIGlzTXV0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzSW5saW5lKSB7XG4gICAgICAgICAgICBWaWV3VXRpbC5zZXRWaWRlb0lubGluZVBhcmFtZXRlcnModmlkZW8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2aWRlbztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNldFZpZGVvTXV0ZVBhcmFtZXRlcnModmlkZW86IEhUTUxWaWRlb0VsZW1lbnQsIGlzTXV0ZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHZpZGVvKSkge1xuICAgICAgICAgICAgdmlkZW8ubXV0ZWQgPSB2aWRlby5kZWZhdWx0TXV0ZWQgPSBpc011dGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNldFZpZGVvSW5saW5lUGFyYW1ldGVycyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBWaWV3VXRpbC5zZXRBdHRyaWJ1dGUodmlkZW8sICd3ZWJraXQtcGxheXNpbmxpbmUnLCAxKTtcbiAgICAgICAgVmlld1V0aWwuc2V0QXR0cmlidXRlKHZpZGVvLCAncGxheXNpbmxpbmUnLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFZpZGVvRXJyb3IodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiBzdHJpbmcge1xuICAgICAgICBpZiAoXy5pc05pbCh2aWRlbykgfHwgXy5pc05pbCh2aWRlby5lcnJvcikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVycm9yOiBNZWRpYUVycm9yID0gdmlkZW8uZXJyb3I7XG4gICAgICAgIGxldCB2YWx1ZSA9ICdWaWRlbyBlcnJvciAnICsgdmlkZW8uc3JjICsgJywgJztcbiAgICAgICAgc3dpdGNoIChlcnJvci5jb2RlKSB7XG4gICAgICAgICAgICBjYXNlIE1lZGlhRXJyb3IuTUVESUFfRVJSX0FCT1JURUQ6XG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJ21lZGlhIGFib3J0ZWQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBNZWRpYUVycm9yLk1FRElBX0VSUl9ERUNPREU6XG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJ2Vycm9yIHRvIGRlY29kZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE1lZGlhRXJyb3IuTUVESUFfRVJSX05FVFdPUks6XG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gJ25ldHdvcmsgZXJyb3InO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBNZWRpYUVycm9yLk1FRElBX0VSUl9TUkNfTk9UX1NVUFBPUlRFRDpcbiAgICAgICAgICAgICAgICB2YWx1ZSArPSAnc291cmNlIG5vdCBzdXBwb3J0ZWQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHBsYXlWaWRlbyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoXy5pc05pbCh2aWRlbykpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB2aWRlby5wbGF5KCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBwbGF5QXVkaW8oYXVkaW86IEhUTUxBdWRpb0VsZW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKF8uaXNOaWwoYXVkaW8pKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF1ZGlvLnBsYXkoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHBhdXNlVmlkZW8odmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHZpZGVvKSkge1xuICAgICAgICAgICAgdmlkZW8ucGF1c2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNWaWRlb1BsYXlpbmcodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKHZpZGVvKSA/ICF2aWRlby5wYXVzZWQgJiYgIXZpZGVvLmVuZGVkIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBsb2FkVmlkZW8odmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHZpZGVvKSkge1xuICAgICAgICAgICAgdmlkZW8ubG9hZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdG9wVmlkZW9JZk5lZWQodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHZpZGVvKSAmJiAoIV8uaXNOaWwodmlkZW8uc3JjKSB8fCAhXy5pc05pbCh2aWRlby5zcmNPYmplY3QpKSkge1xuICAgICAgICAgICAgVmlld1V0aWwuc3RvcFZpZGVvKHZpZGVvKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3RvcFZpZGVvKHZpZGVvOiBIVE1MVmlkZW9FbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChfLmlzTmlsKHZpZGVvKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZpZGVvLnNyY09iamVjdCBpbnN0YW5jZW9mIE1lZGlhU3RyZWFtKSB7XG4gICAgICAgICAgICBsZXQgdHJhY2tzID0gdmlkZW8uc3JjT2JqZWN0LmdldFRyYWNrcygpO1xuICAgICAgICAgICAgdHJhY2tzLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZpZGVvLnNyY09iamVjdCA9IG51bGw7XG5cbiAgICAgICAgdmlkZW8ucGF1c2UoKTtcbiAgICAgICAgdmlkZW8uc3JjID0gJyc7XG4gICAgICAgIHZpZGVvLmxvYWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRpc3Bvc2VWaWRlbyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBWaWV3VXRpbC5zdG9wVmlkZW8odmlkZW8pO1xuICAgICAgICBWaWV3VXRpbC5yZW1vdmVDaGlsZCh2aWRlby5wYXJlbnROb2RlLCB2aWRlbyk7XG4gICAgICAgIHZpZGVvLnJlbW92ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGlzcG9zZVZpZGVvcyhjb250YWluZXI6IElWaWV3RWxlbWVudCk6IHZvaWQge1xuICAgICAgICBjb250YWluZXIgPSBWaWV3VXRpbC5wYXJzZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGNvbnRhaW5lci5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IGl0ZW0gPSBjb250YWluZXIuY2hpbGRyZW4uaXRlbShpKTtcbiAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgSFRNTFZpZGVvRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIFZpZXdVdGlsLmRpc3Bvc2VWaWRlbyhpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvL1x0T2JqZWN0IE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgc3RhdGljIGRpc3Bvc2VPYmplY3RzKGNvbnRhaW5lcjogSVZpZXdFbGVtZW50LCBpc0lFQnJvd3Nlcj86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29udGFpbmVyID0gVmlld1V0aWwucGFyc2VFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICAgIGZvciAobGV0IGkgPSBjb250YWluZXIuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBpdGVtID0gY29udGFpbmVyLmNoaWxkcmVuLml0ZW0oaSk7XG4gICAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIEhUTUxPYmplY3RFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgVmlld1V0aWwuZGlzcG9zZU9iamVjdChpdGVtLCBpc0lFQnJvd3Nlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRpc3Bvc2VPYmplY3Qob2JqZWN0OiBIVE1MT2JqZWN0RWxlbWVudCwgaXNJRUJyb3dzZXI/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChpc0lFQnJvd3NlciAmJiBvYmplY3RbJ3JlYWR5U3RhdGUnXSA9PT0gNCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSBpbiBvYmplY3QpIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5pc0Z1bmN0aW9uKG9iamVjdFtpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0W2ldID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgVmlld1V0aWwucmVtb3ZlQ2hpbGQob2JqZWN0LnBhcmVudE5vZGUsIG9iamVjdCk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBJVmlld0VsZW1lbnQ8VCBleHRlbmRzIEhUTUxFbGVtZW50ID0gSFRNTEVsZW1lbnQ+ID0gSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPFQ+IHwgVmlld0NvbnRhaW5lclJlZjtcbiJdfQ==
@@ -382,10 +382,10 @@ class ViewUtil {
382
382
  //
383
383
  // --------------------------------------------------------------------------
384
384
  static getStageWidth() {
385
- return ViewUtil.window.innerWidth || ViewUtil.document.body.clientWidth;
385
+ return ViewUtil.document.body?.clientWidth || ViewUtil.window.innerWidth;
386
386
  }
387
387
  static getStageHeight() {
388
- return ViewUtil.window.innerHeight || ViewUtil.document.body.clientHeight;
388
+ return ViewUtil.document.body?.clientHeight || ViewUtil.window.innerHeight;
389
389
  }
390
390
  static getCanvasContext2d(container, options) {
391
391
  let canvas = ViewUtil.parseElement(container);