@wizishop/wizi-block 15.0.7-beta → 15.0.10-beta

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.
@@ -1,10 +1,11 @@
1
- import { Injectable } from '@angular/core';
1
+ import { EventEmitter, Injectable } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import { moveItemInArray } from '@angular/cdk/drag-drop';
4
4
  import { v4 as uuidV4 } from 'uuid';
5
5
  import * as i0 from "@angular/core";
6
6
  export class ContentService {
7
7
  constructor() {
8
+ this.duplicateContent = new EventEmitter();
8
9
  this._contents = [];
9
10
  this.contentsSource = new Subject();
10
11
  this.contentsDone = this.contentsSource.asObservable();
@@ -53,9 +54,10 @@ export class ContentService {
53
54
  }
54
55
  });
55
56
  if (keyToCopy !== null) {
56
- const toCopy = this.deepCopy(this._contents[keyToCopy]);
57
- toCopy.block.uuid = uuidV4();
57
+ let toCopy = this.deepCopy(this._contents[keyToCopy].block);
58
+ toCopy.uuid = uuidV4();
58
59
  this._contents.splice(keyToCopy + 1, 0, toCopy);
60
+ this.duplicateContent.emit(toCopy);
59
61
  }
60
62
  this.contentsSource.next();
61
63
  }
@@ -110,10 +112,13 @@ export class ContentService {
110
112
  }
111
113
  throw new Error('Unable to copy obj! Its type not supported.');
112
114
  }
115
+ getDuplicateContentEmitter() {
116
+ return this.duplicateContent;
117
+ }
113
118
  }
114
119
  ContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ContentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
115
120
  ContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ContentService });
116
121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ContentService, decorators: [{
117
122
  type: Injectable
118
123
  }] });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3pELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUdwQyxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUdZLGNBQVMsR0FBdUMsRUFBRSxDQUFDO1FBRW5ELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVyQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7S0FxSTdEO0lBbklHLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBeUM7UUFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FB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QUcsRUFBRTtnQkFDcEIsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDekM7YUFDSjtZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7SUFDbkUsQ0FBQzs7MkdBMUlRLGNBQWM7K0dBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBGb3Jtc0R0byB9IGZyb20gJy4uLy4uL2R0b3MvZm9ybXMvZm9ybXMuZHRvJztcbmltcG9ydCB7IFBhcmVudEJsb2NrRHRvIH0gZnJvbSAnLi4vLi4vZHRvcy9ibG9ja3MvcGFyZW50LWJsb2NrLmR0byc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tICd1dWlkJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbnRlbnRTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgX2NvbnRlbnRzOiAoRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+IHwgYW55KVtdID0gW107XG5cbiAgICBwcml2YXRlIGNvbnRlbnRzU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgY29udGVudHNEb25lID0gdGhpcy5jb250ZW50c1NvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAgIGdldCBjb250ZW50cygpOiAoRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+IHwgYW55KVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRzO1xuICAgIH1cblxuICAgIHNldCBjb250ZW50cyh2YWx1ZTogKEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPiB8IGFueSlbXSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cyA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuY29udGVudHNTb3VyY2UubmV4dCgpO1xuICAgIH1cblxuICAgIHNldENvbnRlbnRzKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzLnB1c2godmFsdWUpO1xuXG4gICAgICAgIHRoaXMuY29udGVudHNTb3VyY2UubmV4dCgpO1xuICAgIH1cblxuICAgIHNldENvbnRlbnRzV2l0aEluZGV4KGluZGV4LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cy5zcGxpY2UoaW5kZXgsIDAsIHZhbHVlKTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICByZW9yZGVyQ29udGVudHMocHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLl9jb250ZW50cywgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBnZXRDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrPy51dWlkID09PSB1dWlkKSB7XG4gICAgICAgICAgICAgICAgY29udGVudCA9IHRoaXMuX2NvbnRlbnRzW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICB1cGRhdGVCeVVVSUQodXVpZCwgbmV3Q29udGVudCkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrPy51dWlkID09PSB1dWlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29udGVudHNba10gPSBuZXdDb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBkdXBsaWNhdGVDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGtleVRvQ29weSA9IG51bGw7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50c1tpbmRleF0uYmxvY2s/LnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBrZXlUb0NvcHkgPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGtleVRvQ29weSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgdG9Db3B5ID0gdGhpcy5kZWVwQ29weSh0aGlzLl9jb250ZW50c1trZXlUb0NvcHldKTtcbiAgICAgICAgICAgIHRvQ29weS5ibG9jay51dWlkID0gdXVpZFY0KCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRzLnNwbGljZShrZXlUb0NvcHkgKyAxLCAwLCB0b0NvcHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQ29udGVudEJ5VVVJRCh1dWlkKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRzID0gW107XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5tYXAoayA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNba10uYmxvY2s/LnV1aWQgIT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50cy5wdXNoKHRoaXMuX2NvbnRlbnRzW2tdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fY29udGVudHMgPSBjb250ZW50cztcbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgZGVsZXRlQWxsKCkge1xuICAgICAgICB0aGlzLl9jb250ZW50cyA9IFtdO1xuICAgIH1cblxuICAgIGNvbnRlbnRFdmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudHNEb25lO1xuICAgIH1cblxuICAgIGdldFBhcnNlZENvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBbXTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzLmZvckVhY2goZm9ybSA9PiB7XG4gICAgICAgICAgICBjb250ZW50LnB1c2goZm9ybS5ibG9jayk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuXG4gICAgZGVlcENvcHkob2JqKSB7XG4gICAgICAgIGxldCBjb3B5O1xuXG4gICAgICAgIGlmIChudWxsID09IG9iaiB8fCAnb2JqZWN0JyAhPT0gdHlwZW9mIG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICBjb3B5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGNvcHkuc2V0VGltZShvYmouZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBjb3B5ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gb2JqLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29weVtpXSA9IHRoaXMuZGVlcENvcHkob2JqW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgY29weSA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBhdHRyIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29weVthdHRyXSA9IHRoaXMuZGVlcENvcHkob2JqW2F0dHJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGNvcHkgb2JqISBJdHMgdHlwZSBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cbn1cbiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHcEMsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFHSSxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVqRCxjQUFTLEdBQXVDLEVBQUUsQ0FBQztRQUVuRCxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFckMsaUJBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0tBMEk3RDtJQXhJRyxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQXlDO1FBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEtBQUs7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FB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QUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxHQUFHLFlBQVksTUFBTSxFQUFFO1lBQ3ZCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVixLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRTtnQkFDcEIsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDekM7YUFDSjtZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELDBCQUEwQjtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDOzsyR0FqSlEsY0FBYzsrR0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRm9ybXNEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2Zvcm1zL2Zvcm1zLmR0byc7XG5pbXBvcnQgeyBQYXJlbnRCbG9ja0R0byB9IGZyb20gJy4uLy4uL2R0b3MvYmxvY2tzL3BhcmVudC1ibG9jay5kdG8nO1xuaW1wb3J0IHsgdjQgYXMgdXVpZFY0IH0gZnJvbSAndXVpZCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb250ZW50U2VydmljZSB7XG5cbiAgICBkdXBsaWNhdGVDb250ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHByaXZhdGUgX2NvbnRlbnRzOiAoRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+IHwgYW55KVtdID0gW107XG5cbiAgICBwcml2YXRlIGNvbnRlbnRzU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgY29udGVudHNEb25lID0gdGhpcy5jb250ZW50c1NvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAgIGdldCBjb250ZW50cygpOiAoRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+IHwgYW55KVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRzO1xuICAgIH1cblxuICAgIHNldCBjb250ZW50cyh2YWx1ZTogKEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPiB8IGFueSlbXSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cyA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuY29udGVudHNTb3VyY2UubmV4dCgpO1xuICAgIH1cblxuICAgIHNldENvbnRlbnRzKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzLnB1c2godmFsdWUpO1xuXG4gICAgICAgIHRoaXMuY29udGVudHNTb3VyY2UubmV4dCgpO1xuICAgIH1cblxuICAgIHNldENvbnRlbnRzV2l0aEluZGV4KGluZGV4LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cy5zcGxpY2UoaW5kZXgsIDAsIHZhbHVlKTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICByZW9yZGVyQ29udGVudHMocHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLl9jb250ZW50cywgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBnZXRDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrPy51dWlkID09PSB1dWlkKSB7XG4gICAgICAgICAgICAgICAgY29udGVudCA9IHRoaXMuX2NvbnRlbnRzW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICB1cGRhdGVCeVVVSUQodXVpZCwgbmV3Q29udGVudCkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrPy51dWlkID09PSB1dWlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29udGVudHNba10gPSBuZXdDb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBkdXBsaWNhdGVDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGtleVRvQ29weSA9IG51bGw7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50c1tpbmRleF0uYmxvY2s/LnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBrZXlUb0NvcHkgPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGtleVRvQ29weSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IHRvQ29weSA9IHRoaXMuZGVlcENvcHkodGhpcy5fY29udGVudHNba2V5VG9Db3B5XS5ibG9jayk7XG4gICAgICAgICAgICB0b0NvcHkudXVpZCA9IHV1aWRWNCgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLl9jb250ZW50cy5zcGxpY2Uoa2V5VG9Db3B5ICsgMSwgMCwgdG9Db3B5KTtcblxuICAgICAgICAgICAgdGhpcy5kdXBsaWNhdGVDb250ZW50LmVtaXQodG9Db3B5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICByZW1vdmVDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgY29uc3QgY29udGVudHMgPSBbXTtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5fY29udGVudHMpLm1hcChrID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50c1trXS5ibG9jaz8udXVpZCAhPT0gdXVpZCkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRzLnB1c2godGhpcy5fY29udGVudHNba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBkZWxldGVBbGwoKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzID0gW107XG4gICAgfVxuXG4gICAgY29udGVudEV2ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50c0RvbmU7XG4gICAgfVxuXG4gICAgZ2V0UGFyc2VkQ29udGVudCgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IFtdO1xuXG4gICAgICAgIHRoaXMuY29udGVudHMuZm9yRWFjaChmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnRlbnQucHVzaChmb3JtLmJsb2NrKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG5cbiAgICBkZWVwQ29weShvYmopIHtcbiAgICAgICAgbGV0IGNvcHk7XG5cbiAgICAgICAgaWYgKG51bGwgPT0gb2JqIHx8ICdvYmplY3QnICE9PSB0eXBlb2Ygb2JqKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIGNvcHkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgY29weS5zZXRUaW1lKG9iai5nZXRUaW1lKCkpO1xuICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIGNvcHkgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBvYmoubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb3B5W2ldID0gdGhpcy5kZWVwQ29weShvYmpbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBjb3B5ID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGF0dHIgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShhdHRyKSkge1xuICAgICAgICAgICAgICAgICAgICBjb3B5W2F0dHJdID0gdGhpcy5kZWVwQ29weShvYmpbYXR0cl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gY29weSBvYmohIEl0cyB0eXBlIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgfVxuXG4gICAgZ2V0RHVwbGljYXRlQ29udGVudEVtaXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmR1cGxpY2F0ZUNvbnRlbnQ7XG4gICAgfVxufVxuIl19
@@ -99,6 +99,12 @@ export class WiziBlockComponent {
99
99
  }
100
100
  this.wiziBlockService.setConfig(this.availableComponents, this.texts);
101
101
  this.components = this.wiziBlockService.getComponents();
102
+ this.duplicateContentSubscription = this.contentService.getDuplicateContentEmitter().subscribe((block) => {
103
+ // prevent display init issue
104
+ setTimeout(() => {
105
+ this.checkWiziblocks();
106
+ }, 20);
107
+ });
102
108
  this.translation = this.wiziBlockService.getTranslation();
103
109
  this.wiziblockServicesList = this.wiziBlockService.getBlocksService();
104
110
  this.configEventSubscription = this.configService
@@ -257,8 +263,9 @@ export class WiziBlockComponent {
257
263
  });
258
264
  this.allWiziblocksLoaded = loadedAllBlocks;
259
265
  this.contentService.contents = this.content;
260
- if (this.allWiziblocksLoaded) {
266
+ if (this.allWiziblocksLoaded && this.progressiveBlockLoadingInterval) {
261
267
  clearInterval(this.progressiveBlockLoadingInterval);
268
+ this.progressiveBlockLoadingInterval = null;
262
269
  }
263
270
  }
264
271
  loadWiziblock(block) {
@@ -293,8 +300,9 @@ export class WiziBlockComponent {
293
300
  }
294
301
  }
295
302
  this.allWiziblocksLoaded = loadedAllBlocks;
296
- if (this.allWiziblocksLoaded) {
303
+ if (this.allWiziblocksLoaded && this.progressiveBlockLoadingInterval) {
297
304
  clearInterval(this.progressiveBlockLoadingInterval);
305
+ this.progressiveBlockLoadingInterval = null;
298
306
  }
299
307
  }
300
308
  }
@@ -325,4 +333,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
325
333
  type: HostListener,
326
334
  args: ['window:scroll', []]
327
335
  }] } });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6aS1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvd2l6aS1ibG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvd2l6aS1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUVoRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVF2RCxNQUFNLE9BQU8sa0JBQWtCO0lBeUMzQixZQUNZLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixjQUE4QixFQUMvQixnQkFBa0M7UUFIakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTNDcEMsVUFBSyxHQUFvQixJQUFJLENBQUM7UUFDOUIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVmLGtCQUFhLEdBQXdDLElBQUksWUFBWSxFQUFFLENBQUM7UUFJbEYsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsc0JBQWlCLEdBQXVCLElBQUksQ0FBQztRQUM3QyxtQkFBYyxHQUE2QixJQUFJLENBQUM7UUFDaEQsZUFBVSxHQUFzQixJQUFJLENBQUM7UUFDckMsZ0JBQVcsR0FBb0IsSUFBSSxDQUFDO1FBQ3BDLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFHZCxtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFLWixnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbEMsNEJBQXVCLEdBQWlCLElBQUksQ0FBQztRQUM3Qyw2QkFBd0IsR0FBaUIsSUFBSSxDQUFDO1FBQzlDLDBCQUFxQixHQUFlLEVBQUUsQ0FBQztRQUd2QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDcEMsaUNBQTRCLEdBQUcsSUFBSSxDQUFDO1FBRXBDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztJQU8xQyxDQUFDO0lBRUosSUFBMkMsWUFBWSxDQUFDLE9BQXdCO1FBQzVFLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFFa0MsY0FBYztRQUM3QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsRUFBRTtZQUN4RixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUMxQjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQzFCO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BFLElBQUksQ0FBQyxtQkFBbUIsR0FBRztnQkFDdkIsUUFBUSxDQUFDLE9BQU87Z0JBQ2hCLFFBQVEsQ0FBQyxNQUFNO2dCQUNmLFFBQVEsQ0FBQyxhQUFhO2dCQUN0QixRQUFRLENBQUMsTUFBTTtnQkFDZixRQUFRLENBQUMsZ0JBQWdCO2dCQUN6QixRQUFRLENBQUMsWUFBWTtnQkFDckIsUUFBUSxDQUFDLEtBQUs7Z0JBQ2QsUUFBUSxDQUFDLEtBQUs7Z0JBQ2QsUUFBUSxDQUFDLGFBQWE7Z0JBQ3RCLFFBQVEsQ0FBQyxPQUFPO2dCQUNoQixRQUFRLENBQUMsT0FBTztnQkFDaEIsUUFBUSxDQUFDLFdBQVc7Z0JBQ3BCLFFBQVEsQ0FBQyxVQUFVO2dCQUNuQixRQUFRLENBQUMsT0FBTztnQkFDaEIsUUFBUSxDQUFDLE9BQU87Z0JBQ2hCLFFBQVEsQ0FBQyxNQUFNO2dCQUNmLFFBQVEsQ0FBQyxLQUFLO2dCQUNkLFFBQVEsQ0FBQyxHQUFHO2dCQUNaLFFBQVEsQ0FBQyxJQUFJO2dCQUNiLFFBQVEsQ0FBQyxTQUFTO2dCQUNsQixRQUFRLENBQUMsR0FBRzthQUNmLENBQUM7U0FDTDtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUU5QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDckM7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFeEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsYUFBYTthQUM1QyxXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNqQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3JCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDakMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRTt3QkFDM0YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7cUJBQzdCO29CQUNELElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO2lCQUN2QjtnQkFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzthQUN2RDtpQkFBTTtnQkFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQzthQUM5QjtZQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2FBQ3BCO1lBQ0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxFQUFFO2dCQUNqRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUMvQjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGNBQWM7YUFDOUMsWUFBWSxFQUFFO2FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDakMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO2dCQUNsRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUMzQixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDcEM7WUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQ25ELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEMsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRTtZQUM3QyxJQUFJLENBQUMsSUFBSSxhQUFZLFFBQXdCLENBQUEsQ0FBQyxJQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUssT0FBTyxTQUFTLEVBQUU7Z0JBQ2xHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFO29CQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM3QzthQUNKO1NBQ0o7UUFDRCxvREFBb0Q7UUFDcEQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDUiw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLCtCQUErQixHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDcEQsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDbkMsQ0FBQyxFQUFFLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUM3QyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUN4QyxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUU7b0JBQ2hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7aUJBQ3RDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDOUIsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQU07UUFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGVBQWUsQ0FBQyxrQkFBa0I7UUFDOUIsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQzNCO2FBQU07WUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsR0FBRztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztTQUM3QjthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsS0FBSztRQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDbkMsSUFBSSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxLQUFLLE9BQU8sU0FBUyxFQUFFO1lBQ3ZELEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFDLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDakgsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzVEO3FCQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLEVBQUU7b0JBQ3ZELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDakc7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWhDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLEVBQUUseUJBQXlCLENBQUMsQ0FBQztTQUM5RTtJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZTtRQUN6QixJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxlQUFlLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDekUsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUN0QyxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxDQUFDLEtBQUssYUFBWSxRQUF3QixDQUFBLENBQUMsRUFBRTtnQkFDOUMsZUFBZSxHQUFHLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxJQUFJLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQzFELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDO2dCQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNuRDthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsZUFBZSxDQUFDO1FBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsYUFBYSxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0wsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFVO1FBQzVCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDM0MsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDL0IsSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO29CQUN2QyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ3ZEO3FCQUFNO29CQUNILE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNqQyxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO3dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO3FCQUN6QztpQkFDSjthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUN6QixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUU7WUFDdEQsSUFBSSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLE1BQU07YUFDVDtZQUNELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQVksUUFBd0IsQ0FBQSxDQUFDLEVBQUU7Z0JBQzVELGVBQWUsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzlELGdCQUFnQixFQUFFLENBQUM7YUFDdEI7U0FDSjtRQUNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxlQUFlLENBQUM7UUFDM0MsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsYUFBYSxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0wsQ0FBQzs7K0dBbFRRLGtCQUFrQjttR0FBbEIsa0JBQWtCLDRlQ3ZCL0IsbS9RQThKQSw4akZEeklnQixDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxFQUFFLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7MkZBRWpHLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDSSxlQUFlLGNBR2IsQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOytMQUdqRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBRXFCLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkF1Q2lCLFlBQVk7c0JBQXRELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJRixjQUFjO3NCQUFoRCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2l6aUJsb2NrU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd2l6aS1ibG9jay5zZXJ2aWNlJztcbmltcG9ydCB7IFN0cnVjdHVyZXNMaXN0RHRvIH0gZnJvbSAnLi9kdG9zL2NvbmZpZ3Mvc3RydWN0dXJlcy9zdHJ1Y3R1cmVzLWxpc3QuZHRvJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uc0R0byB9IGZyb20gJy4vZHRvcy9jb25maWdzL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMuZHRvJztcbmltcG9ydCB7IFR5cGVzRHRvIH0gZnJvbSAnLi9kdG9zL2NvbmZpZ3MvdHlwZXMvdHlwZXMuZHRvJztcbmltcG9ydCB7IFN0cnVjdHVyZUNvbmZpZ0R0byB9IGZyb20gJy4vZHRvcy9jb25maWdzL3N0cnVjdHVyZXMvc3RydWN0dXJlLWNvbmZpZy5kdG8nO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXRpbHMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXRpbHMvY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IGFuaW1hdGVMaXN0RnJvbVJpZ2h0IH0gZnJvbSAnLi9zaGFyZWQvYW5pbWF0aW9ucy9saXN0L2FuaW1hdGUtbGlzdC1mcm9tLXJpZ2h0LmFuaW1hdGlvbic7XG5pbXBvcnQgeyBhbmltYXRlTGlzdEZyb21MZWZ0IH0gZnJvbSAnLi9zaGFyZWQvYW5pbWF0aW9ucy9saXN0L2FuaW1hdGUtbGlzdC1mcm9tLWxlZnQuYW5pbWF0aW9uJztcbmltcG9ydCB7IFBhcmVudEJsb2NrRHRvIH0gZnJvbSAnLi9kdG9zL2Jsb2Nrcy9wYXJlbnQtYmxvY2suZHRvJztcbmltcG9ydCB7IEZvcm1zRHRvIH0gZnJvbSAnLi9kdG9zL2Zvcm1zL2Zvcm1zLmR0byc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCbG9ja3NDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3diLXdpemktYmxvY2snLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXppLWJsb2NrLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFtdLFxuICAgIGFuaW1hdGlvbnM6IFthbmltYXRlTGlzdEZyb21SaWdodCgnMjAwbXMgZWFzZS1pbi1vdXQnLCAnMTAwbXMnKSwgYW5pbWF0ZUxpc3RGcm9tTGVmdCgnMTAwbXMgZWFzZS1pbi1vdXQnKV0sXG59KVxuZXhwb3J0IGNsYXNzIFdpemlCbG9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBhdmFpbGFibGVDb21wb25lbnRzOiBBcnJheTxzdHJpbmc+O1xuICAgIEBJbnB1dCgpIHRleHRzOiBUcmFuc2xhdGlvbnNEdG8gPSBudWxsO1xuICAgIEBJbnB1dCgpIGNvbnRlbnQgPSBbXTtcbiAgICBASW5wdXQoKSB2ZXJib3NlID0gZmFsc2U7XG4gICAgQElucHV0KCkgaXNJbkRldiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIGNvbnRlbnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBcnJheTxQYXJlbnRCbG9ja0R0bz4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnY29tcG9uZW50TGlzdCcpIGNvbXBvbmVudExpc3Q7XG5cbiAgICBicmVha1BvaW50U2l6ZSA9IDE0MjE7XG4gICAgYmxvY2tzQ29udGVudHMgPSBbXTtcbiAgICBzZWxlY3RlZFN0cnVjdHVyZTogU3RydWN0dXJlQ29uZmlnRHRvID0gbnVsbDtcbiAgICBzZWxlY3RlZENvbmZpZzogRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+ID0gbnVsbDtcbiAgICBjb21wb25lbnRzOiBTdHJ1Y3R1cmVzTGlzdER0byA9IG51bGw7XG4gICAgdHJhbnNsYXRpb246IFRyYW5zbGF0aW9uc0R0byA9IG51bGw7XG4gICAgaXNIaWRkZW5Db25maWcgPSBbXTtcbiAgICBpc0ZpcnN0SW5Mb29wID0gZmFsc2U7XG4gICAgbG9vcEluZGV4ID0gMDtcbiAgICBob3ZlckNoaWxkcmVuOiBib29sZWFuIHwgc3RyaW5nO1xuXG4gICAgY3VycmVudFRvcFRvb2wgPSAwO1xuICAgIHRvb2xVbnBpbiA9IGZhbHNlO1xuICAgIHRvb2xIaWRkZW4gPSBmYWxzZTtcbiAgICBzbWFsbFNjcmVlbiA9IGZhbHNlO1xuXG5cbiAgICBibG9ja0NvbXBvbmVudDogQmxvY2tzQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBjb25maWdFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICBwcml2YXRlIGNvbnRlbnRFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICBwcml2YXRlIHdpemlibG9ja1NlcnZpY2VzTGlzdDogQXJyYXk8YW55PiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBwcm9ncmVzc2l2ZUJsb2NrTG9hZGluZ0ludGVydmFsOiBhbnk7XG4gICAgcHJpdmF0ZSBMT0FESU5HX09GRlNFVCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICBwcml2YXRlIFBST0dSRVNTSVZFX0xPQURJTkdfSU5URVJWQUwgPSAzMDAwO1xuXG4gICAgcHJpdmF0ZSBhbGxXaXppYmxvY2tzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB3aXppQmxvY2tTZXJ2aWNlOiBXaXppQmxvY2tTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkge31cblxuICAgIEBWaWV3Q2hpbGQoJ2Jsb2NrJywgeyBzdGF0aWM6IGZhbHNlIH0pIHNldCBjb250ZW50QmxvY2soY29udHJvbDogQmxvY2tzQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuYmxvY2tDb21wb25lbnQgPSBjb250cm9sO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbXSkgb25XaW5kb3dTY3JvbGwoKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUb3AgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgaWYgKHRoaXMudG9vbFVucGluICYmICF0aGlzLnRvb2xIaWRkZW4gJiYgTWF0aC5hYnMoY3VycmVudFRvcCAtIHRoaXMuY3VycmVudFRvcFRvb2wpID4gODAwKSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xIaWRkZW4gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5hbGxXaXppYmxvY2tzTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrV2l6aWJsb2NrcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5hdmFpbGFibGVDb21wb25lbnRzIHx8IHRoaXMuYXZhaWxhYmxlQ29tcG9uZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuYXZhaWxhYmxlQ29tcG9uZW50cyA9IFtcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5zbGlkZXJzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnZpZGVvcyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5sYXVuY2hfdmlkZW9zLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLmltYWdlcyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by50ZXh0X2JhY2tncm91bmRzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLmltYWdlc190ZXh0cyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by50ZXh0cyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5mb3JtcyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5wcm9kdWN0c19saXN0LFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnByb2R1Y3QsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8uc29jaWFscyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5yYXNzdXJhbmNlcyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5uZXdzbGV0dGVyLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLndpdG5lc3MsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ucmV2aWV3cyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5xdW90ZXMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8udGltZXIsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ubWFwLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLmNvZGUsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8uc2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLmZhcSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLnNldERvY3VtZW50RXZlbnRMaXN0ZW5lcigpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzSW5EZXYpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5pc0luRGV2ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud2l6aUJsb2NrU2VydmljZS5zZXRDb25maWcodGhpcy5hdmFpbGFibGVDb21wb25lbnRzLCB0aGlzLnRleHRzKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRzID0gdGhpcy53aXppQmxvY2tTZXJ2aWNlLmdldENvbXBvbmVudHMoKTtcblxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uID0gdGhpcy53aXppQmxvY2tTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCk7XG4gICAgICAgIHRoaXMud2l6aWJsb2NrU2VydmljZXNMaXN0ID0gdGhpcy53aXppQmxvY2tTZXJ2aWNlLmdldEJsb2Nrc1NlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5jb25maWdFdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuY29uZmlnU2VydmljZVxuICAgICAgICAgICAgLmNvbmZpZ0V2ZW50KClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNGaXJzdEluTG9vcCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubG9vcEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvbmZpZykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGIgb2YgdGhpcy5ibG9ja3NDb250ZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJbJ2Jsb2NrJ10gJiYgYlsnYmxvY2snXVsndXVpZCddID09PSB0aGlzLnNlbGVjdGVkQ29uZmlnLmJsb2NrLnV1aWQgJiYgdGhpcy5sb29wSW5kZXggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0ZpcnN0SW5Mb29wID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9vcEluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob3ZlckNoaWxkcmVuID0gdGhpcy5zZWxlY3RlZENvbmZpZy5ibG9jay51dWlkO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG92ZXJDaGlsZHJlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50b29sSGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SGlkZGVuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkU3RydWN0dXJlID09PSBudWxsICYmIHRoaXMuc2VsZWN0ZWRDb25maWcgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RTdHJ1Y3R1cmVPbkZseSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy52ZXJib3NlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQXZhaWxhYmxlIGNvbnRlbnQgb24gc3RhcnQnLCB0aGlzLmNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGVudEV2ZW50U3Vic2NyaXB0aW9uID0gdGhpcy5jb250ZW50U2VydmljZVxuICAgICAgICAgICAgLmNvbnRlbnRFdmVudCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50U2VydmljZS5jb250ZW50cy5sZW5ndGggPCB0aGlzLmJsb2Nrc0NvbnRlbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3AgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQb3NpdGlvblRvb2xzKHRvcCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tzQ29udGVudHMgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmNvbnRlbnRzO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdENvbnRlbnQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLmNvbnRlbnRzID0gdGhpcy5jb250ZW50O1xuICAgICAgICB0aGlzLnJlc2l6ZVdpdGhXaWR0aCh3aW5kb3cuaW5uZXJXaWR0aCk7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmNvbnRlbnRTZXJ2aWNlLmNvbnRlbnRzKSB7XG4gICAgICAgICAgICBpZiAoKGl0ZW0gaW5zdGFuY2VvZiBGb3Jtc0R0bzxQYXJlbnRCbG9ja0R0bz4pICAmJiB0eXBlb2YgaXRlbS5ibG9jay5oaWRlX2Jsb2NrICE9PSB0eXBlb2YgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uYmxvY2suaGlkZV9ibG9jayA9PT0gJzAnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWRkZW5Db25maWcucHVzaChpdGVtLmJsb2NrLnV1aWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBhZGRlZCBzbWFsbCB0aW1lb3V0IHRvIHByZXZlbnQgYW55IGxvYWRpbmcgaXNzdWVzXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGVja1dpemlibG9ja3MoKTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgLy8gc3RhcnQgcHJvZ3Jlc3NpdmUgbG9hZGluZ1xuICAgICAgICB0aGlzLnByb2dyZXNzaXZlQmxvY2tMb2FkaW5nSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzaXZlQmxvY2tMb2FkaW5nKCk7XG4gICAgICAgIH0sIHRoaXMuUFJPR1JFU1NJVkVfTE9BRElOR19JTlRFUlZBTCk7XG4gICAgfVxuXG4gICAgYWRkVGhpcyhzZWxlY3RlZCkge1xuICAgICAgICB0aGlzLmJsb2NrQ29tcG9uZW50LmFkZFRoaXNTZWxlY3RlZChzZWxlY3RlZCwgdGhpcy52ZXJib3NlKTtcbiAgICB9XG5cbiAgICBjbG9zZUNvbmZpZygpIHtcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IG51bGw7XG4gICAgfVxuXG4gICAgc2VsZWN0U3RydWN0dXJlT25GbHkoKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50cy5jb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgY29tcG9uZW50LmNvbnRlbnRzLmZvckVhY2goKHN1YkNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWJDb21wb25lbnQudHlwZSA9PT0gdGhpcy5zZWxlY3RlZENvbmZpZy50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdHJ1Y3R1cmUgPSBjb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGVtaXRDb250ZW50KCkge1xuICAgICAgICBjb25zdCBwYXJzZWREdG8gPSBbXTtcbiAgICAgICAgdGhpcy5ibG9ja3NDb250ZW50cy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBwYXJzZWREdG8ucHVzaCh2LmJsb2NrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29udGVudENoYW5nZS5lbWl0KHBhcnNlZER0byk7XG4gICAgfVxuXG4gICAgb25SZXNpemUoJGV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplV2l0aFdpZHRoKCRldmVudC50YXJnZXQuaW5uZXJXaWR0aCk7XG4gICAgfVxuXG4gICAgcmVzaXplV2l0aFdpZHRoKGN1cnJlbnRCcm93c2VyU2l6ZSkge1xuICAgICAgICBpZiAoY3VycmVudEJyb3dzZXJTaXplIDwgdGhpcy5icmVha1BvaW50U2l6ZSkge1xuICAgICAgICAgICAgdGhpcy50b29sVW5waW4gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zbWFsbFNjcmVlbiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRvb2xVbnBpbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zbWFsbFNjcmVlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0VW5waW4oKSB7XG4gICAgICAgIGNvbnN0IHRvcCA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB0aGlzLnRvb2xVbnBpbiA9ICF0aGlzLnRvb2xVbnBpbjtcbiAgICAgICAgaWYgKHRoaXMudG9vbFVucGluKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uVG9vbHModG9wKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldEhpZGRlbigpIHtcbiAgICAgICAgY29uc3QgdG9wID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIHRoaXMudG9vbEhpZGRlbiA9ICF0aGlzLnRvb2xIaWRkZW47XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb25Ub29scyh0b3ApO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZVBvc2l0aW9uVG9vbHModG9wKSB7XG4gICAgICAgIGlmICghdGhpcy50b29sSGlkZGVuKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb3BUb29sID0gdG9wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9wVG9vbCA9IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VDb25maWdXaXppYmxvY2tzKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb25maWcgPSBldmVudC5jb25maWc7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZWxlY3RlZENvbmZpZy5mb3JtcyAhPT0gdHlwZW9mIHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuc2VsZWN0ZWRDb25maWcuZm9ybXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gJ2hpZGVfYmxvY2snICYmIGl0ZW0udmFsdWUgPT09ICcwJyAmJiAhdGhpcy5pc0hpZGRlbkNvbmZpZy5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkQ29uZmlnLmJsb2NrLnV1aWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNIaWRkZW5Db25maWcucHVzaCh0aGlzLnNlbGVjdGVkQ29uZmlnLmJsb2NrLnV1aWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5pZCA9PT0gJ2hpZGVfYmxvY2snICYmIGl0ZW0udmFsdWUgPT09ICcxJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSGlkZGVuQ29uZmlnID0gdGhpcy5pc0hpZGRlbkNvbmZpZy5maWx0ZXIoKGUpID0+IGUgIT09IHRoaXMuc2VsZWN0ZWRDb25maWcuYmxvY2sudXVpZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2l6aUJsb2NrU2VydmljZS5fYmxvY2tzU2VydmljZSA9IFtdO1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBbXTtcbiAgICAgICAgdGhpcy5ibG9ja3NDb250ZW50cyA9IFtdO1xuXG4gICAgICAgIHRoaXMuY29uZmlnRXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5jb250ZW50RXZlbnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5kZWxldGVBbGwoKTtcblxuICAgICAgICBpZiAodGhpcy52ZXJib3NlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnR29vZEJ5ZSBXaXppQmxvY2sgWW91IFdlcmUgTG92ZWQnLCAnRGVzdHJveSBvZiBUaGlzIFNlc3Npb24nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tXaXppYmxvY2tzKCkge1xuICAgICAgICBsZXQgbG9hZGVkQWxsQmxvY2tzID0gdHJ1ZTtcbiAgICAgICAgbGV0IGJsb2NrQ29udGFpbmVycyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy53Yi1ibG9ja3NfX2NvbnRhaW5lcicpO1xuICAgICAgICBsZXQgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICB2YXIgc2Nyb2xsWSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB0aGlzLmNvbnRlbnQuZm9yRWFjaCgoYmxvY2ssIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIShibG9jayBpbnN0YW5jZW9mIEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPikpIHtcbiAgICAgICAgICAgICAgICBsb2FkZWRBbGxCbG9ja3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB2YXIgcmVjdCA9IGJsb2NrQ29udGFpbmVyc1tpbmRleF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlY3QudG9wICsgc2Nyb2xsWTtcbiAgICAgICAgICAgICAgICBpZiAoKHdpbmRvd0hlaWdodCArIHNjcm9sbFkgKyB0aGlzLkxPQURJTkdfT0ZGU0VUKSA+PSAocG9zKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRbaW5kZXhdID0gdGhpcy5sb2FkV2l6aWJsb2NrKGJsb2NrKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWxsV2l6aWJsb2Nrc0xvYWRlZCA9IGxvYWRlZEFsbEJsb2NrcztcbiAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5jb250ZW50cyA9IHRoaXMuY29udGVudDtcbiAgICAgICAgaWYgKHRoaXMuYWxsV2l6aWJsb2Nrc0xvYWRlZCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnByb2dyZXNzaXZlQmxvY2tMb2FkaW5nSW50ZXJ2YWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkV2l6aWJsb2NrKGJsb2NrOiBhbnkpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuICAgICAgICB0aGlzLndpemlibG9ja1NlcnZpY2VzTGlzdC5mb3JFYWNoKChzZXJ2aWNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoYmxvY2sudHlwZSA9PT0gc2VydmljZS50eXBlKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNlcnZpY2UuZ2V0Rm9ybSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBmb3JtIGZvciAnICsgc2VydmljZS50eXBlKCkgKyAnJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IHNlcnZpY2UuZ2V0Rm9ybShibG9jayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHlwZSA9IHNlcnZpY2UudHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2V0IGEgY29udGVudCcsIGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9ncmVzc2l2ZUJsb2NrTG9hZGluZygpIHtcbiAgICAgICAgbGV0IGxvYWRlZEFsbEJsb2NrcyA9IHRydWU7XG4gICAgICAgIGxldCBibG9ja3NMZWZ0VG9Mb2FkID0gMztcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuY29udGVudC5sZW5ndGg7ICsraW5kZXgpIHtcbiAgICAgICAgICAgIGlmIChibG9ja3NMZWZ0VG9Mb2FkID09PSAwKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoISh0aGlzLmNvbnRlbnRbaW5kZXhdIGluc3RhbmNlb2YgRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+KSkge1xuICAgICAgICAgICAgICAgIGxvYWRlZEFsbEJsb2NrcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFtpbmRleF0gPSB0aGlzLmxvYWRXaXppYmxvY2sodGhpcy5jb250ZW50W2luZGV4XSk7XG4gICAgICAgICAgICAgICAgYmxvY2tzTGVmdFRvTG9hZC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWxsV2l6aWJsb2Nrc0xvYWRlZCA9IGxvYWRlZEFsbEJsb2NrcztcbiAgICAgICAgaWYgKHRoaXMuYWxsV2l6aWJsb2Nrc0xvYWRlZCkge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnByb2dyZXNzaXZlQmxvY2tMb2FkaW5nSW50ZXJ2YWwpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGlkPVwid2ItY29udGFpbmVyXCJcbiAgICBjbGFzcz1cImNvbHVtbnMgd2ItY29udGFpbmVyXCJcbiAgICAqbmdJZj1cInRyYW5zbGF0aW9uXCJcbiAgICAjY29udGFpbmVyXG4gICAgKHdpbmRvdzpyZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiXG4gICAgW25nQ2xhc3NdPVwieyAnaXMtc21hbGxzY3JlZW4nOiBzbWFsbFNjcmVlbiB9XCJcbj5cbiAgICA8ZGl2XG4gICAgICAgIGNka0RyYWdcbiAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCIhdG9vbFVucGluXCJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4gd2ItY29udGFpbmVyX190b29sc1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLXVucGlubmVkJzogdG9vbFVucGluICYmICF0b29sSGlkZGVuLCAnaXMtc21hbGxzY3JlZW4nOiBzbWFsbFNjcmVlbiwgJ2hhcy1uby10b29sJzogdG9vbEhpZGRlbiB9XCJcbiAgICAgICAgW3N0eWxlLnRvcC5weF09XCJjdXJyZW50VG9wVG9vbFwiXG4gICAgPlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2lzLWhpZGRlbic6ICF0b29sSGlkZGVuIH1cIiAoY2xpY2spPVwic2V0SGlkZGVuKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgPGRpdiBbbndiVG9vbFRpcF09XCInd2IucGFuZWwuaHRtbC4xJyB8IHRyYW5zbGF0ZVwiIG53YlRvb2xUaXBQb3NpdGlvbj1cInJpZ2h0XCIgY2xhc3M9XCJpcy10b29sdGlwLWluZm9cIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1hcnJvdy1mcm9tLWxlZnRcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnaXMtaGlkZGVuJzogdG9vbEhpZGRlbiB9XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItdG9vbHNcIiAqbmdJZj1cInNlbGVjdGVkU3RydWN0dXJlID09PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLXRvb2xzX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ3Yi10b29sc19faGVhZGVyX19hY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtud2JUb29sVGlwXT1cInRvb2xVbnBpbiA/ICd3Yi5wYW5lbC5odG1sLjInIDogKCd3Yi5wYW5lbC5odG1sLjMnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGhpcy5zZXRVbnBpbigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cImZhclwiIFtuZ0NsYXNzXT1cInsgJ2ZhLXVubGluayc6ICF0b29sVW5waW4sICdmYS1saW5rJzogdG9vbFVucGluIH1cIj48L2lcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXJvdW5kZWQgaXMtdG9vbHRpcC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbndiVG9vbFRpcF09XCInd2IucGFuZWwuaHRtbC40JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0SGlkZGVuKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmFyIGZhLWFycm93LWZyb20tcmlnaHRcIj48L2lcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ3Yi10b29sc19faGVhZGVyX19saXN0XCI+e3sgdHJhbnNsYXRpb24ubGlzdF9jb21wb25lbnQgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLXNjcm9sbGJhclxuICAgICAgICAgICAgICAgICAgICBbdmlzaWJpbGl0eV09XCInaG92ZXInXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb21wb25lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IG1heC1oZWlnaHQ6IDg1dmhcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b0hlaWdodERpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi10b29sc19fY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtbXVsdGlsaW5lXCIgW0BhbmltYXRlTGlzdEZyb21MZWZ0XT1cImNvbXBvbmVudHMuY29tcG9uZW50cy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1uIGlzLTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tcG9uZW50IG9mIGNvbXBvbmVudHMuY29tcG9uZW50c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZFN0cnVjdHVyZSA9IGNvbXBvbmVudDsgc2VsZWN0ZWRDb25maWcgPSBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCInYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvaWNvbnMvJyArIGNvbXBvbmVudC5pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJjb21wb25lbnQudGV4dCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb21wb25lbnQuaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IGNvbXBvbmVudC50ZXh0IHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLXNjcm9sbGJhcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25cIiAqbmdJZj1cInNlbGVjdGVkU3RydWN0dXJlICE9PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLXRvb2xzX19oZWFkZXJfX2FjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1yb3VuZGVkIGlzLXRvb2x0aXAtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwidG9vbFVucGluID8gJ3diLnBhbmVsLmh0bWwuMicgOiAoJ3diLnBhbmVsLmh0bWwuMycgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBud2JUb29sVGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0aGlzLnNldFVucGluKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmFsXCIgW25nQ2xhc3NdPVwieyAnZmEtdW5saW5rJzogIXRvb2xVbnBpbiwgJ2ZhLWxpbmsnOiB0b29sVW5waW4gfVwiPjwvaVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtud2JUb29sVGlwXT1cIid3Yi5wYW5lbC5odG1sLjQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBud2JUb29sVGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRIaWRkZW4oKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJmYXIgZmEtYXJyb3ctZnJvbS1yaWdodFwiPjwvaVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2hlYWRlci1jbGljayB3Yi10b29sc19faGVhZGVyX19saXN0XCIgKGNsaWNrKT1cInNlbGVjdGVkU3RydWN0dXJlID0gbnVsbDsgY2xvc2VDb25maWcoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtYW5nbGUtbGVmdFwiPjwvaT4ge3sgc2VsZWN0ZWRTdHJ1Y3R1cmUudGV4dCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX3N1YmhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiY2xvc2VDb25maWcoKVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWFjdGl2ZSc6IHNlbGVjdGVkQ29uZmlnID09PSBudWxsIH1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24uc3RydWN0dXJlIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIH19PC9hPlxuICAgICAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJ7ICdpcy1hY3RpdmUnOiBzZWxlY3RlZENvbmZpZyAhPT0gbnVsbCB9XCIgKm5nSWY9XCJzZWxlY3RlZENvbmZpZyAhPT0gbnVsbFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbi5jb25maWcgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgfX08L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLXNjcm9sbGJhclxuICAgICAgICAgICAgICAgICAgICBbdmlzaWJpbGl0eV09XCInaG92ZXInXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwc1wiXG4gICAgICAgICAgICAgICAgICAgIHBlcmZlY3RTY3JvbGxiYXJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7IG1heC1oZWlnaHQ6IDgwdmhcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b0hlaWdodERpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1jb25maWd1cmF0aW9uX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZENvbmZpZyA9PT0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3Yi1jb25maWd1cmF0aW9uX19jb250ZW50X3N0cnVjdHVyZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAYW5pbWF0ZUxpc3RGcm9tUmlnaHRdPVwic2VsZWN0ZWRTdHJ1Y3R1cmUuY29udGVudHMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cImJsb2Nrc0NvbnRlbnRzLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlsnYmxvY2stY29udGVudCddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlbGVjdGVkIG9mIHNlbGVjdGVkU3RydWN0dXJlLmNvbnRlbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJzZWxlY3RlZC5pbWFnZSB8IGltZ1BhdGhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyBzZWxlY3RlZC5uYW1lIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRfc3RydWN0dXJlc19fZHJhZ2dlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwic2VsZWN0ZWQudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1kcmFnZ2FibGUnOiBibG9ja3NDb250ZW50cy5sZW5ndGggfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkVGhpcyhzZWxlY3RlZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRfc3RydWN0dXJlc19fcHJldmlld1wiICpjZGtEcmFnUHJldmlldz48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRfc3RydWN0dXJlc19fcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjxzcGFuPjwvc3Bhbj48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRDb25maWcgIT09IG51bGxcIiBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRfY29uZmlndXJhdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3Yi1jb25maWdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0ZpcnN0XT1cImlzRmlyc3RJbkxvb3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnc109XCJzZWxlY3RlZENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VDb25maWcpPVwiY2hhbmdlQ29uZmlnV2l6aWJsb2NrcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC93Yi1jb25maWdzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctc2Nyb2xsYmFyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gd2ItY29udGFpbmVyX19jb250ZW50XCIgW25nQ2xhc3NdPVwieyAnaGFzLW5vLXRvb2wnOiB0b29sSGlkZGVuIH1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1jb250ZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8cD48aSBjbGFzcz1cImZhcyBmYS1sb2NrXCI+PC9pPiB7eyB0cmFuc2xhdGlvbi5oZWFkZXIgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1jb250ZW50X19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPHdiLWJsb2NrcyBbZHluYW1pY0hpZGRlbl09XCJpc0hpZGRlbkNvbmZpZ1wiIFtzZWxlY3RlZENvbmZpZ109XCJob3ZlckNoaWxkcmVuXCIgI2Jsb2NrIFtjb250ZW50c109XCJibG9ja3NDb250ZW50c1wiPjwvd2ItYmxvY2tzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29udGVudF9fZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgPHA+PGkgY2xhc3M9XCJmYXMgZmEtbG9ja1wiPjwvaT4ge3sgdHJhbnNsYXRpb24uZm9vdGVyIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48aHIgaWQ9XCJ3Yi1mb290ZXJfX2Jsb2NrXCIgLz5cbiJdfQ==
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6aS1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvd2l6aS1ibG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvd2l6aS1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUVoRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVF2RCxNQUFNLE9BQU8sa0JBQWtCO0lBMkMzQixZQUNZLGdC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Z0JBQWdCLEVBQUUsQ0FBQzthQUN0QjtTQUNKO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGVBQWUsQ0FBQztRQUMzQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsK0JBQStCLEVBQUU7WUFDbEUsYUFBYSxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQywrQkFBK0IsR0FBRyxJQUFJLENBQUM7U0FDL0M7SUFDTCxDQUFDOzsrR0E1VFEsa0JBQWtCO21HQUFsQixrQkFBa0IsNGVDdkIvQixtL1FBOEpBLDhqRkR6SWdCLENBQUMsb0JBQW9CLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQzsyRkFFakcsa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLGVBQWUsY0FHYixDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxFQUFFLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7K0xBR2pHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFFcUIsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQXlDaUIsWUFBWTtzQkFBdEQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUlGLGNBQWM7c0JBQWhELFlBQVk7dUJBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaXppQmxvY2tTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy93aXppLWJsb2NrLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RydWN0dXJlc0xpc3REdG8gfSBmcm9tICcuL2R0b3MvY29uZmlncy9zdHJ1Y3R1cmVzL3N0cnVjdHVyZXMtbGlzdC5kdG8nO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25zRHRvIH0gZnJvbSAnLi9kdG9zL2NvbmZpZ3MvdHJhbnNsYXRpb25zL3RyYW5zbGF0aW9ucy5kdG8nO1xuaW1wb3J0IHsgVHlwZXNEdG8gfSBmcm9tICcuL2R0b3MvY29uZmlncy90eXBlcy90eXBlcy5kdG8nO1xuaW1wb3J0IHsgU3RydWN0dXJlQ29uZmlnRHRvIH0gZnJvbSAnLi9kdG9zL2NvbmZpZ3Mvc3RydWN0dXJlcy9zdHJ1Y3R1cmUtY29uZmlnLmR0byc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91dGlscy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91dGlscy9jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgYW5pbWF0ZUxpc3RGcm9tUmlnaHQgfSBmcm9tICcuL3NoYXJlZC9hbmltYXRpb25zL2xpc3QvYW5pbWF0ZS1saXN0LWZyb20tcmlnaHQuYW5pbWF0aW9uJztcbmltcG9ydCB7IGFuaW1hdGVMaXN0RnJvbUxlZnQgfSBmcm9tICcuL3NoYXJlZC9hbmltYXRpb25zL2xpc3QvYW5pbWF0ZS1saXN0LWZyb20tbGVmdC5hbmltYXRpb24nO1xuaW1wb3J0IHsgUGFyZW50QmxvY2tEdG8gfSBmcm9tICcuL2R0b3MvYmxvY2tzL3BhcmVudC1ibG9jay5kdG8nO1xuaW1wb3J0IHsgRm9ybXNEdG8gfSBmcm9tICcuL2R0b3MvZm9ybXMvZm9ybXMuZHRvJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJsb2Nrc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9ibG9ja3MvYmxvY2tzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd2Itd2l6aS1ibG9jaycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dpemktYmxvY2suY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogW10sXG4gICAgYW5pbWF0aW9uczogW2FuaW1hdGVMaXN0RnJvbVJpZ2h0KCcyMDBtcyBlYXNlLWluLW91dCcsICcxMDBtcycpLCBhbmltYXRlTGlzdEZyb21MZWZ0KCcxMDBtcyBlYXNlLWluLW91dCcpXSxcbn0pXG5leHBvcnQgY2xhc3MgV2l6aUJsb2NrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGF2YWlsYWJsZUNvbXBvbmVudHM6IEFycmF5PHN0cmluZz47XG4gICAgQElucHV0KCkgdGV4dHM6IFRyYW5zbGF0aW9uc0R0byA9IG51bGw7XG4gICAgQElucHV0KCkgY29udGVudCA9IFtdO1xuICAgIEBJbnB1dCgpIHZlcmJvc2UgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBpc0luRGV2ID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgY29udGVudENoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PFBhcmVudEJsb2NrRHRvPj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdjb21wb25lbnRMaXN0JykgY29tcG9uZW50TGlzdDtcblxuICAgIGJyZWFrUG9pbnRTaXplID0gMTQyMTtcbiAgICBibG9ja3NDb250ZW50cyA9IFtdO1xuICAgIHNlbGVjdGVkU3RydWN0dXJlOiBTdHJ1Y3R1cmVDb25maWdEdG8gPSBudWxsO1xuICAgIHNlbGVjdGVkQ29uZmlnOiBGb3Jtc0R0bzxQYXJlbnRCbG9ja0R0bz4gPSBudWxsO1xuICAgIGNvbXBvbmVudHM6IFN0cnVjdHVyZXNMaXN0RHRvID0gbnVsbDtcbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25zRHRvID0gbnVsbDtcbiAgICBpc0hpZGRlbkNvbmZpZyA9IFtdO1xuICAgIGlzRmlyc3RJbkxvb3AgPSBmYWxzZTtcbiAgICBsb29wSW5kZXggPSAwO1xuICAgIGhvdmVyQ2hpbGRyZW46IGJvb2xlYW4gfCBzdHJpbmc7XG5cbiAgICBjdXJyZW50VG9wVG9vbCA9IDA7XG4gICAgdG9vbFVucGluID0gZmFsc2U7XG4gICAgdG9vbEhpZGRlbiA9IGZhbHNlO1xuICAgIHNtYWxsU2NyZWVuID0gZmFsc2U7XG5cblxuICAgIGJsb2NrQ29tcG9uZW50OiBCbG9ja3NDb21wb25lbnQ7XG5cbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIGNvbmZpZ0V2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIHByaXZhdGUgY29udGVudEV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIHByaXZhdGUgd2l6aWJsb2NrU2VydmljZXNMaXN0OiBBcnJheTxhbnk+ID0gW107XG5cbiAgICBwcml2YXRlIHByb2dyZXNzaXZlQmxvY2tMb2FkaW5nSW50ZXJ2YWw6IGFueTtcbiAgICBwcml2YXRlIExPQURJTkdfT0ZGU0VUID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIHByaXZhdGUgUFJPR1JFU1NJVkVfTE9BRElOR19JTlRFUlZBTCA9IDMwMDA7XG5cbiAgICBwcml2YXRlIGFsbFdpemlibG9ja3NMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZHVwbGljYXRlQ29udGVudFN1YnNjcmlwdGlvbjogYW55O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgd2l6aUJsb2NrU2VydmljZTogV2l6aUJsb2NrU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZSxcbiAgICAgICAgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBAVmlld0NoaWxkKCdibG9jaycsIHsgc3RhdGljOiBmYWxzZSB9KSBzZXQgY29udGVudEJsb2NrKGNvbnRyb2w6IEJsb2Nrc0NvbXBvbmVudCkge1xuICAgICAgICB0aGlzLmJsb2NrQ29tcG9uZW50ID0gY29udHJvbDtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgW10pIG9uV2luZG93U2Nyb2xsKCkge1xuICAgICAgICBjb25zdCBjdXJyZW50VG9wID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIGlmICh0aGlzLnRvb2xVbnBpbiAmJiAhdGhpcy50b29sSGlkZGVuICYmIE1hdGguYWJzKGN1cnJlbnRUb3AgLSB0aGlzLmN1cnJlbnRUb3BUb29sKSA+IDgwMCkge1xuICAgICAgICAgICAgdGhpcy50b29sSGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuYWxsV2l6aWJsb2Nrc0xvYWRlZCkge1xuICAgICAgICAgICAgdGhpcy5jaGVja1dpemlibG9ja3MoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMuYXZhaWxhYmxlQ29tcG9uZW50cyB8fCB0aGlzLmF2YWlsYWJsZUNvbXBvbmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZUNvbXBvbmVudHMgPSBbXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8uc2xpZGVycyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by52aWRlb3MsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ubGF1bmNoX3ZpZGVvcyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5pbWFnZXMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8udGV4dF9iYWNrZ3JvdW5kcyxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5pbWFnZXNfdGV4dHMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8udGV4dHMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8uZm9ybXMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ucHJvZHVjdHNfbGlzdCxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5wcm9kdWN0LFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnNvY2lhbHMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ucmFzc3VyYW5jZXMsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ubmV3c2xldHRlcixcbiAgICAgICAgICAgICAgICBUeXBlc0R0by53aXRuZXNzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnJldmlld3MsXG4gICAgICAgICAgICAgICAgVHlwZXNEdG8ucXVvdGVzLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnRpbWVyLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLm1hcCxcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5jb2RlLFxuICAgICAgICAgICAgICAgIFR5cGVzRHRvLnNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICBUeXBlc0R0by5mYXEsXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5zZXREb2N1bWVudEV2ZW50TGlzdGVuZXIoKTtcblxuICAgICAgICBpZiAodGhpcy5pc0luRGV2KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNJbkRldiA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2Uuc2V0Q29uZmlnKHRoaXMuYXZhaWxhYmxlQ29tcG9uZW50cywgdGhpcy50ZXh0cyk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50cyA9IHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRDb21wb25lbnRzKCk7XG5cbiAgICAgICAgdGhpcy5kdXBsaWNhdGVDb250ZW50U3Vic2NyaXB0aW9uID0gdGhpcy5jb250ZW50U2VydmljZS5nZXREdXBsaWNhdGVDb250ZW50RW1pdHRlcigpLnN1YnNjcmliZSgoYmxvY2spID0+IHtcbiAgICAgICAgICAgIC8vIHByZXZlbnQgZGlzcGxheSBpbml0IGlzc3VlXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrV2l6aWJsb2NrcygpO1xuICAgICAgICAgICAgfSwgMjApO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbiA9IHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRUcmFuc2xhdGlvbigpO1xuICAgICAgICB0aGlzLndpemlibG9ja1NlcnZpY2VzTGlzdCA9IHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRCbG9ja3NTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMuY29uZmlnRXZlbnRTdWJzY3JpcHRpb24gPSB0aGlzLmNvbmZpZ1NlcnZpY2VcbiAgICAgICAgICAgIC5jb25maWdFdmVudCgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZztcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmlyc3RJbkxvb3AgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvb3BJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBiIG9mIHRoaXMuYmxvY2tzQ29udGVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiWydibG9jayddICYmIGJbJ2Jsb2NrJ11bJ3V1aWQnXSA9PT0gdGhpcy5zZWxlY3RlZENvbmZpZy5ibG9jay51dWlkICYmIHRoaXMubG9vcEluZGV4IDwgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaXJzdEluTG9vcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvb3BJbmRleCArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaG92ZXJDaGlsZHJlbiA9IHRoaXMuc2VsZWN0ZWRDb25maWcuYmxvY2sudXVpZDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhvdmVyQ2hpbGRyZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudG9vbEhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEhpZGRlbigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFN0cnVjdHVyZSA9PT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkQ29uZmlnICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3RydWN0dXJlT25GbHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMudmVyYm9zZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0F2YWlsYWJsZSBjb250ZW50IG9uIHN0YXJ0JywgdGhpcy5jb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRlbnRFdmVudFN1YnNjcmlwdGlvbiA9IHRoaXMuY29udGVudFNlcnZpY2VcbiAgICAgICAgICAgIC5jb250ZW50RXZlbnQoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudFNlcnZpY2UuY29udGVudHMubGVuZ3RoIDwgdGhpcy5ibG9ja3NDb250ZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9wID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb25Ub29scyh0b3ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmJsb2Nrc0NvbnRlbnRzID0gdGhpcy5jb250ZW50U2VydmljZS5jb250ZW50cztcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDb250ZW50KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5jb250ZW50cyA9IHRoaXMuY29udGVudDtcbiAgICAgICAgdGhpcy5yZXNpemVXaXRoV2lkdGgod2luZG93LmlubmVyV2lkdGgpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5jb250ZW50U2VydmljZS5jb250ZW50cykge1xuICAgICAgICAgICAgaWYgKChpdGVtIGluc3RhbmNlb2YgRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+KSAgJiYgdHlwZW9mIGl0ZW0uYmxvY2suaGlkZV9ibG9jayAhPT0gdHlwZW9mIHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmJsb2NrLmhpZGVfYmxvY2sgPT09ICcwJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSGlkZGVuQ29uZmlnLnB1c2goaXRlbS5ibG9jay51dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gYWRkZWQgc21hbGwgdGltZW91dCB0byBwcmV2ZW50IGFueSBsb2FkaW5nIGlzc3Vlc1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tXaXppYmxvY2tzKCk7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgICAgIC8vIHN0YXJ0IHByb2dyZXNzaXZlIGxvYWRpbmdcbiAgICAgICAgdGhpcy5wcm9ncmVzc2l2ZUJsb2NrTG9hZGluZ0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc2l2ZUJsb2NrTG9hZGluZygpO1xuICAgICAgICB9LCB0aGlzLlBST0dSRVNTSVZFX0xPQURJTkdfSU5URVJWQUwpO1xuICAgIH1cblxuICAgIGFkZFRoaXMoc2VsZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5ibG9ja0NvbXBvbmVudC5hZGRUaGlzU2VsZWN0ZWQoc2VsZWN0ZWQsIHRoaXMudmVyYm9zZSk7XG4gICAgfVxuXG4gICAgY2xvc2VDb25maWcoKSB7XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBudWxsO1xuICAgIH1cblxuICAgIHNlbGVjdFN0cnVjdHVyZU9uRmx5KCkge1xuICAgICAgICB0aGlzLmNvbXBvbmVudHMuY29tcG9uZW50cy5mb3JFYWNoKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgIGNvbXBvbmVudC5jb250ZW50cy5mb3JFYWNoKChzdWJDb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3ViQ29tcG9uZW50LnR5cGUgPT09IHRoaXMuc2VsZWN0ZWRDb25maWcudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3RydWN0dXJlID0gY29tcG9uZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBlbWl0Q29udGVudCgpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkRHRvID0gW107XG4gICAgICAgIHRoaXMuYmxvY2tzQ29udGVudHMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgcGFyc2VkRHRvLnB1c2godi5ibG9jayk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvbnRlbnRDaGFuZ2UuZW1pdChwYXJzZWREdG8pO1xuICAgIH1cblxuICAgIG9uUmVzaXplKCRldmVudCkge1xuICAgICAgICB0aGlzLnJlc2l6ZVdpdGhXaWR0aCgkZXZlbnQudGFyZ2V0LmlubmVyV2lkdGgpO1xuICAgIH1cblxuICAgIHJlc2l6ZVdpdGhXaWR0aChjdXJyZW50QnJvd3NlclNpemUpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRCcm93c2VyU2l6ZSA8IHRoaXMuYnJlYWtQb2ludFNpemUpIHtcbiAgICAgICAgICAgIHRoaXMudG9vbFVucGluID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc21hbGxTY3JlZW4gPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b29sVW5waW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc21hbGxTY3JlZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFVucGluKCkge1xuICAgICAgICBjb25zdCB0b3AgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgdGhpcy50b29sVW5waW4gPSAhdGhpcy50b29sVW5waW47XG4gICAgICAgIGlmICh0aGlzLnRvb2xVbnBpbikge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVQb3NpdGlvblRvb2xzKHRvcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRIaWRkZW4oKSB7XG4gICAgICAgIGNvbnN0IHRvcCA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgICB0aGlzLnRvb2xIaWRkZW4gPSAhdGhpcy50b29sSGlkZGVuO1xuICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uVG9vbHModG9wKTtcbiAgICB9XG5cbiAgICBjYWxjdWxhdGVQb3NpdGlvblRvb2xzKHRvcCkge1xuICAgICAgICBpZiAoIXRoaXMudG9vbEhpZGRlbikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9wVG9vbCA9IHRvcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFRvcFRvb2wgPSAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlQ29uZmlnV2l6aWJsb2NrcyhldmVudCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29uZmlnID0gZXZlbnQuY29uZmlnO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VsZWN0ZWRDb25maWcuZm9ybXMgIT09IHR5cGVvZiB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnNlbGVjdGVkQ29uZmlnLmZvcm1zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09ICdoaWRlX2Jsb2NrJyAmJiBpdGVtLnZhbHVlID09PSAnMCcgJiYgIXRoaXMuaXNIaWRkZW5Db25maWcuaW5jbHVkZXModGhpcy5zZWxlY3RlZENvbmZpZy5ibG9jay51dWlkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSGlkZGVuQ29uZmlnLnB1c2godGhpcy5zZWxlY3RlZENvbmZpZy5ibG9jay51dWlkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uaWQgPT09ICdoaWRlX2Jsb2NrJyAmJiBpdGVtLnZhbHVlID09PSAnMScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0hpZGRlbkNvbmZpZyA9IHRoaXMuaXNIaWRkZW5Db25maWcuZmlsdGVyKChlKSA9PiBlICE9PSB0aGlzLnNlbGVjdGVkQ29uZmlnLmJsb2NrLnV1aWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2UuX2Jsb2Nrc1NlcnZpY2UgPSBbXTtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gW107XG4gICAgICAgIHRoaXMuYmxvY2tzQ29udGVudHMgPSBbXTtcblxuICAgICAgICB0aGlzLmNvbmZpZ0V2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuY29udGVudEV2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuY29udGVudFNlcnZpY2UuZGVsZXRlQWxsKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudmVyYm9zZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0dvb2RCeWUgV2l6aUJsb2NrIFlvdSBXZXJlIExvdmVkJywgJ0Rlc3Ryb3kgb2YgVGhpcyBTZXNzaW9uJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNoZWNrV2l6aWJsb2NrcygpIHtcbiAgICAgICAgbGV0IGxvYWRlZEFsbEJsb2NrcyA9IHRydWU7XG4gICAgICAgIGxldCBibG9ja0NvbnRhaW5lcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcud2ItYmxvY2tzX19jb250YWluZXInKTtcbiAgICAgICAgbGV0IHdpbmRvd0hlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgdmFyIHNjcm9sbFkgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgdGhpcy5jb250ZW50LmZvckVhY2goKGJsb2NrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEoYmxvY2sgaW5zdGFuY2VvZiBGb3Jtc0R0bzxQYXJlbnRCbG9ja0R0bz4pKSB7XG4gICAgICAgICAgICAgICAgbG9hZGVkQWxsQmxvY2tzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdmFyIHJlY3QgPSBibG9ja0NvbnRhaW5lcnNbaW5kZXhdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIHZhciBwb3MgPSByZWN0LnRvcCArIHNjcm9sbFk7XG4gICAgICAgICAgICAgICAgaWYgKCh3aW5kb3dIZWlnaHQgKyBzY3JvbGxZICsgdGhpcy5MT0FESU5HX09GRlNFVCkgPj0gKHBvcykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50W2luZGV4XSA9IHRoaXMubG9hZFdpemlibG9jayhibG9jayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQgPSBsb2FkZWRBbGxCbG9ja3M7XG4gICAgICAgIHRoaXMuY29udGVudFNlcnZpY2UuY29udGVudHMgPSB0aGlzLmNvbnRlbnQ7XG4gICAgICAgIGlmICh0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQgJiYgdGhpcy5wcm9ncmVzc2l2ZUJsb2NrTG9hZGluZ0ludGVydmFsKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMucHJvZ3Jlc3NpdmVCbG9ja0xvYWRpbmdJbnRlcnZhbCk7XG4gICAgICAgICAgICB0aGlzLnByb2dyZXNzaXZlQmxvY2tMb2FkaW5nSW50ZXJ2YWwgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkV2l6aWJsb2NrKGJsb2NrOiBhbnkpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuICAgICAgICB0aGlzLndpemlibG9ja1NlcnZpY2VzTGlzdC5mb3JFYWNoKChzZXJ2aWNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoYmxvY2sudHlwZSA9PT0gc2VydmljZS50eXBlKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNlcnZpY2UuZ2V0Rm9ybSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBmb3JtIGZvciAnICsgc2VydmljZS50eXBlKCkgKyAnJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IHNlcnZpY2UuZ2V0Rm9ybShibG9jayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHlwZSA9IHNlcnZpY2UudHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2V0IGEgY29udGVudCcsIGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9ncmVzc2l2ZUJsb2NrTG9hZGluZygpIHtcbiAgICAgICAgbGV0IGxvYWRlZEFsbEJsb2NrcyA9IHRydWU7XG4gICAgICAgIGxldCBibG9ja3NMZWZ0VG9Mb2FkID0gMztcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuY29udGVudC5sZW5ndGg7ICsraW5kZXgpIHtcbiAgICAgICAgICAgIGlmIChibG9ja3NMZWZ0VG9Mb2FkID09PSAwKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoISh0aGlzLmNvbnRlbnRbaW5kZXhdIGluc3RhbmNlb2YgRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+KSkge1xuICAgICAgICAgICAgICAgIGxvYWRlZEFsbEJsb2NrcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFtpbmRleF0gPSB0aGlzLmxvYWRXaXppYmxvY2sodGhpcy5jb250ZW50W2luZGV4XSk7XG4gICAgICAgICAgICAgICAgYmxvY2tzTGVmdFRvTG9hZC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWxsV2l6aWJsb2Nrc0xvYWRlZCA9IGxvYWRlZEFsbEJsb2NrcztcbiAgICAgICAgaWYgKHRoaXMuYWxsV2l6aWJsb2Nrc0xvYWRlZCAmJiB0aGlzLnByb2dyZXNzaXZlQmxvY2tMb2FkaW5nSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5wcm9ncmVzc2l2ZUJsb2NrTG9hZGluZ0ludGVydmFsKTtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NpdmVCbG9ja0xvYWRpbmdJbnRlcnZhbCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgaWQ9XCJ3Yi1jb250YWluZXJcIlxuICAgIGNsYXNzPVwiY29sdW1ucyB3Yi1jb250YWluZXJcIlxuICAgICpuZ0lmPVwidHJhbnNsYXRpb25cIlxuICAgICNjb250YWluZXJcbiAgICAod2luZG93OnJlc2l6ZSk9XCJvblJlc2l6ZSgkZXZlbnQpXCJcbiAgICBbbmdDbGFzc109XCJ7ICdpcy1zbWFsbHNjcmVlbic6IHNtYWxsU2NyZWVuIH1cIlxuPlxuICAgIDxkaXZcbiAgICAgICAgY2RrRHJhZ1xuICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIiF0b29sVW5waW5cIlxuICAgICAgICBjbGFzcz1cImNvbHVtbiB3Yi1jb250YWluZXJfX3Rvb2xzXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtdW5waW5uZWQnOiB0b29sVW5waW4gJiYgIXRvb2xIaWRkZW4sICdpcy1zbWFsbHNjcmVlbic6IHNtYWxsU2NyZWVuLCAnaGFzLW5vLXRvb2wnOiB0b29sSGlkZGVuIH1cIlxuICAgICAgICBbc3R5bGUudG9wLnB4XT1cImN1cnJlbnRUb3BUb29sXCJcbiAgICA+XG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnaXMtaGlkZGVuJzogIXRvb2xIaWRkZW4gfVwiIChjbGljayk9XCJzZXRIaWRkZW4oKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8ZGl2IFtud2JUb29sVGlwXT1cIid3Yi5wYW5lbC5odG1sLjEnIHwgdHJhbnNsYXRlXCIgbndiVG9vbFRpcFBvc2l0aW9uPVwicmlnaHRcIiBjbGFzcz1cImlzLXRvb2x0aXAtaW5mb1wiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWFycm93LWZyb20tbGVmdFwiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7ICdpcy1oaWRkZW4nOiB0b29sSGlkZGVuIH1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi10b29sc1wiICpuZ0lmPVwic2VsZWN0ZWRTdHJ1Y3R1cmUgPT09IG51bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItdG9vbHNfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLXRvb2xzX19oZWFkZXJfX2FjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1yb3VuZGVkIGlzLXRvb2x0aXAtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwidG9vbFVucGluID8gJ3diLnBhbmVsLmh0bWwuMicgOiAoJ3diLnBhbmVsLmh0bWwuMycgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBud2JUb29sVGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0aGlzLnNldFVucGluKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmFyXCIgW25nQ2xhc3NdPVwieyAnZmEtdW5saW5rJzogIXRvb2xVbnBpbiwgJ2ZhLWxpbmsnOiB0b29sVW5waW4gfVwiPjwvaVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtcm91bmRlZCBpcy10b29sdGlwLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtud2JUb29sVGlwXT1cIid3Yi5wYW5lbC5odG1sLjQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBud2JUb29sVGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRIaWRkZW4oKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJmYXIgZmEtYXJyb3ctZnJvbS1yaWdodFwiPjwvaVxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIndiLXRvb2xzX19oZWFkZXJfX2xpc3RcIj57eyB0cmFuc2xhdGlvbi5saXN0X2NvbXBvbmVudCB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctc2Nyb2xsYmFyXG4gICAgICAgICAgICAgICAgICAgIFt2aXNpYmlsaXR5XT1cIidob3ZlcidcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbXBvbmVudHNcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgbWF4LWhlaWdodDogODV2aFwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvSGVpZ2h0RGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLXRvb2xzX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tdWx0aWxpbmVcIiBbQGFuaW1hdGVMaXN0RnJvbUxlZnRdPVwiY29tcG9uZW50cy5jb21wb25lbnRzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW4gaXMtNlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21wb25lbnQgb2YgY29tcG9uZW50cy5jb21wb25lbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkU3RydWN0dXJlID0gY29tcG9uZW50OyBzZWxlY3RlZENvbmZpZyA9IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIidhc3NldHMvYmxvY2tzL2ltYWdlcy9pY29ucy8nICsgY29tcG9uZW50LmltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cImNvbXBvbmVudC50ZXh0IHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbXBvbmVudC5pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgY29tcG9uZW50LnRleHQgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctc2Nyb2xsYmFyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29uZmlndXJhdGlvblwiICpuZ0lmPVwic2VsZWN0ZWRTdHJ1Y3R1cmUgIT09IG51bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwid2ItdG9vbHNfX2hlYWRlcl9fYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLXJvdW5kZWQgaXMtdG9vbHRpcC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbndiVG9vbFRpcF09XCJ0b29sVW5waW4gPyAnd2IucGFuZWwuaHRtbC4yJyA6ICgnd2IucGFuZWwuaHRtbC4zJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRoaXMuc2V0VW5waW4oKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJmYWxcIiBbbmdDbGFzc109XCJ7ICdmYS11bmxpbmsnOiAhdG9vbFVucGluLCAnZmEtbGluayc6IHRvb2xVbnBpbiB9XCI+PC9pXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1yb3VuZGVkIGlzLXRvb2x0aXAtbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW253YlRvb2xUaXBdPVwiJ3diLnBhbmVsLmh0bWwuNCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEhpZGRlbigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48aSBjbGFzcz1cImZhciBmYS1hcnJvdy1mcm9tLXJpZ2h0XCI+PC9pXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9faGVhZGVyLWNsaWNrIHdiLXRvb2xzX19oZWFkZXJfX2xpc3RcIiAoY2xpY2spPVwic2VsZWN0ZWRTdHJ1Y3R1cmUgPSBudWxsOyBjbG9zZUNvbmZpZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1hbmdsZS1sZWZ0XCI+PC9pPiB7eyBzZWxlY3RlZFN0cnVjdHVyZS50ZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9fc3ViaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJjbG9zZUNvbmZpZygpXCIgW25nQ2xhc3NdPVwieyAnaXMtYWN0aXZlJzogc2VsZWN0ZWRDb25maWcgPT09IG51bGwgfVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbi5zdHJ1Y3R1cmUgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgfX08L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtuZ0NsYXNzXT1cInsgJ2lzLWFjdGl2ZSc6IHNlbGVjdGVkQ29uZmlnICE9PSBudWxsIH1cIiAqbmdJZj1cInNlbGVjdGVkQ29uZmlnICE9PSBudWxsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uLmNvbmZpZyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICB9fTwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctc2Nyb2xsYmFyXG4gICAgICAgICAgICAgICAgICAgIFt2aXNpYmlsaXR5XT1cIidob3ZlcidcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBzXCJcbiAgICAgICAgICAgICAgICAgICAgcGVyZmVjdFNjcm9sbGJhclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgbWF4LWhlaWdodDogODB2aFwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvSGVpZ2h0RGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkQ29uZmlnID09PSBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWNvbmZpZ3VyYXRpb25fX2NvbnRlbnRfc3RydWN0dXJlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BhbmltYXRlTGlzdEZyb21SaWdodF09XCJzZWxlY3RlZFN0cnVjdHVyZS5jb250ZW50cy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiYmxvY2tzQ29udGVudHMubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiWydibG9jay1jb250ZW50J11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWQgb2Ygc2VsZWN0ZWRTdHJ1Y3R1cmUuY29udGVudHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInNlbGVjdGVkLmltYWdlIHwgaW1nUGF0aFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHNlbGVjdGVkLm5hbWUgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9fY29udGVudF9zdHJ1Y3R1cmVzX19kcmFnZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJzZWxlY3RlZC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWRyYWdnYWJsZSc6IGJsb2Nrc0NvbnRlbnRzLmxlbmd0aCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRUaGlzKHNlbGVjdGVkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9fY29udGVudF9zdHJ1Y3R1cmVzX19wcmV2aWV3XCIgKmNka0RyYWdQcmV2aWV3PjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9fY29udGVudF9zdHJ1Y3R1cmVzX19wbGFjZWhvbGRlclwiICpjZGtEcmFnUGxhY2Vob2xkZXI+PHNwYW4+PC9zcGFuPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZENvbmZpZyAhPT0gbnVsbFwiIGNsYXNzPVwid2ItY29uZmlndXJhdGlvbl9fY29udGVudF9jb25maWd1cmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdiLWNvbmZpZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmlyc3RdPVwiaXNGaXJzdEluTG9vcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb25maWdzXT1cInNlbGVjdGVkQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZUNvbmZpZyk9XCJjaGFuZ2VDb25maWdXaXppYmxvY2tzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3diLWNvbmZpZ3M+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1zY3JvbGxiYXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiB3Yi1jb250YWluZXJfX2NvbnRlbnRcIiBbbmdDbGFzc109XCJ7ICdoYXMtbm8tdG9vbCc6IHRvb2xIaWRkZW4gfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbnRlbnRfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxwPjxpIGNsYXNzPVwiZmFzIGZhLWxvY2tcIj48L2k+IHt7IHRyYW5zbGF0aW9uLmhlYWRlciB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbnRlbnRfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8d2ItYmxvY2tzIFtkeW5hbWljSGlkZGVuXT1cImlzSGlkZGVuQ29uZmlnXCIgW3NlbGVjdGVkQ29uZmlnXT1cImhvdmVyQ2hpbGRyZW5cIiAjYmxvY2sgW2NvbnRlbnRzXT1cImJsb2Nrc0NvbnRlbnRzXCI+PC93Yi1ibG9ja3M+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1jb250ZW50X19mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8cD48aSBjbGFzcz1cImZhcyBmYS1sb2NrXCI+PC9pPiB7eyB0cmFuc2xhdGlvbi5mb290ZXIgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxociBpZD1cIndiLWZvb3Rlcl9fYmxvY2tcIiAvPlxuIl19
@@ -7880,6 +7880,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
7880
7880
 
7881
7881
  class ContentService {
7882
7882
  constructor() {
7883
+ this.duplicateContent = new EventEmitter();
7883
7884
  this._contents = [];
7884
7885
  this.contentsSource = new Subject();
7885
7886
  this.contentsDone = this.contentsSource.asObservable();
@@ -7931,9 +7932,10 @@ class ContentService {
7931
7932
  }
7932
7933
  });
7933
7934
  if (keyToCopy !== null) {
7934
- const toCopy = this.deepCopy(this._contents[keyToCopy]);
7935
- toCopy.block.uuid = v4();
7935
+ let toCopy = this.deepCopy(this._contents[keyToCopy].block);
7936
+ toCopy.uuid = v4();
7936
7937
  this._contents.splice(keyToCopy + 1, 0, toCopy);
7938
+ this.duplicateContent.emit(toCopy);
7937
7939
  }
7938
7940
  this.contentsSource.next();
7939
7941
  }
@@ -7989,6 +7991,9 @@ class ContentService {
7989
7991
  }
7990
7992
  throw new Error('Unable to copy obj! Its type not supported.');
7991
7993
  }
7994
+ getDuplicateContentEmitter() {
7995
+ return this.duplicateContent;
7996
+ }
7992
7997
  }
7993
7998
  ContentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ContentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7994
7999
  ContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ContentService });
@@ -25316,6 +25321,12 @@ class WiziBlockComponent {
25316
25321
  }
25317
25322
  this.wiziBlockService.setConfig(this.availableComponents, this.texts);
25318
25323
  this.components = this.wiziBlockService.getComponents();
25324
+ this.duplicateContentSubscription = this.contentService.getDuplicateContentEmitter().subscribe((block) => {
25325
+ // prevent display init issue
25326
+ setTimeout(() => {
25327
+ this.checkWiziblocks();
25328
+ }, 20);
25329
+ });
25319
25330
  this.translation = this.wiziBlockService.getTranslation();
25320
25331
  this.wiziblockServicesList = this.wiziBlockService.getBlocksService();
25321
25332
  this.configEventSubscription = this.configService
@@ -25475,8 +25486,9 @@ class WiziBlockComponent {
25475
25486
  });
25476
25487
  this.allWiziblocksLoaded = loadedAllBlocks;
25477
25488
  this.contentService.contents = this.content;
25478
- if (this.allWiziblocksLoaded) {
25489
+ if (this.allWiziblocksLoaded && this.progressiveBlockLoadingInterval) {
25479
25490
  clearInterval(this.progressiveBlockLoadingInterval);
25491
+ this.progressiveBlockLoadingInterval = null;
25480
25492
  }
25481
25493
  });
25482
25494
  }
@@ -25512,8 +25524,9 @@ class WiziBlockComponent {
25512
25524
  }
25513
25525
  }
25514
25526
  this.allWiziblocksLoaded = loadedAllBlocks;
25515
- if (this.allWiziblocksLoaded) {
25527
+ if (this.allWiziblocksLoaded && this.progressiveBlockLoadingInterval) {
25516
25528
  clearInterval(this.progressiveBlockLoadingInterval);
25529
+ this.progressiveBlockLoadingInterval = null;
25517
25530
  }
25518
25531
  }
25519
25532
  }