@eo-sdk/client 9.0.0-rc.9 → 9.0.1

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.
@@ -59,6 +59,20 @@ export class DynamicListComponent {
59
59
  this.selectedNodes = null;
60
60
  }
61
61
  }
62
+ else {
63
+ if (this.multiselect) {
64
+ this.selectedNodes = values.map(v => {
65
+ let node = {};
66
+ node[this.valueField] = v;
67
+ return node;
68
+ });
69
+ }
70
+ else {
71
+ let node = {};
72
+ node[this.valueField] = value;
73
+ this.selectedNodes = node;
74
+ }
75
+ }
62
76
  const nodes = !this.selectedNodes || Array.isArray(this.selectedNodes) ? this.selectedNodes || [] : [this.selectedNodes];
63
77
  if (this._list && (nodes.length !== values.length || nodes.some((n, i) => n[this.valueField] !== values[i]))) {
64
78
  this.buildTree();
@@ -75,7 +89,7 @@ export class DynamicListComponent {
75
89
  this.setFormControlValue(wasInvalid);
76
90
  }
77
91
  onAutoCompleteUnselect(node) {
78
- this.selectedNodes = this.selectedNodes.filter((sNode) => sNode.id !== node.id);
92
+ this.selectedNodes = this.selectedNodes.filter((sNode) => sNode.value !== node.value);
79
93
  this.setFormControlValue();
80
94
  }
81
95
  onTreeSelectionChanged(evt) {
@@ -101,7 +115,7 @@ export class DynamicListComponent {
101
115
  let v;
102
116
  let changed;
103
117
  if (this.multiselect) {
104
- v = this.selectedNodes ? this.selectedNodes.map((node) => node.data[this.valueField]) : [];
118
+ v = this.selectedNodes ? this.selectedNodes.map((node) => node[this.valueField]) : [];
105
119
  changed = !this.value || !(v.length === this.value.length && v.every((val) => this.value.some((curVal) => curVal === val)));
106
120
  }
107
121
  else {
@@ -114,7 +128,6 @@ export class DynamicListComponent {
114
128
  }
115
129
  }
116
130
  buildTree() {
117
- this.selectedNodes = [];
118
131
  this.autocompleteValues = [];
119
132
  let tree = [];
120
133
  for (let i = 0; i < this._list.entries.length; i++) {
@@ -147,8 +160,14 @@ export class DynamicListComponent {
147
160
  for (let i = 0; i < this.value.length; i++) {
148
161
  const isTreeNodeValueInValue = node.data[this.valueField] === this.value[i];
149
162
  if (isTreeNodeValueInValue) {
150
- node.selected = true;
151
- this.selectedNodes.push(node);
163
+ const selectedNodeThatHasValue = this.selectedNodes.find(sN => sN[this.valueField] === this.value[i]);
164
+ if (!selectedNodeThatHasValue) {
165
+ node.selected = true;
166
+ this.selectedNodes.push(node);
167
+ }
168
+ else {
169
+ selectedNodeThatHasValue.selected = true;
170
+ }
152
171
  }
153
172
  }
154
173
  }
@@ -249,4 +268,4 @@ DynamicListComponent.propDecorators = {
249
268
  filterFunction: [{ type: Input, args: ['filterFunction',] }],
250
269
  listObject: [{ type: Input, args: ['listObject',] }]
251
270
  };
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvZHluYW1pYy1saXN0L2R5bmFtaWMtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBSUwsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDZCxNQUFNLGdCQUFnQixDQUFDO0FBc0J4QixNQUFNLE9BQU8sb0JBQW9CO0lBaUUvQjtRQVpBLGVBQVUsR0FBRyxPQUFPLENBQUM7UUFDckIsb0JBQWUsR0FBRyxTQUFTLENBQUM7UUFDNUIscUJBQWdCLEdBQUcsYUFBYSxDQUFDO1FBQ2pDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDUixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsWUFBTyxHQUFHLElBQUksQ0FBQztRQUt2Qix1QkFBa0IsR0FBZSxFQUFFLENBQUM7UUFLcEMsb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1FBQzdCLENBQUMsQ0FBQTtJQUhELENBQUM7SUF0REQsSUFDSSxjQUFjLENBQUMsSUFBYztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBSUQsSUFDSSxVQUFVLENBQUMsRUFBTztRQUNwQixJQUFJLEVBQUUsRUFBRTtZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtnQkFDckMsSUFBRyxJQUFJ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QUFDO1lBQzdCLFdBQVcsRUFBRTtnQkFDWCxLQUFLLEVBQUUsS0FBSzthQUNiO1NBQ0YsQ0FBQztJQUNKLENBQUM7OztZQWpSRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsODVEQUE0QztnQkFFNUMsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQ25ELEtBQUssRUFBRSxJQUFJO3FCQUNaO29CQUNEO3dCQUNFLE9BQU8sRUFBRSxhQUFhO3dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO3dCQUNuRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjs7YUFDRjs7OztnQ0FHRSxTQUFTLFNBQUMsY0FBYztpQ0FDeEIsU0FBUyxTQUFDLFFBQVE7d0JBRWxCLEtBQUs7MEJBQ0wsS0FBSzswQkFDTCxLQUFLO3VCQUNMLEtBQUs7NkJBSUwsS0FBSyxTQUFDLGdCQUFnQjt5QkFVdEIsS0FBSyxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgVmFsaWRhdG9yLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgTkdfVkFMSURBVE9SU1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0F1dG9Db21wbGV0ZX0gZnJvbSAncHJpbWVuZy9wcmltZW5nJztcbmltcG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uL3RyZWUvdHJlZS5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWR5bmFtaWMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEeW5hbWljTGlzdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IER5bmFtaWNMaXN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlJykgYXV0b0NvbXBsZXRlSW5wdXQ6IEF1dG9Db21wbGV0ZTtcbiAgQFZpZXdDaGlsZCgnYnV0dG9uJykgYXV0b0NvbXBsZXRlQnV0dG9uO1xuXG4gIEBJbnB1dCgpIHNpdHVhdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KCkgcGlja2VyVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfZmlsdGVyRnVuYzogRnVuY3Rpb247XG5cbiAgQElucHV0KCdmaWx0ZXJGdW5jdGlvbicpXG4gIHNldCBmaWx0ZXJGdW5jdGlvbihmdW5jOiBGdW5jdGlvbikge1xuICAgIHRoaXMuX2ZpbHRlckZ1bmMgPSBmdW5jO1xuICAgIGlmICh0aGlzLl9saXN0KSB7XG4gICAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2xpc3Q6IGFueTtcblxuICBASW5wdXQoJ2xpc3RPYmplY3QnKVxuICBzZXQgbGlzdE9iamVjdChsbzogYW55KSB7XG4gICAgaWYgKGxvKSB7XG4gICAgICB0aGlzLl9saXN0ID0gbG87XG4gICAgICBpZiAobG8uY29uZmlnICYmIGxvLmNvbmZpZy52YWx1ZUZpZWxkKSB7XG4gICAgICAgIGlmKHRoaXMuc2VsZWN0ZWROb2Rlcyl7XG4gICAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHRoaXMuc2VsZWN0ZWROb2Rlcy5tYXAoc24gPT4ge1xuICAgICAgICAgICAgICBzbltsby5jb25maWcudmFsdWVGaWVsZF0gPSBzblt0aGlzLnZhbHVlRmllbGRdO1xuICAgICAgICAgICAgICByZXR1cm4gc247XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzW2xvLmNvbmZpZy52YWx1ZUZpZWxkXSA9IHRoaXMuc2VsZWN0ZWROb2Rlc1t0aGlzLnZhbHVlRmllbGRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlRmllbGQgPSBsby5jb25maWcudmFsdWVGaWVsZDtcbiAgICAgIH1cbiAgICAgIGlmIChsby5jb25maWcgJiYgbG8uY29uZmlnLmRlc2NyaXB0aW9uRmllbGQpIHtcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbkZpZWxkID0gbG8uY29uZmlnLmRlc2NyaXB0aW9uRmllbGQ7XG4gICAgICB9XG4gICAgICBpZiAobG8uY29uZmlnICYmIGxvLmNvbmZpZy5zdWJFbnRyaWVzRmllbGQpIHtcbiAgICAgICAgdGhpcy5zdWJFbnRyaWVzRmllbGQgPSBsby5jb25maWcuc3ViRW50cmllc0ZpZWxkO1xuICAgICAgfVxuICAgICAgdGhpcy5idWlsZFRyZWUoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdDtcbiAgfVxuXG4gIHZhbHVlRmllbGQgPSAndmFsdWUnO1xuICBzdWJFbnRyaWVzRmllbGQgPSAnZW50cmllcyc7XG4gIGRlc2NyaXB0aW9uRmllbGQgPSAnZGVzY3JpcHRpb24nO1xuICBkaXNwbGF5ID0gZmFsc2U7XG4gIHByaXZhdGUgZGlydHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1ZhbGlkID0gdHJ1ZTtcbiAgdmFsdWU7XG4gIHRyZWU6IFRyZWVOb2RlW107XG4gIHNlbGVjdGVkTm9kZXM6IGFueTtcbiAgYXV0b2NvbXBsZXRlUmVzO1xuICBhdXRvY29tcGxldGVWYWx1ZXM6IFRyZWVOb2RlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgbnVsbDtcbiAgICBjb25zdCB2YWx1ZXMgPSAhdGhpcy52YWx1ZSB8fCBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSB8fCBbXSA6IFt0aGlzLnZhbHVlXTtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBub2RlcyA9ICF0aGlzLnNlbGVjdGVkTm9kZXMgfHwgQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkTm9kZXMpID8gdGhpcy5zZWxlY3RlZE5vZGVzIHx8IFtdIDogW3RoaXMuc2VsZWN0ZWROb2Rlc107XG5cbiAgICBpZiAodGhpcy5fbGlzdCAmJiAobm9kZXMubGVuZ3RoICE9PSB2YWx1ZXMubGVuZ3RoIHx8IG5vZGVzLnNvbWUoKG4sIGkpID0+IG5bdGhpcy52YWx1ZUZpZWxkXSAhPT0gdmFsdWVzW2ldKSkpIHtcbiAgICAgIHRoaXMuYnVpbGRUcmVlKCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIG9uQXV0b0NvbXBsZXRlU2VsZWN0KG5vZGU/KSB7XG4gICAgY29uc3Qgd2FzSW52YWxpZCA9ICF0aGlzLmlzVmFsaWQ7XG4gICAgdGhpcy5pc1ZhbGlkID0gdHJ1ZTtcbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUod2FzSW52YWxpZCk7XG4gIH1cblxuICBvbkF1dG9Db21wbGV0ZVVuc2VsZWN0KG5vZGU/KSB7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdGhpcy5zZWxlY3RlZE5vZGVzLmZpbHRlcigoc05vZGUpID0+IHNOb2RlLmlkICE9PSBub2RlLmlkKTtcbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIG9uVHJlZVNlbGVjdGlvbkNoYW5nZWQoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qgd2FzSW52YWxpZCA9ICF0aGlzLmlzVmFsaWQ7XG4gICAgdGhpcy5pc1ZhbGlkID0gdHJ1ZTtcbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUod2FzSW52YWxpZCk7XG4gIH1cblxuICBvbkNsZWFyKCkge1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbmQgcHJvcGFnYXRlcyB0aGUgZm9ybSBjb250cm9scyB2YWx1ZSBiYXNlZCBvbiB0aGUgY29tcG9uZW50cyBpbm5lciB2YWx1ZXMuIFByb3BhZ2F0ZXMgb25seVxuICAgKiB3aGVuIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZC5cbiAgICogQHBhcmFtIGZvcmNlUHJvcGFnYXRpb24gLSBmb3JjZXMgcHJvcGFnYXRpb24gZXZlbiBpZiB0aGUgdmFsdWUgaGFzbid0IGJlZW4gY2hhbmdlZFxuICAgKi9cbiAgcHJpdmF0ZSBzZXRGb3JtQ29udHJvbFZhbHVlKGZvcmNlUHJvcGFnYXRpb24/OiBib29sZWFuKSB7XG4gICAgbGV0IHY7XG4gICAgbGV0IGNoYW5nZWQ6IGJvb2xlYW47XG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHYgPSB0aGlzLnNlbGVjdGVkTm9kZXMgPyB0aGlzLnNlbGVjdGVkTm9kZXMubWFwKChub2RlKSA9PiBub2RlLmRhdGFbdGhpcy52YWx1ZUZpZWxkXSkgOiBbXTtcbiAgICAgIGNoYW5nZWQgPSAhdGhpcy52YWx1ZSB8fCAhKHYubGVuZ3RoID09PSB0aGlzLnZhbHVlLmxlbmd0aCAmJiB2LmV2ZXJ5KCh2YWwpID0+IHRoaXMudmFsdWUuc29tZSgoY3VyVmFsKSA9PiBjdXJWYWwgPT09IHZhbCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdiA9IHRoaXMuc2VsZWN0ZWROb2RlcyA/IHRoaXMuc2VsZWN0ZWROb2Rlcy5kYXRhW3RoaXMudmFsdWVGaWVsZF0gOiBudWxsO1xuICAgICAgY2hhbmdlZCA9IHYgIT09IHRoaXMudmFsdWU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkIHx8IGZvcmNlUHJvcGFnYXRpb24pIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2O1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRyZWUoKSB7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW107XG4gICAgdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMgPSBbXTtcbiAgICBsZXQgdHJlZTogVHJlZU5vZGVbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbGlzdC5lbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmFkZFRyZWVOb2RlKHRyZWUsIHRoaXMuX2xpc3QuZW50cmllc1tpXSk7XG4gICAgfVxuICAgIHRoaXMudHJlZSA9IHRyZWU7XG4gIH1cblxuICBwcml2YXRlIGFkZFRyZWVOb2RlKHBhcmVudE5vZGU6IFRyZWVOb2RlW10sIGxpc3RFbnRyeSkge1xuICAgIGlmICh0aGlzLmZpbHRlckZ1bmN0aW9uICYmICF0aGlzLmZpbHRlckZ1bmN0aW9uKGxpc3RFbnRyeSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG5vZGU6IFRyZWVOb2RlID0gdGhpcy5saXN0RW50cnlUb1RyZWVOb2RlKGxpc3RFbnRyeSk7XG4gICAgaWYgKG5vZGUuc2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMucHVzaChub2RlKTtcbiAgICB9XG4gICAgaWYgKGxpc3RFbnRyeVt0aGlzLnN1YkVudHJpZXNGaWVsZF0pIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdEVudHJ5W3RoaXMuc3ViRW50cmllc0ZpZWxkXS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLmFkZFRyZWVOb2RlKG5vZGUuY2hpbGRyZW4sIGxpc3RFbnRyeVt0aGlzLnN1YkVudHJpZXNGaWVsZF1baV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoZWNrU2VsZWN0ZWQobm9kZSk7XG4gICAgcGFyZW50Tm9kZS5wdXNoKG5vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1NlbGVjdGVkKG5vZGU6IFRyZWVOb2RlKSB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaXNUcmVlTm9kZVZhbHVlSW5WYWx1ZSA9IG5vZGUuZGF0YVt0aGlzLnZhbHVlRmllbGRdID09PSB0aGlzLnZhbHVlW2ldO1xuICAgICAgICBpZiAoaXNUcmVlTm9kZVZhbHVlSW5WYWx1ZSkge1xuICAgICAgICAgIG5vZGUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChub2RlLmRhdGFbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhdXRvY29tcGxldGVGbihldnQpIHtcblxuICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMuZmlsdGVyKChhY05vZGUpID0+IHtcbiAgICAgIGlmICh0aGlzLmZpbHRlckZ1bmN0aW9uICYmICF0aGlzLmZpbHRlckZ1bmN0aW9uKGFjTm9kZS5kYXRhKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzLmZpbmQoKG5vZGUpID0+IGFjTm9kZS5kYXRhW3RoaXMudmFsdWVGaWVsZF0gPT09IG5vZGUuZGF0YVt0aGlzLnZhbHVlRmllbGRdKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjTm9kZS5kYXRhW3RoaXMudmFsdWVGaWVsZF0udG9Mb3dlckNhc2UoKS5pbmRleE9mKGV2dC5xdWVyeS50b0xvd2VyQ2FzZSgpKSAhPT0gLTEgfHxcbiAgICAgICAgKGFjTm9kZS5kYXRhW3RoaXMuZGVzY3JpcHRpb25GaWVsZF0gJiYgYWNOb2RlLmRhdGFbdGhpcy5kZXNjcmlwdGlvbkZpZWxkXS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZXZ0LnF1ZXJ5LnRvTG93ZXJDYXNlKCkpICE9PSAtMSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RFbnRyeVRvVHJlZU5vZGUobGlzdEVudHJ5KTogVHJlZU5vZGUge1xuICAgIGxldCBzZWxlY3RhYmxlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuX2xpc3QgJiYgdGhpcy5fbGlzdC5jb25maWcgJiYgdGhpcy5fbGlzdC5jb25maWcuYWxsZWxlbWVudHNzZWxlY3RhYmxlKSB7XG4gICAgICBzZWxlY3RhYmxlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0YWJsZSA9ICEobGlzdEVudHJ5W3RoaXMuc3ViRW50cmllc0ZpZWxkXSAmJiBsaXN0RW50cnlbdGhpcy5zdWJFbnRyaWVzRmllbGRdLmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIGxldCB0cmVlTm9kZSA9IHtcbiAgICAgIGlkOiBsaXN0RW50cnkuaWQgPyBsaXN0RW50cnkuaWQgOiBsaXN0RW50cnlbdGhpcy52YWx1ZUZpZWxkXSxcbiAgICAgIG5hbWU6IGxpc3RFbnRyeVt0aGlzLmRlc2NyaXB0aW9uRmllbGRdID8gbGlzdEVudHJ5W3RoaXMudmFsdWVGaWVsZF0gKyAnICgnICsgbGlzdEVudHJ5W3RoaXMuZGVzY3JpcHRpb25GaWVsZF0gKyAnKScgOiBsaXN0RW50cnlbdGhpcy52YWx1ZUZpZWxkXSxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIGV4cGFuZGVkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsXG4gICAgICBkYXRhOiBsaXN0RW50cnlcbiAgICB9O1xuICAgIHRyZWVOb2RlW3RoaXMudmFsdWVGaWVsZF0gPSBsaXN0RW50cnlbdGhpcy52YWx1ZUZpZWxkXTtcbiAgICB0cmVlTm9kZVt0aGlzLmRlc2NyaXB0aW9uRmllbGRdID0gbGlzdEVudHJ5W3RoaXMuZGVzY3JpcHRpb25GaWVsZF07XG4gICAgdHJlZU5vZGVbdGhpcy5zdWJFbnRyaWVzRmllbGRdID0gbGlzdEVudHJ5W3RoaXMuc3ViRW50cmllc0ZpZWxkXTtcblxuICAgIHJldHVybiB0cmVlTm9kZTtcbiAgfVxuXG4gIHNob3dEaWFsb2coZXZlbnQ/LCBkaXNwbGF5ID0gdHJ1ZSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy9pZ25vcmUgc3ludGhldGl6ZWQgZXZlbnRzIG9uIGVudGVyXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiBldmVudC5kZXRhaWwgPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmRpc3BsYXkgPSAhIWRpc3BsYXk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICB0aGlzLm11bHRpc2VsZWN0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gKHRoaXMuaXNWYWxpZCkgPyBudWxsIDoge1xuICAgICAgZHluYW1pY2xpc3Q6IHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvZHluYW1pYy1saXN0L2R5bmFtaWMtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBSUwsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDZCxNQUFNLGdCQUFnQixDQUFDO0FBc0J4QixNQUFNLE9BQU8sb0JBQW9CO0lBaUUvQjtRQVpBLGVBQVUsR0FBRyxPQUFPLENBQUM7UUFDckIsb0JBQWUsR0FBRyxTQUFTLENBQUM7UUFDNUIscUJBQWdCLEdBQUcsYUFBYSxDQUFDO1FBQ2pDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDUixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsWUFBTyxHQUFHLElBQUksQ0FBQztRQUt2Qix1QkFBa0IsR0FBZSxFQUFFLENBQUM7UUFLcEMsb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1FBQzdCLENBQUMsQ0FBQTtJQUhELENBQUM7SUF0REQsSUFDSSxjQUFjLENBQUMsSUFBYztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBSUQsSUFDSSxVQUFVLENBQUMsRUFBTztRQUNwQixJQUFJLEVBQUUsRUFBRTtZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtnQkFDckMsSUFBRyxJQUFJ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LElBQUk7cUJBQ1o7aUJBQ0Y7O2FBQ0Y7Ozs7Z0NBR0UsU0FBUyxTQUFDLGNBQWM7aUNBQ3hCLFNBQVMsU0FBQyxRQUFRO3dCQUVsQixLQUFLOzBCQUNMLEtBQUs7MEJBQ0wsS0FBSzt1QkFDTCxLQUFLOzZCQUlMLEtBQUssU0FBQyxnQkFBZ0I7eUJBVXRCLEtBQUssU0FBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3JtQ29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIFZhbGlkYXRvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBdXRvQ29tcGxldGV9IGZyb20gJ3ByaW1lbmcvcHJpbWVuZyc7XG5pbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi90cmVlL3RyZWUuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1keW5hbWljLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHluYW1pYy1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRHluYW1pY0xpc3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEeW5hbWljTGlzdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRHluYW1pY0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZScpIGF1dG9Db21wbGV0ZUlucHV0OiBBdXRvQ29tcGxldGU7XG4gIEBWaWV3Q2hpbGQoJ2J1dHRvbicpIGF1dG9Db21wbGV0ZUJ1dHRvbjtcblxuICBASW5wdXQoKSBzaXR1YXRpb246IHN0cmluZztcbiAgQElucHV0KCkgbXVsdGlzZWxlY3Q6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHBpY2tlclRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuXG4gIHByaXZhdGUgX2ZpbHRlckZ1bmM6IEZ1bmN0aW9uO1xuXG4gIEBJbnB1dCgnZmlsdGVyRnVuY3Rpb24nKVxuICBzZXQgZmlsdGVyRnVuY3Rpb24oZnVuYzogRnVuY3Rpb24pIHtcbiAgICB0aGlzLl9maWx0ZXJGdW5jID0gZnVuYztcbiAgICBpZiAodGhpcy5fbGlzdCkge1xuICAgICAgdGhpcy5idWlsZFRyZWUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9saXN0OiBhbnk7XG5cbiAgQElucHV0KCdsaXN0T2JqZWN0JylcbiAgc2V0IGxpc3RPYmplY3QobG86IGFueSkge1xuICAgIGlmIChsbykge1xuICAgICAgdGhpcy5fbGlzdCA9IGxvO1xuICAgICAgaWYgKGxvLmNvbmZpZyAmJiBsby5jb25maWcudmFsdWVGaWVsZCkge1xuICAgICAgICBpZih0aGlzLnNlbGVjdGVkTm9kZXMpe1xuICAgICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLnNlbGVjdGVkTm9kZXMubWFwKHNuID0+IHtcbiAgICAgICAgICAgICAgc25bbG8uY29uZmlnLnZhbHVlRmllbGRdID0gc25bdGhpcy52YWx1ZUZpZWxkXTtcbiAgICAgICAgICAgICAgcmV0dXJuIHNuO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlc1tsby5jb25maWcudmFsdWVGaWVsZF0gPSB0aGlzLnNlbGVjdGVkTm9kZXNbdGhpcy52YWx1ZUZpZWxkXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZUZpZWxkID0gbG8uY29uZmlnLnZhbHVlRmllbGQ7XG4gICAgICB9XG4gICAgICBpZiAobG8uY29uZmlnICYmIGxvLmNvbmZpZy5kZXNjcmlwdGlvbkZpZWxkKSB7XG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb25GaWVsZCA9IGxvLmNvbmZpZy5kZXNjcmlwdGlvbkZpZWxkO1xuICAgICAgfVxuICAgICAgaWYgKGxvLmNvbmZpZyAmJiBsby5jb25maWcuc3ViRW50cmllc0ZpZWxkKSB7XG4gICAgICAgIHRoaXMuc3ViRW50cmllc0ZpZWxkID0gbG8uY29uZmlnLnN1YkVudHJpZXNGaWVsZDtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVpbGRUcmVlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3Q7XG4gIH1cblxuICB2YWx1ZUZpZWxkID0gJ3ZhbHVlJztcbiAgc3ViRW50cmllc0ZpZWxkID0gJ2VudHJpZXMnO1xuICBkZXNjcmlwdGlvbkZpZWxkID0gJ2Rlc2NyaXB0aW9uJztcbiAgZGlzcGxheSA9IGZhbHNlO1xuICBwcml2YXRlIGRpcnR5ID0gZmFsc2U7XG4gIHByaXZhdGUgaXNWYWxpZCA9IHRydWU7XG4gIHZhbHVlO1xuICB0cmVlOiBUcmVlTm9kZVtdO1xuICBzZWxlY3RlZE5vZGVzOiBhbnk7XG4gIGF1dG9jb21wbGV0ZVJlcztcbiAgYXV0b2NvbXBsZXRlVmFsdWVzOiBUcmVlTm9kZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmRpcnR5ID0gZmFsc2U7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8IG51bGw7XG4gICAgY29uc3QgdmFsdWVzID0gIXRoaXMudmFsdWUgfHwgQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSA/IHRoaXMudmFsdWUgfHwgW10gOiBbdGhpcy52YWx1ZV07XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gbnVsbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdmFsdWVzLm1hcCh2ID0+IHtcbiAgICAgICAgICBsZXQgbm9kZSA9IHt9O1xuICAgICAgICAgIG5vZGVbdGhpcy52YWx1ZUZpZWxkXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG5vZGUgPSB7fTtcbiAgICAgICAgbm9kZVt0aGlzLnZhbHVlRmllbGRdID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IG5vZGU7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG5vZGVzID0gIXRoaXMuc2VsZWN0ZWROb2RlcyB8fCBBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWROb2RlcykgPyB0aGlzLnNlbGVjdGVkTm9kZXMgfHwgW10gOiBbdGhpcy5zZWxlY3RlZE5vZGVzXTtcblxuICAgIGlmICh0aGlzLl9saXN0ICYmIChub2Rlcy5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGggfHwgbm9kZXMuc29tZSgobiwgaSkgPT4gblt0aGlzLnZhbHVlRmllbGRdICE9PSB2YWx1ZXNbaV0pKSkge1xuICAgICAgdGhpcy5idWlsZFRyZWUoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICB9XG5cbiAgb25BdXRvQ29tcGxldGVTZWxlY3Qobm9kZT8pIHtcbiAgICBjb25zdCB3YXNJbnZhbGlkID0gIXRoaXMuaXNWYWxpZDtcbiAgICB0aGlzLmlzVmFsaWQgPSB0cnVlO1xuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSh3YXNJbnZhbGlkKTtcbiAgfVxuXG4gIG9uQXV0b0NvbXBsZXRlVW5zZWxlY3Qobm9kZT8pIHtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLnNlbGVjdGVkTm9kZXMuZmlsdGVyKChzTm9kZSkgPT4gc05vZGUudmFsdWUgIT09IG5vZGUudmFsdWUpO1xuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSgpO1xuICB9XG5cbiAgb25UcmVlU2VsZWN0aW9uQ2hhbmdlZChldnQpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB3YXNJbnZhbGlkID0gIXRoaXMuaXNWYWxpZDtcbiAgICB0aGlzLmlzVmFsaWQgPSB0cnVlO1xuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSh3YXNJbnZhbGlkKTtcbiAgfVxuXG4gIG9uQ2xlYXIoKSB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuZCBwcm9wYWdhdGVzIHRoZSBmb3JtIGNvbnRyb2xzIHZhbHVlIGJhc2VkIG9uIHRoZSBjb21wb25lbnRzIGlubmVyIHZhbHVlcy4gUHJvcGFnYXRlcyBvbmx5XG4gICAqIHdoZW4gdGhlIHZhbHVlIGhhcyBjaGFuZ2VkLlxuICAgKiBAcGFyYW0gZm9yY2VQcm9wYWdhdGlvbiAtIGZvcmNlcyBwcm9wYWdhdGlvbiBldmVuIGlmIHRoZSB2YWx1ZSBoYXNuJ3QgYmVlbiBjaGFuZ2VkXG4gICAqL1xuICBwcml2YXRlIHNldEZvcm1Db250cm9sVmFsdWUoZm9yY2VQcm9wYWdhdGlvbj86IGJvb2xlYW4pIHtcbiAgICBsZXQgdjtcbiAgICBsZXQgY2hhbmdlZDogYm9vbGVhbjtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdiA9IHRoaXMuc2VsZWN0ZWROb2RlcyA/IHRoaXMuc2VsZWN0ZWROb2Rlcy5tYXAoKG5vZGUpID0+IG5vZGVbdGhpcy52YWx1ZUZpZWxkXSkgOiBbXTtcbiAgICAgIGNoYW5nZWQgPSAhdGhpcy52YWx1ZSB8fCAhKHYubGVuZ3RoID09PSB0aGlzLnZhbHVlLmxlbmd0aCAmJiB2LmV2ZXJ5KCh2YWwpID0+IHRoaXMudmFsdWUuc29tZSgoY3VyVmFsKSA9PiBjdXJWYWwgPT09IHZhbCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdiA9IHRoaXMuc2VsZWN0ZWROb2RlcyA/IHRoaXMuc2VsZWN0ZWROb2Rlcy5kYXRhW3RoaXMudmFsdWVGaWVsZF0gOiBudWxsO1xuICAgICAgY2hhbmdlZCA9IHYgIT09IHRoaXMudmFsdWU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VkIHx8IGZvcmNlUHJvcGFnYXRpb24pIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2O1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRyZWUoKSB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMgPSBbXTtcbiAgICBsZXQgdHJlZTogVHJlZU5vZGVbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbGlzdC5lbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmFkZFRyZWVOb2RlKHRyZWUsIHRoaXMuX2xpc3QuZW50cmllc1tpXSk7XG4gICAgfVxuICAgIHRoaXMudHJlZSA9IHRyZWU7XG4gIH1cblxuICBwcml2YXRlIGFkZFRyZWVOb2RlKHBhcmVudE5vZGU6IFRyZWVOb2RlW10sIGxpc3RFbnRyeSkge1xuICAgIGlmICh0aGlzLmZpbHRlckZ1bmN0aW9uICYmICF0aGlzLmZpbHRlckZ1bmN0aW9uKGxpc3RFbnRyeSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IG5vZGU6IFRyZWVOb2RlID0gdGhpcy5saXN0RW50cnlUb1RyZWVOb2RlKGxpc3RFbnRyeSk7XG4gICAgaWYgKG5vZGUuc2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMucHVzaChub2RlKTtcbiAgICB9XG4gICAgaWYgKGxpc3RFbnRyeVt0aGlzLnN1YkVudHJpZXNGaWVsZF0pIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdEVudHJ5W3RoaXMuc3ViRW50cmllc0ZpZWxkXS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLmFkZFRyZWVOb2RlKG5vZGUuY2hpbGRyZW4sIGxpc3RFbnRyeVt0aGlzLnN1YkVudHJpZXNGaWVsZF1baV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoZWNrU2VsZWN0ZWQobm9kZSk7XG4gICAgcGFyZW50Tm9kZS5wdXNoKG5vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1NlbGVjdGVkKG5vZGU6IFRyZWVOb2RlKSB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaXNUcmVlTm9kZVZhbHVlSW5WYWx1ZSA9IG5vZGUuZGF0YVt0aGlzLnZhbHVlRmllbGRdID09PSB0aGlzLnZhbHVlW2ldO1xuICAgICAgICBpZiAoaXNUcmVlTm9kZVZhbHVlSW5WYWx1ZSkge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZVRoYXRIYXNWYWx1ZSA9IHRoaXMuc2VsZWN0ZWROb2Rlcy5maW5kKHNOID0+IHNOW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMudmFsdWVbaV0pO1xuICAgICAgICAgIGlmKCFzZWxlY3RlZE5vZGVUaGF0SGFzVmFsdWUpIHtcbiAgICAgICAgICAgIG5vZGUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGVjdGVkTm9kZVRoYXRIYXNWYWx1ZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChub2RlLmRhdGFbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhdXRvY29tcGxldGVGbihldnQpIHtcblxuICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMuZmlsdGVyKChhY05vZGUpID0+IHtcbiAgICAgIGlmICh0aGlzLmZpbHRlckZ1bmN0aW9uICYmICF0aGlzLmZpbHRlckZ1bmN0aW9uKGFjTm9kZS5kYXRhKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGVzLmZpbmQoKG5vZGUpID0+IGFjTm9kZS5kYXRhW3RoaXMudmFsdWVGaWVsZF0gPT09IG5vZGUuZGF0YVt0aGlzLnZhbHVlRmllbGRdKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjTm9kZS5kYXRhW3RoaXMudmFsdWVGaWVsZF0udG9Mb3dlckNhc2UoKS5pbmRleE9mKGV2dC5xdWVyeS50b0xvd2VyQ2FzZSgpKSAhPT0gLTEgfHxcbiAgICAgICAgKGFjTm9kZS5kYXRhW3RoaXMuZGVzY3JpcHRpb25GaWVsZF0gJiYgYWNOb2RlLmRhdGFbdGhpcy5kZXNjcmlwdGlvbkZpZWxkXS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZXZ0LnF1ZXJ5LnRvTG93ZXJDYXNlKCkpICE9PSAtMSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RFbnRyeVRvVHJlZU5vZGUobGlzdEVudHJ5KTogVHJlZU5vZGUge1xuICAgIGxldCBzZWxlY3RhYmxlID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuX2xpc3QgJiYgdGhpcy5fbGlzdC5jb25maWcgJiYgdGhpcy5fbGlzdC5jb25maWcuYWxsZWxlbWVudHNzZWxlY3RhYmxlKSB7XG4gICAgICBzZWxlY3RhYmxlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0YWJsZSA9ICEobGlzdEVudHJ5W3RoaXMuc3ViRW50cmllc0ZpZWxkXSAmJiBsaXN0RW50cnlbdGhpcy5zdWJFbnRyaWVzRmllbGRdLmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIGxldCB0cmVlTm9kZSA9IHtcbiAgICAgIGlkOiBsaXN0RW50cnkuaWQgPyBsaXN0RW50cnkuaWQgOiBsaXN0RW50cnlbdGhpcy52YWx1ZUZpZWxkXSxcbiAgICAgIG5hbWU6IGxpc3RFbnRyeVt0aGlzLmRlc2NyaXB0aW9uRmllbGRdID8gbGlzdEVudHJ5W3RoaXMudmFsdWVGaWVsZF0gKyAnICgnICsgbGlzdEVudHJ5W3RoaXMuZGVzY3JpcHRpb25GaWVsZF0gKyAnKScgOiBsaXN0RW50cnlbdGhpcy52YWx1ZUZpZWxkXSxcbiAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIGV4cGFuZGVkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgIHNlbGVjdGFibGU6IHNlbGVjdGFibGUsXG4gICAgICBkYXRhOiBsaXN0RW50cnlcbiAgICB9O1xuICAgIHRyZWVOb2RlW3RoaXMudmFsdWVGaWVsZF0gPSBsaXN0RW50cnlbdGhpcy52YWx1ZUZpZWxkXTtcbiAgICB0cmVlTm9kZVt0aGlzLmRlc2NyaXB0aW9uRmllbGRdID0gbGlzdEVudHJ5W3RoaXMuZGVzY3JpcHRpb25GaWVsZF07XG4gICAgdHJlZU5vZGVbdGhpcy5zdWJFbnRyaWVzRmllbGRdID0gbGlzdEVudHJ5W3RoaXMuc3ViRW50cmllc0ZpZWxkXTtcblxuICAgIHJldHVybiB0cmVlTm9kZTtcbiAgfVxuXG4gIHNob3dEaWFsb2coZXZlbnQ/LCBkaXNwbGF5ID0gdHJ1ZSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy9pZ25vcmUgc3ludGhldGl6ZWQgZXZlbnRzIG9uIGVudGVyXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiBldmVudC5kZXRhaWwgPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmRpc3BsYXkgPSAhIWRpc3BsYXk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICB0aGlzLm11bHRpc2VsZWN0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gKHRoaXMuaXNWYWxpZCkgPyBudWxsIDoge1xuICAgICAgZHluYW1pY2xpc3Q6IHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -192,7 +192,7 @@ export class StringComponent {
192
192
  StringComponent.decorators = [
193
193
  { type: Component, args: [{
194
194
  selector: 'eo-string',
195
- template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\"\n type=\"text\"\n pInputText\n (blur)=\"onBlur()\"\n [readonly]=\"readonly\"\n [disabled]=\"readonly\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"/>\n\n <!-- single line input with autocomplete -->\n <p-autoComplete *ngIf=\"!multiline && !multiselect && autocomplete\"\n #autocomplete\n [(ngModel)]=\"value\"\n [minLength]=\"3\"\n [delay]=\"500\"\n [readonly]=\"readonly\"\n [disabled]=\"readonly\"\n [suggestions]=\"autocompleteRes\"\n (onBlur)=\"onBlur()\"\n (onSelect)=\"onValueChange($event)\"\n (ngModelChange)=\"onValueChange($event)\"\n (completeMethod)=\"autocompleteFn($event)\">\n </p-autoComplete>\n\n <!-- single line input with multiselect-->\n <p-chips *ngIf=\"!multiline && multiselect && !autocomplete\"\n [(ngModel)]=\"value\"\n [disabled]=\"readonly\"\n (onBlur)=\"onBlur()\"\n (ngModelChange)=\"onValueChange($event)\">\n </p-chips>\n\n <p-autoComplete *ngIf=\"!multiline && multiselect && autocomplete\"\n [(ngModel)]=\"value\"\n [suggestions]=\"autocompleteRes\"\n [minLength]=\"1\"\n [multiple]=\"true\"\n [minLength]=\"3\"\n [delay]=\"500\"\n [readonly]=\"readonly\"\n [disabled]=\"readonly\"\n (onBlur)=\"onBlur()\"\n (ngModelChange)=\"onValueChange($event)\"\n (completeMethod)=\"autocompleteFn($event)\"\n (keyup.enter)=\"onKeyUpEnter($event)\">\n </p-autoComplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" pInputTextarea\n *ngIf=\"multiline\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n [readonly]=\"readonly\"\n [disabled]=\"readonly\"\n (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <i class=\"fa fa-envelope-o\"></i>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <i class=\"fa fa-globe\"></i>\n </a>\n </div>\n\n</div>\n",
195
+ template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\"\n type=\"text\"\n pInputText\n (blur)=\"onBlur()\"\n [readonly]=\"readonly\"\n [disabled]=\"readonly\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"/>\n\n <!-- single line input with autocomplete -->\n <p-autoComplete *ngIf=\"!multiline && !multiselect && autocomplete\"\n #autocomplete\n [(ngModel)]=\"value\"\n [minLength]=\"3\"\n [delay]=\"500\"\n [readonly]=\"readonly\"\n [disabled]=\"readonly\"\n [suggestions]=\"autocompleteRes\"\n (onBlur)=\"onBlur()\"\n (onSelect)=\"onValueChange($event)\"\n (ngModelChange)=\"onValueChange($event)\"\n (completeMethod)=\"autocompleteFn($event)\">\n </p-autoComplete>\n\n <!-- single line input with multiselect-->\n <p-chips *ngIf=\"!multiline && multiselect && !autocomplete\"\n [(ngModel)]=\"value\"\n [disabled]=\"readonly\"\n (onBlur)=\"onBlur()\"\n (ngModelChange)=\"onValueChange($event)\"\n [addOnBlur]=\"true\">\n </p-chips>\n\n <p-autoComplete *ngIf=\"!multiline && multiselect && autocomplete\"\n [(ngModel)]=\"value\"\n [suggestions]=\"autocompleteRes\"\n [minLength]=\"1\"\n [multiple]=\"true\"\n [minLength]=\"3\"\n [delay]=\"500\"\n [readonly]=\"readonly\"\n [disabled]=\"readonly\"\n (onBlur)=\"onBlur()\"\n (ngModelChange)=\"onValueChange($event)\"\n (completeMethod)=\"autocompleteFn($event)\"\n (keyup.enter)=\"onKeyUpEnter($event)\">\n </p-autoComplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" pInputTextarea\n *ngIf=\"multiline\"\n (blur)=\"onBlur()\"\n [(ngModel)]=\"value\"\n [readonly]=\"readonly\"\n [disabled]=\"readonly\"\n (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <i class=\"fa fa-envelope-o\"></i>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <i class=\"fa fa-globe\"></i>\n </a>\n </div>\n\n</div>\n",
196
196
  providers: [
197
197
  {
198
198
  provide: NG_VALUE_ACCESSOR,
@@ -226,4 +226,4 @@ StringComponent.propDecorators = {
226
226
  minLength: [{ type: Input }],
227
227
  maxLength: [{ type: Input }]
228
228
  };
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvc3RyaW5nL3N0cmluZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFJTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQWlCLE1BQU0sY0FBYyxDQUFDO0FBb0J2RixNQUFNLE9BQU8sZUFBZTtJQWdDMUIsWUFBb0IsT0FBdUIsRUFBVSxVQUE4QjtRQUEvRCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBR25GLG9CQUFlLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTtRQUM3QixDQUFDLENBQUM7SUFIRixDQUFDO0lBOUJELElBQ0ksWUFBWSxDQUFDLE9BQWdCO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQTRCRCxZQUFZLENBQUMsS0FBSztRQUNoQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsS0FBSyxPQUFPLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO0lBQ3pCLENBQUM7SUFFRCxhQUFhLENBQUMsR0FBRztRQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGNBQWMsS0FBSyxPQUFPLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxTQUFTO1FBQ2YsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDO2FBQ3BEO2lCQUFNO2dCQUNMLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDO2FBQzNDO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBRztRQUNoQixNQUFNLEdBQUcsR0FBRyxnQ0FBZ0MsR0FBRyxDQUFDLEtBQUssVUFBVSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTzthQUNULE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO2FBQ2xCLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNYLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE1BQU07UUFFbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxJQUFJLE9BQU8sQ0FBQztZQUNaLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxPQUFPLEVBQUU7Z0JBQ25DLE9BQU8sR0FBRywyTUFBMk0sQ0FBQzthQUN2TjtpQkFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssS0FBSyxFQUFFO2dCQUN4QyxPQUFPLEdBQUcsdUZBQXVGLENBQUM7YUFDbkc7WUFDRCxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLEdBQUcsQ0FBQztRQUNSLDhCQUE4QjtRQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDaEYsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUc7d0JBQ2IsS0FBSyxFQUFFLEtBQUs7cUJBQ2IsQ0FBQTtpQkFDRjthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3hDLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ1QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHO3dCQUNiLEtBQUssRUFBRSxLQUFLO3FCQUNiLENBQUE7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsbUNBQW1DO1FBQ25DLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUNuQyxHQUFHLEdBQUcsRUFBRSxDQUFDO3dCQUNULEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUc7NEJBQzVDLEtBQUssRUFBRSxLQUFLO3lCQUNiLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDNUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHO3dCQUM1QyxLQUFLLEVBQUUsS0FBSztxQkFDYixDQUFDO2lCQUNIO2FBQ0Y7U0FDRjtRQUNELHdDQUF3QztRQUN4QyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDckMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDOUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUc7d0JBQ2pCLEtBQUssRUFBRSxLQUFLO3FCQUNiLENBQUE7aUJBQ0Y7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQzlFLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ1QsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHO3dCQUNqQixLQUFLLEVBQUUsS0FBSztxQkFDYixDQUFBO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDL0QsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUc7d0JBQ2pCLEtBQUssRUFBRSxLQUFLO3FCQUNiLENBQUE7aUJBQ0Y7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUN0QyxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUNULEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRzt3QkFDakIsS0FBSyxFQUFFLEtBQUs7cUJBQ2IsQ0FBQTtpQkFDRjthQUNGO1NBQ0Y7UUFDRCx1Q0FBdUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUN4QixJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO3dCQUNoQyxHQUFHLEdBQUcsRUFBRSxDQUFDO3dCQUNULEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHOzRCQUN2QixLQUFLLEVBQUUsS0FBSzt5QkFDYixDQUFBO3FCQUNGO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO29CQUNsRCxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUNULEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO3dCQUN2QixLQUFLLEVBQUUsS0FBSztxQkFDYixDQUFBO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDbEIsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxxREFBcUQ7SUFDOUMsUUFBUSxDQUFDLENBQWM7UUFDNUIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7O1lBeE9GLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsV0FBVztnQkFDckIsMmxGQUFzQztnQkFFdEMsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO3dCQUM5QyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7d0JBQzlDLEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGOzthQUNGOzs7WUFuQk8sY0FBYztZQUFFLGtCQUFrQjs7OzJCQXVCdkMsS0FBSzswQkFTTCxLQUFLO3dCQUNMLEtBQUs7dUJBQ0wsS0FBSzt3QkFDTCxLQUFLOzZCQUVMLEtBQUs7d0JBQ0wsS0FBSztvQkFDTCxLQUFLO29CQUNMLEtBQUs7bUJBRUwsS0FBSzt3QkFDTCxLQUFLO3dCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBWYWxpZGF0b3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBOR19WQUxJREFUT1JTXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgVXRpbHMsIEZvcm1hdGVkTWFpbFRvfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXN0cmluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdHJpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHJpbmcuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTdHJpbmdDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTdHJpbmdDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3RyaW5nQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG5cbiAgcHJpdmF0ZSBfYXV0b2NvbXBsZXRlOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBzZXQgYXV0b2NvbXBsZXRlKGF1dG9Db206IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hdXRvY29tcGxldGUgPSBhdXRvQ29tO1xuICB9XG5cbiAgZ2V0IGF1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlO1xuICB9XG5cbiAgQElucHV0KCkgbXVsdGlzZWxlY3Q6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG11bHRpbGluZTogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGF1dG9mb2N1czogYm9vbGVhbjtcblxuICBASW5wdXQoKSBjbGFzc2lmaWNhdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBzaXR1YXRpb246IHN0cmluZztcbiAgQElucHV0KCkgcmVnZXg6IHN0cmluZztcbiAgQElucHV0KCkgcW5hbWU6IHN0cmluZztcbiAgLy8gY291bGQgYmUgc21hbGwsIG1lZGl1bSwgbGFyZ2VcbiAgQElucHV0KCkgc2l6ZTogc3RyaW5nO1xuICBASW5wdXQoKSBtaW5MZW5ndGg6IG51bWJlcjtcbiAgQElucHV0KCkgbWF4TGVuZ3RoOiBudW1iZXI7XG5cbiAgYXV0b2NvbXBsZXRlUmVzOiBhbnlbXTtcbiAgZm9ybWF0ZWRWYWx1ZTogRm9ybWF0ZWRNYWlsVG87XG4gIC8vIG1vZGVsIHZhbHVlXG4gIHZhbHVlO1xuICB2YWxpZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLCBwcml2YXRlIGVudlNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSkge1xuICB9XG5cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9O1xuXG4gIG9uS2V5VXBFbnRlcihldmVudCkge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IFtdO1xuICAgICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlLCBpbnB1dF07XG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybWF0ZWRWYWx1ZSA9IFV0aWxzLmZvcm1hdE1haWxUbyh2YWx1ZSwgdGhpcy5jbGFzc2lmaWNhdGlvbiA9PT0gJ2VtYWlsJyk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8IG51bGw7XG4gICAgdGhpcy5fdmFsaWRhdGUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKGV2dCkge1xuICAgIHRoaXMuZm9ybWF0ZWRWYWx1ZSA9IFV0aWxzLmZvcm1hdE1haWxUbyhldnQsIHRoaXMuY2xhc3NpZmljYXRpb24gPT09ICdlbWFpbCcpO1xuICAgIHRoaXMudmFsdWUgPSBldnQubGVuZ3RoID8gZXZ0IDogbnVsbDtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICBpZiAodGhpcy50cmltVmFsdWUoKSkge1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaW1zIHRoZSBjdXJyZW50IHZhbHVlIGFuZCByZXR1cm5zIHdldGhlciBvciBub3QgaXQgaGFzIGJlZW4gdHJpbW1lZFxuICAgKi9cbiAgcHJpdmF0ZSB0cmltVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aEJlZm9yZSA9IHRoaXMudmFsdWUuam9pbignJykubGVuZ3RoO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5tYXAodiA9PiB2LnRyaW0oKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmpvaW4oJycpLmxlbmd0aCAhPT0gbGVuZ3RoQmVmb3JlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoQmVmb3JlID0gdGhpcy52YWx1ZS5sZW5ndGg7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnRyaW0oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoICE9PSBsZW5ndGhCZWZvcmU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGF1dG9jb21wbGV0ZUZuKGV2dCkge1xuICAgIGNvbnN0IHVyaSA9IGAvYXV0b2NvbXBsZXRlL2VsZW1lbnQ/cHJlZml4PSR7ZXZ0LnF1ZXJ5fSZxbmFtZT0ke3RoaXMucW5hbWV9YDtcbiAgICBjb25zdCBiYXNlID0gdGhpcy5iYWNrZW5kLmdldFNlYXJjaEJhc2UoKTtcbiAgICB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXRKc29uKHVyaSwgYmFzZSlcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgbGV0IHIgPSBbXTtcbiAgICAgICAgcmVzLmZvckVhY2goaSA9PiByLnB1c2goaS52YWx1ZSkpO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IHI7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVDbGFzc2lmaWNhdGlvbihzdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcGF0dGVybjtcbiAgICAgIGlmICh0aGlzLmNsYXNzaWZpY2F0aW9uID09PSAnZW1haWwnKSB7XG4gICAgICAgIHBhdHRlcm4gPSAvXig/OiguKz8pXFxzKjwoXFx3KykoW1xcLSsuXVtcXHddKykqQChcXHdbXFwtXFx3XSpcXC4pezEsNX0oW0EtWmEtel17Miw2fSk+fFtcIiddezF9KC4rPylbXCInXXsxfVxccyo8KFxcdyspKFtcXC0rLl1bXFx3XSspKkAoXFx3W1xcLVxcd10qXFwuKXsxLDV9KFtBLVphLXpdezIsNn0pPnwoXFx3KykoW1xcLSsuXVtcXHddKykqQChcXHdbXFwtXFx3XSpcXC4pezEsNX0oW0EtWmEtel17Miw2fSkpJC87XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY2xhc3NpZmljYXRpb24gPT09ICd1cmwnKSB7XG4gICAgICAgIHBhdHRlcm4gPSAvKGh0dHB8ZnRwfGh0dHBzKTpcXC9cXC9bXFx3LV0rKFxcLltcXHctXSspKyhbXFx3LixAP149JSZhbXA7OlxcL34rIy1dKltcXHdAP149JSZhbXA7XFwvfisjLV0pPy87XG4gICAgICB9XG4gICAgICByZXR1cm4gcGF0dGVybiA/IHBhdHRlcm4udGVzdChzdHJpbmcpIDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF92YWxpZGF0ZSgpIHtcbiAgICBsZXQgZXJyO1xuICAgIC8vIHZhbGlkYXRlIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMucmVnZXgpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgISF0aGlzLnZhbHVlLmZpbmQodiA9PiAhUmVnRXhwKHRoaXMucmVnZXgpLnRlc3QodikpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydyZWdleCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIVJlZ0V4cCh0aGlzLnJlZ2V4KS50ZXN0KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydyZWdleCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHZhbGlkYXRlIGNsYXNzaWZpY2F0aW9uIHNldHRpbmdzXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy5jbGFzc2lmaWNhdGlvbikge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgZm9yIChsZXQgdiBvZiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlQ2xhc3NpZmljYXRpb24odikpIHtcbiAgICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgICAgZXJyWydjbGFzc2lmaWNhdGlvbicgKyB0aGlzLmNsYXNzaWZpY2F0aW9uXSA9IHtcbiAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlQ2xhc3NpZmljYXRpb24odGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ2NsYXNzaWZpY2F0aW9uJyArIHRoaXMuY2xhc3NpZmljYXRpb25dID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB2YWxpZGF0ZSBsZW5ndGggaGVyZSB3aGVuIG11bHRpc2VsZWN0XG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiAhIXRoaXMudmFsdWUuZmluZCh2ID0+IHYubGVuZ3RoIDwgdGhpcy5taW5MZW5ndGgpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtaW5sZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwICYmICEhdGhpcy52YWx1ZS5maW5kKHYgPT4gdi5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ21heGxlbmd0aCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwICYmIHRoaXMudmFsdWUubGVuZ3RoIDwgdGhpcy5taW5MZW5ndGgpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ21pbmxlbmd0aCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtYXhsZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB2YWxpZGF0ZSBpbnZhbGlkIGlmIG9ubHkgd2hpdGVzcGFjZXNcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBmb3IgKGxldCB2IG9mIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICBpZiAodi5sZW5ndGggJiYgIXYudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgICBlcnJbJ29ubHlXaGl0ZXNwYWNlcyddID0ge1xuICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCAmJiAhdGhpcy52YWx1ZS50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydvbmx5V2hpdGVzcGFjZXMnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnZhbGlkID0gIWVycjtcbiAgICByZXR1cm4gZXJyIHx8IG51bGw7XG4gIH1cblxuICAvLyByZXR1cm5zIG51bGwgd2hlbiB2YWxpZCBlbHNlIHRoZSB2YWxpZGF0aW9uIG9iamVjdFxuICBwdWJsaWMgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGUoKTtcbiAgfVxufVxuIl19
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvc3RyaW5nL3N0cmluZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFJTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQWlCLE1BQU0sY0FBYyxDQUFDO0FBb0J2RixNQUFNLE9BQU8sZUFBZTtJQWdDMUIsWUFBb0IsT0FBdUIsRUFBVSxVQUE4QjtRQUEvRCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBR25GLG9CQUFlLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTtRQUM3QixDQUFDLENBQUM7SUFIRixDQUFDO0lBOUJELElBQ0ksWUFBWSxDQUFDLE9BQWdCO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQTRCRCxZQUFZLENBQUMsS0FBSztRQUNoQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElB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QUFLO29CQUNMLEtBQUs7bUJBRUwsS0FBSzt3QkFDTCxLQUFLO3dCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBWYWxpZGF0b3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBOR19WQUxJREFUT1JTXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QmFja2VuZFNlcnZpY2UsIEVudmlyb25tZW50U2VydmljZSwgVXRpbHMsIEZvcm1hdGVkTWFpbFRvfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXN0cmluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdHJpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHJpbmcuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTdHJpbmdDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTdHJpbmdDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU3RyaW5nQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG5cbiAgcHJpdmF0ZSBfYXV0b2NvbXBsZXRlOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBzZXQgYXV0b2NvbXBsZXRlKGF1dG9Db206IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hdXRvY29tcGxldGUgPSBhdXRvQ29tO1xuICB9XG5cbiAgZ2V0IGF1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlO1xuICB9XG5cbiAgQElucHV0KCkgbXVsdGlzZWxlY3Q6IGJvb2xlYW47XG4gIEBJbnB1dCgpIG11bHRpbGluZTogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGF1dG9mb2N1czogYm9vbGVhbjtcblxuICBASW5wdXQoKSBjbGFzc2lmaWNhdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBzaXR1YXRpb246IHN0cmluZztcbiAgQElucHV0KCkgcmVnZXg6IHN0cmluZztcbiAgQElucHV0KCkgcW5hbWU6IHN0cmluZztcbiAgLy8gY291bGQgYmUgc21hbGwsIG1lZGl1bSwgbGFyZ2VcbiAgQElucHV0KCkgc2l6ZTogc3RyaW5nO1xuICBASW5wdXQoKSBtaW5MZW5ndGg6IG51bWJlcjtcbiAgQElucHV0KCkgbWF4TGVuZ3RoOiBudW1iZXI7XG5cbiAgYXV0b2NvbXBsZXRlUmVzOiBhbnlbXTtcbiAgZm9ybWF0ZWRWYWx1ZTogRm9ybWF0ZWRNYWlsVG87XG4gIC8vIG1vZGVsIHZhbHVlXG4gIHZhbHVlO1xuICB2YWxpZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLCBwcml2YXRlIGVudlNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSkge1xuICB9XG5cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9O1xuXG4gIG9uS2V5VXBFbnRlcihldmVudCkge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IFtdO1xuICAgICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlLCBpbnB1dF07XG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybWF0ZWRWYWx1ZSA9IFV0aWxzLmZvcm1hdE1haWxUbyh2YWx1ZSwgdGhpcy5jbGFzc2lmaWNhdGlvbiA9PT0gJ2VtYWlsJyk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8IG51bGw7XG4gICAgdGhpcy5fdmFsaWRhdGUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlKGV2dCkge1xuICAgIHRoaXMuZm9ybWF0ZWRWYWx1ZSA9IFV0aWxzLmZvcm1hdE1haWxUbyhldnQsIHRoaXMuY2xhc3NpZmljYXRpb24gPT09ICdlbWFpbCcpO1xuICAgIHRoaXMudmFsdWUgPSBldnQubGVuZ3RoID8gZXZ0IDogbnVsbDtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICBpZiAodGhpcy50cmltVmFsdWUoKSkge1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaW1zIHRoZSBjdXJyZW50IHZhbHVlIGFuZCByZXR1cm5zIHdldGhlciBvciBub3QgaXQgaGFzIGJlZW4gdHJpbW1lZFxuICAgKi9cbiAgcHJpdmF0ZSB0cmltVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aEJlZm9yZSA9IHRoaXMudmFsdWUuam9pbignJykubGVuZ3RoO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS5tYXAodiA9PiB2LnRyaW0oKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmpvaW4oJycpLmxlbmd0aCAhPT0gbGVuZ3RoQmVmb3JlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoQmVmb3JlID0gdGhpcy52YWx1ZS5sZW5ndGg7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnRyaW0oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubGVuZ3RoICE9PSBsZW5ndGhCZWZvcmU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGF1dG9jb21wbGV0ZUZuKGV2dCkge1xuICAgIGNvbnN0IHVyaSA9IGAvYXV0b2NvbXBsZXRlL2VsZW1lbnQ/cHJlZml4PSR7ZXZ0LnF1ZXJ5fSZxbmFtZT0ke3RoaXMucW5hbWV9YDtcbiAgICBjb25zdCBiYXNlID0gdGhpcy5iYWNrZW5kLmdldFNlYXJjaEJhc2UoKTtcbiAgICB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXRKc29uKHVyaSwgYmFzZSlcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgbGV0IHIgPSBbXTtcbiAgICAgICAgcmVzLmZvckVhY2goaSA9PiByLnB1c2goaS52YWx1ZSkpO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IHI7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVDbGFzc2lmaWNhdGlvbihzdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcGF0dGVybjtcbiAgICAgIGlmICh0aGlzLmNsYXNzaWZpY2F0aW9uID09PSAnZW1haWwnKSB7XG4gICAgICAgIHBhdHRlcm4gPSAvXig/OiguKz8pXFxzKjwoXFx3KykoW1xcLSsuXVtcXHddKykqQChcXHdbXFwtXFx3XSpcXC4pezEsNX0oW0EtWmEtel17Miw2fSk+fFtcIiddezF9KC4rPylbXCInXXsxfVxccyo8KFxcdyspKFtcXC0rLl1bXFx3XSspKkAoXFx3W1xcLVxcd10qXFwuKXsxLDV9KFtBLVphLXpdezIsNn0pPnwoXFx3KykoW1xcLSsuXVtcXHddKykqQChcXHdbXFwtXFx3XSpcXC4pezEsNX0oW0EtWmEtel17Miw2fSkpJC87XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY2xhc3NpZmljYXRpb24gPT09ICd1cmwnKSB7XG4gICAgICAgIHBhdHRlcm4gPSAvKGh0dHB8ZnRwfGh0dHBzKTpcXC9cXC9bXFx3LV0rKFxcLltcXHctXSspKyhbXFx3LixAP149JSZhbXA7OlxcL34rIy1dKltcXHdAP149JSZhbXA7XFwvfisjLV0pPy87XG4gICAgICB9XG4gICAgICByZXR1cm4gcGF0dGVybiA/IHBhdHRlcm4udGVzdChzdHJpbmcpIDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF92YWxpZGF0ZSgpIHtcbiAgICBsZXQgZXJyO1xuICAgIC8vIHZhbGlkYXRlIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMucmVnZXgpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgISF0aGlzLnZhbHVlLmZpbmQodiA9PiAhUmVnRXhwKHRoaXMucmVnZXgpLnRlc3QodikpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydyZWdleCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIVJlZ0V4cCh0aGlzLnJlZ2V4KS50ZXN0KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydyZWdleCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHZhbGlkYXRlIGNsYXNzaWZpY2F0aW9uIHNldHRpbmdzXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy5jbGFzc2lmaWNhdGlvbikge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgZm9yIChsZXQgdiBvZiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlQ2xhc3NpZmljYXRpb24odikpIHtcbiAgICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgICAgZXJyWydjbGFzc2lmaWNhdGlvbicgKyB0aGlzLmNsYXNzaWZpY2F0aW9uXSA9IHtcbiAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlQ2xhc3NpZmljYXRpb24odGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ2NsYXNzaWZpY2F0aW9uJyArIHRoaXMuY2xhc3NpZmljYXRpb25dID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB2YWxpZGF0ZSBsZW5ndGggaGVyZSB3aGVuIG11bHRpc2VsZWN0XG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiAhIXRoaXMudmFsdWUuZmluZCh2ID0+IHYubGVuZ3RoIDwgdGhpcy5taW5MZW5ndGgpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtaW5sZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwICYmICEhdGhpcy52YWx1ZS5maW5kKHYgPT4gdi5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ21heGxlbmd0aCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwICYmIHRoaXMudmFsdWUubGVuZ3RoIDwgdGhpcy5taW5MZW5ndGgpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ21pbmxlbmd0aCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtYXhsZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB2YWxpZGF0ZSBpbnZhbGlkIGlmIG9ubHkgd2hpdGVzcGFjZXNcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBmb3IgKGxldCB2IG9mIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICBpZiAodi5sZW5ndGggJiYgIXYudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgICBlcnJbJ29ubHlXaGl0ZXNwYWNlcyddID0ge1xuICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCAmJiAhdGhpcy52YWx1ZS50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydvbmx5V2hpdGVzcGFjZXMnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnZhbGlkID0gIWVycjtcbiAgICByZXR1cm4gZXJyIHx8IG51bGw7XG4gIH1cblxuICAvLyByZXR1cm5zIG51bGwgd2hlbiB2YWxpZCBlbHNlIHRoZSB2YWxpZGF0aW9uIG9iamVjdFxuICBwdWJsaWMgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGUoKTtcbiAgfVxufVxuIl19
@@ -180,7 +180,7 @@ FrameComponent.decorators = [
180
180
  { type: Component, args: [{
181
181
  selector: 'eo-frame',
182
182
  template: "<!-- global upload component -->\n<eo-upload-overlay *ngIf=\"authenticated && capabilities?.intray\"></eo-upload-overlay>\n\n<!-- main application skeleton -->\n<div class=\"application\" [dir]=\"dir\" [eoShortcuts]=\"navShortcuts\">\n\n <div class=\"app\" *ngIf=\"!initError\" [eoShortcuts]=\"shortcuts\">\n <eo-app-bar [transparent]=\"transparentBar\" *ngIf=\"authenticated\">\n <eo-sidebar-plugin class=\"navi\" [type]=\"'sidebar-navigation'\"></eo-sidebar-plugin>\n <eo-sidebar-plugin class=\"help\" [type]=\"'sidebar-help'\"></eo-sidebar-plugin>\n <eo-sidebar-plugin class=\"profile\" [type]=\"'sidebar-profile'\"></eo-sidebar-plugin>\n </eo-app-bar>\n <div class=\"eo-app-content\">\n <router-outlet></router-outlet>\n </div>\n </div>\n\n <!-- app init failed notification -->\n <div class=\"init-error\" *ngIf=\"initError\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_error.svg'\"></eo-icon>\n <div class=\"message\">\n <div translate>eo.app.init.fail.title</div>\n <div class=\"cause\" translate>eo.app.init.fail.message</div>\n <div class=\"cause error\">{{initError.cause}}</div>\n </div>\n </div>\n\n <div class=\"overlay\">\n <!--<ng-progress [positionUsing]=\"'marginLeft'\" [minimum]=\"0.3\" [maximum]=\"1\"-->\n <!--[speed]=\"300\" [showSpinner]=\"false\"-->\n <!--[direction]=\"dir === 'rtl' ? 'rightToLeftIncreased' : 'leftToRightIncreased'\"-->\n <!--[color]=\"'#bb3f5a'\" [trickleSpeed]=\"300\" [thick]=\"true\" [ease]=\"'linear'\"-->\n <!--&gt;</ng-progress>-->\n </div>\n <router-outlet name=\"modal\"></router-outlet>\n <eo-global-shortcuts *ngIf=\"authenticated && !isMobileEnv\"></eo-global-shortcuts>\n <eo-action-menu></eo-action-menu>\n <section #externalDialog></section>\n</div>\n",
183
- styles: [":host .application{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:0;transition:all .5s ease-in-out}:host.view-no-bar:not(.dashboard) .application{top:calc(var(--app-bar-height)*-1 - var(--app-pane-padding))}:host.view-no-header:not(.dashboard) .application{top:calc(var(--app-bar-height)*-1 - var(--app-pane-padding) - var(--app-pane-header-height) + 30px)}:host.view-no-header.object-state .application{top:calc(var(--app-bar-height)*-1 - var(--app-pane-padding) - var(--app-pane-header-height) - 36px)}:host .app{overflow:hidden}:host .app,:host .init-error{background:var(--main-background);bottom:0;display:flex;flex-flow:column;left:0;position:absolute;right:0;top:0}:host .init-error{align-items:center;justify-content:center}:host .init-error eo-icon{color:var(--color-error);height:80px;width:80px}:host .init-error .message{color:var(--color-error);font-size:var(--font-headline);max-width:500px;padding:var(--app-pane-padding)}:host .init-error .message .cause{font-size:var(--font-caption);margin-top:var(--app-pane-padding)}:host .init-error .message .cause.error{font-style:italic;margin-top:var(--app-pane-padding)}:host .overlay{position:absolute;width:100%;z-index:1001}:host .eo-app-content{bottom:0;left:0;overflow-x:auto;position:absolute;right:0;top:var(--app-bar-height)}:host.dashboard .eo-app-content{background-position:50%;background-size:cover;top:0}:host ::ng-deep split-gutter{background-color:transparent!important}"]
183
+ styles: [":host .application{bottom:0;left:0;position:absolute;right:0;top:0;transition:all .5s ease-in-out}:host.view-no-bar:not(.dashboard) .application{top:calc(var(--app-bar-height)*-1 - var(--app-pane-padding))}:host.view-no-header:not(.dashboard) .application{top:calc(var(--app-bar-height)*-1 - var(--app-pane-padding) - var(--app-pane-header-height) + 30px)}:host.view-no-header.object-state .application{top:calc(var(--app-bar-height)*-1 - var(--app-pane-padding) - var(--app-pane-header-height) - 36px)}:host .app{overflow:hidden}:host .app,:host .init-error{background:var(--main-background);bottom:0;display:flex;flex-flow:column;left:0;position:absolute;right:0;top:0}:host .init-error{align-items:center;justify-content:center}:host .init-error eo-icon{color:var(--color-error);height:80px;width:80px}:host .init-error .message{color:var(--color-error);font-size:var(--font-headline);max-width:500px;padding:var(--app-pane-padding)}:host .init-error .message .cause{font-size:var(--font-caption);margin-top:var(--app-pane-padding)}:host .init-error .message .cause.error{font-style:italic;margin-top:var(--app-pane-padding)}:host .overlay{position:absolute;width:100%;z-index:1001}:host .eo-app-content{bottom:0;left:0;overflow-x:auto;position:absolute;right:0;top:var(--app-bar-height)}:host.dashboard .eo-app-content{background-position:50%;background-size:cover;top:0}:host ::ng-deep split-gutter{background-color:transparent!important}"]
184
184
  },] }
185
185
  ];
186
186
  FrameComponent.ctorParameters = () => [
@@ -233,7 +233,7 @@ export class ResultListComponent extends UnsubscribeOnDestroy {
233
233
  // todo: implement
234
234
  }
235
235
  resultHasReferences() {
236
- return this._result.fields.elements.some(element => element.type === 'ORGANISATION' || element.type === 'REFERENCE');
236
+ return this._result.fields.elements.some(element => element.type === 'ORGANIZATION' || element.type === 'REFERENCE');
237
237
  }
238
238
  exportCSV(ignoreThreshold = false) {
239
239
  if (!ignoreThreshold && this.resolveReferencesCsv && this.list.gridCount.totalCount > this.resolveReferencesCsvThreshold && this.resultHasReferences()) {
@@ -307,4 +307,4 @@ ResultListComponent.propDecorators = {
307
307
  query: [{ type: Input }],
308
308
  searchResult: [{ type: Input }]
309
309
  };
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd4RixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDckUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDbkYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFDTCxXQUFXLEVBQWdCLFVBQVUsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQzFGLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFjLG9CQUFvQixFQUM1RyxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQW1CLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBUXpELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxvQkFBb0I7SUF1SDNELFlBQW9CLE1BQWMsRUFBUyxTQUEyQixFQUFTLE9BQW9CLEVBQVUsT0FBdUIsRUFDaEgsZ0JBQWtDLEVBQVUsYUFBNEIsRUFBVSxZQUEwQixFQUM1RyxjQUFtQyxFQUFVLG9CQUEwQyxFQUFVLE1BQWM7UUFDakksS0FBSyxF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NkJBQ04sTUFBTTtvQkFFTixLQUFLOzJCQW1ETCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtvZiBhcyBvYnNlcnZhYmxlT2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7R3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7R3JpZENvbXBvbmVudH0gZnJvbSAnLi4vZ3JpZC9ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQge0dyaWRTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7QXBwU2VhcmNoU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VhcmNoL2FwcC1zZWFyY2guc2VydmljZSc7XG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XG5pbXBvcnQge0dyaWRGaWx0ZXJ9IGZyb20gJy4uL2dyaWQvZ3JpZC1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHtcbiAgU2VhcmNoUXVlcnksIFNlYXJjaFJlc3VsdCwgU29ydE9wdGlvbiwgQ29uZmlnLCBTZWFyY2hTZXJ2aWNlLCBFdmVudFNlcnZpY2UsIEJhY2tlbmRTZXJ2aWNlLFxuICBFbmFpb0V2ZW50LCBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBGaWVsZERlZmluaXRpb24sIFRyYW5zbGF0ZVNlcnZpY2UsIFV0aWxzLCBPYmplY3RUeXBlLCBTdG9yZWRRdWVyaWVzU2VydmljZSwgU3RvcmVkUXVlcnlcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtMaXN0Q29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuLi9saXN0LWNvbnRhaW5lcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXJlc3VsdC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3VsdC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdWx0LWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRMaXN0Q29tcG9uZW50IGV4dGVuZHMgVW5zdWJzY3JpYmVPbkRlc3Ryb3kgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2VvR3JpZCcpIGdyaWQ6IEdyaWRDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2VvTGlzdCcpIGxpc3Q6IExpc3RDb250YWluZXJDb21wb25lbnQ7XG5cbiAgLy8gZm9yIGxpc3RzIHRoYXQgZXhjZWVkIHRoZSBjb25maWd1cmVkIG1heCByZXN1bHQgc2l6ZSwgZGF0YSB3aWxsIGJlIGZldGNoZWQgaW4gY2h1bmtzXG4gIHByaXZhdGUgVklSVFVBTF9MSVNUX0NIVU5LX1NJWkU6IG51bWJlcjtcbiAgcmVzb2x2ZVJlZmVyZW5jZXNDc3Y6IGJvb2xlYW47XG4gIHJlc29sdmVSZWZlcmVuY2VzQ3N2VGhyZXNob2xkOiBudW1iZXI7XG4gIHN0YXRpYyBDT0xVTU5TX0RFRklOSVRJT04gPSAnZW8uZnJhbWV3b3JrLmNhY2hlLmNvbHVtbnMuZGVmaW5pdGlvbic7XG5cbiAgcHJpdmF0ZSBfcmVzdWx0OiBTZWFyY2hSZXN1bHQ7XG4gIHByaXZhdGUgX3F1ZXJ5OiBTZWFyY2hRdWVyeTtcbiAgcHJpdmF0ZSBfY2FjaGVkQ29sdW1uczogYW55W107XG4gIHByaXZhdGUgZGVmYXVsdFF1ZXJ5OiBTZWFyY2hRdWVyeTtcbiAgY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5ID0gZmFsc2U7XG5cbiAgdmlzaWJsZUNvbmZpZyA9IGZhbHNlO1xuICBzaG93TG9hZGVyID0gZmFsc2U7XG4gIHB1YmxpYyB0b3RhbEhpdHM6IGFueTtcbiAgcHVibGljIGxpbWl0ZWRMaXN0ID0gZmFsc2U7XG4gIHB1YmxpYyByZXN1bHRHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMgPSB7fTtcbiAgc2V0dGluZ3MgPSB7fTtcbiAgcXVlcnlTdWJ0aXRsZSA9ICcnO1xuICBzYXZlZFNlYXJjaENsaWNrZWQgPSBmYWxzZTtcbiAgc3RvcmVkUXVlcnk6IFN0b3JlZFF1ZXJ5O1xuICBzaG93V2FybkV4cG9ydENTVlRocmVzaG9sZERpYWxvZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIGNvbmZpZ1R5cGU6IE9iamVjdFR5cGUgfCBudWxsO1xuICBASW5wdXQoKSBjb25maWdDb250ZXh0OiBPYmplY3RUeXBlIHwgbnVsbDtcblxuICAvLyBJZiBzZXQgdG8gdHJ1ZSBxdWVyeSB3aWxsIGJlIHRyZWF0ZWQgbGlrZSBhIHRlbXBvcmFyeSBzZWFyY2guXG4gIC8vIFRoYXQgbWVhbnMsIGdsb2JhbCBzZWFyY2ggd2lsbCBub3QgYmUgYWZmZWN0ZWQgKGdsb2JhbCBxdWVyeSB3aWxsIGJlIHJlc2V0IGFmdGVyIGV4ZWN1dGlvbilcbiAgQElucHV0KCkgY2xlYXJBZnRlckV4ZWN1dGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RGaXJzdCA9IHRydWU7XG4gIEBJbnB1dCgpIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgQElucHV0KCkgaGFzSWNvbiA9IGZhbHNlO1xuICBASW5wdXQoKSByZWZlcmVuY2UgPSBmYWxzZTtcbiAgQE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRm9jdXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Eb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNvdW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uUmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uUmVzdWx0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25RdWVyeUludmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KClcbiAgc2V0IHF1ZXJ5KHF1ZXJ5OiBhbnkpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5ID0gdW5kZWZpbmVkO1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRoaXMuaW52YWxpZFF1ZXJ5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChxdWVyeS5uYW1lKSB7XG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcmllc1NlcnZpY2UuZ2V0U3RvcmVkUXVlcmllcyQoKVxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKVxuICAgICAgICAgIC5zdWJzY3JpYmUocXVlcmllc1N1YnNjcmlwdGlvbiA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5ID0gcXVlcmllc1N1YnNjcmlwdGlvbi5xdWVyaWVzLmZpbHRlcihxID0+IHEubmFtZSA9PT0gcXVlcnkubmFtZSlbMF07XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9xdWVyeSA9IHRoaXMuc2VhcmNoU2VydmljZS5idWlsZFF1ZXJ5KHF1ZXJ5KTtcbiAgICAgIGlmICh0aGlzLl9xdWVyeSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRRdWVyeSA9IHRoaXMuc2VhcmNoU2VydmljZS5idWlsZFF1ZXJ5KHRoaXMuX3F1ZXJ5LmdldFF1ZXJ5SnNvbigpKTtcbiAgICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldFF1ZXJ5KHRoaXMuZGVmYXVsdFF1ZXJ5KTtcbiAgICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmFnZ3JlZ2F0ZSgpO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuc2VhcmNoU2VydmljZS5nZXRSZXN1bHRGaWVsZERlZmluaXRpb25Db25maWcodGhpcy5xdWVyeSk7XG4gICAgICAgIHRoaXMuY29uZmlnVHlwZSA9IGNvbmZpZy50eXBlO1xuICAgICAgICB0aGlzLmNvbmZpZ0NvbnRleHQgPSBjb25maWcuY29udGV4dFR5cGU7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZVxuICAgICAgICAgIC5nZXRDaHVua2VkUmVzdWx0KHRoaXMuX3F1ZXJ5LCAwLCB0aGlzLlZJUlRVQUxfTElTVF9DSFVOS19TSVpFKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jbGVhclF1ZXJ5KHRoaXMuY2xlYXJBZnRlckV4ZWN1dGUpO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgICAgfSwgVXRpbHMudGhyb3coKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNsZWFyUXVlcnkodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmludmFsaWRRdWVyeSgpO1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5xdWVyeVN1YnRpdGxlID0gJyc7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRoaXMucXVlcnlTdWJ0aXRsZSArPSB0aGlzLnF1ZXJ5LnR5cGVzW2ldLmxhYmVsO1xuICAgICAgICAgIGlmIChpICE9PSB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlTdWJ0aXRsZSArPSAnLCAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkUXVlcnkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgcXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5O1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHNlYXJjaFJlc3VsdChyZXN1bHQ6IFNlYXJjaFJlc3VsdCkge1xuICAgIC8vIHRvZG86IGJhY2tlbmQgc2hvdWxkIHJlc29sdmUgcXVlcnkuZmllbGRzIGFuZCByZXR1cm4gY29uZmlnIGluIHNwZWNpZmljIG9yZGVyXG4gICAgY29uc3QgX2ZpZWxkcyA9IHJlc3VsdC5maWVsZHMgPyBvYnNlcnZhYmxlT2YocmVzdWx0LmZpZWxkcykgOlxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmZldGNoUmVzdWx0RmllbGREZWZpbml0aW9uKHRoaXMuY29uZmlnVHlwZSwgdGhpcy5jb25maWdDb250ZXh0LCAnQUxMJyk7XG4gICAgX2ZpZWxkcy5zdWJzY3JpYmUoZmllbGRzID0+IHtcbiAgICAgIGlmIChmaWVsZHMgJiYgdGhpcy5xdWVyeSAmJiB0aGlzLnF1ZXJ5LmZpZWxkcyAmJiB0aGlzLnF1ZXJ5LmZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgZmllbGRzLmVsZW1lbnRzID0gdGhpcy5xdWVyeS5maWVsZHMubWFwKGYgPT4gZmllbGRzLmVsZW1lbnRzLmZpbmQoZSA9PiBmID09PSBlLmhpdG5hbWUpKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5maWVsZHMgPSBmaWVsZHMgfHwgbmV3IEZpZWxkRGVmaW5pdGlvbigpO1xuICAgICAgdGhpcy5fcmVzdWx0ID0gcmVzdWx0O1xuICAgICAgdGhpcy5wcm9jZXNzUmVzdWx0cyh0aGlzLl9yZXN1bHQpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHNlYXJjaFJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IENvbmZpZywgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHVibGljIGdyaWRBcGk6IEdyaWRTZXJ2aWNlLCBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2UsIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSwgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSwgcHJpdmF0ZSBzdG9yZWRRdWVyaWVzU2VydmljZTogU3RvcmVkUXVlcmllc1NlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuVklSVFVBTF9MSVNUX0NIVU5LX1NJWkUgPSB0aGlzLmNvbmZpZy5nZXRSYXcoJ3NlYXJjaC5saW1pdCcpIGFzIG51bWJlcjtcbiAgICB0aGlzLnJlc29sdmVSZWZlcmVuY2VzQ3N2ID0gdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gucmVzb2x2ZVJlZmVyZW5jZXNDU1YnKSBhcyBib29sZWFuIHx8IGZhbHNlO1xuICAgIHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3ZUaHJlc2hvbGQgPSB0aGlzLmNvbmZpZy5nZXRSYXcoJ3NlYXJjaC5yZXNvbHZlUmVmZXJlbmNlc0NTVlRocmVzaG9sZCcpIGFzIG51bWJlciB8fCAxMDAwMDtcbiAgICB0aGlzLl9jYWNoZWRDb2x1bW5zID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKFJlc3VsdExpc3RDb21wb25lbnQuQ09MVU1OU19ERUZJTklUSU9OKSB8fCBbXTtcbiAgfVxuXG4gIGNsZWFyUXVlcnkoY2xlYXJBZnRlckV4ZWN1dGUpIHtcbiAgICBpZiAoY2xlYXJBZnRlckV4ZWN1dGUpIHtcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5jbGVhclF1ZXJ5KCk7XG4gICAgfVxuICB9XG5cbiAgaW52YWxpZFF1ZXJ5KCkge1xuICAgIHRoaXMub25RdWVyeUludmFsaWQuZW1pdCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfREVMRVRFRClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBpZiAodGhpcy5ncmlkKSB7XG4gICAgICAgICAgdGhpcy5ncmlkLnVwZGF0ZVJvd3ModGhpcy5iYWNrZW5kLnVwZGF0ZShbcmVzLmRhdGFdLCBbe2lkOiByZXMuZGF0YS5pZH1dKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBpZiAodGhpcy5ncmlkKSB7XG4gICAgICAgICAgLy8gdGhpcy5ncmlkLnVwZGF0ZVJvd3ModGhpcy5iYWNrZW5kLnVwZGF0ZShbcmVzLmRhdGFdLCBbe2lkOiByZXMuZGF0YS5pZCwgaXRlbTogcmVzLmRhdGEuZGF0YX1dKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cblxuICByZWZyZXNoR3JpZCgpIHtcbiAgICBpZiAodGhpcy5xdWVyeSkge1xuICAgICAgdGhpcy5xdWVyeSA9IHRoaXMuZGVmYXVsdFF1ZXJ5O1xuICAgIH1cbiAgICB0aGlzLm9uUmVmcmVzaC5lbWl0KHRoaXMucXVlcnkpO1xuICB9XG5cbiAgb25Db2x1bW5SZXNpemVkKGNvbHVtbjogYW55KSB7XG4gICAgbGV0IGNvbCA9IHRoaXMuX2NhY2hlZENvbHVtbnMuZmluZChjID0+IGMucW5hbWUgPT09IGNvbHVtbi5jb2xEZWYucmVmRGF0YS5xbmFtZSk7XG4gICAgaWYgKGNvbCkge1xuICAgICAgY29sLndpZHRoID0gY29sdW1uLmFjdHVhbFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jYWNoZWRDb2x1bW5zLnB1c2goe3FuYW1lOiBjb2x1bW4uY29sRGVmLnJlZkRhdGEucW5hbWUsIHdpZHRoOiBjb2x1bW4uYWN0dWFsV2lkdGh9KTtcbiAgICB9XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKFJlc3VsdExpc3RDb21wb25lbnQuQ09MVU1OU19ERUZJTklUSU9OLCB0aGlzLl9jYWNoZWRDb2x1bW5zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBncmlkIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtICRldmVudFxuICAgKi9cbiAgb25Db25maWdDaGFuZ2VkKHJlZnJlc2gpIHtcbiAgICBpZiAocmVmcmVzaCkge1xuICAgICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIFNlYXJjaCByZXN1bHQgJiBnZW5lcmF0ZSBjb2x1bW4gZGVmaW5pdGlvbnNcbiAgICogQHBhcmFtIHJlc3VsdFxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzUmVzdWx0cyhyZXN1bHQ6IFNlYXJjaFJlc3VsdCkge1xuICAgIHRoaXMudmlzaWJsZUNvbmZpZyA9IGZhbHNlO1xuICAgIHRoaXMub25SZXN1bHQuZW1pdChyZXN1bHQpO1xuICAgIHRoaXMudG90YWxIaXRzID0gcmVzdWx0LmNvdW50LnZhbHVlO1xuICAgIHRoaXMubGltaXRlZExpc3QgPSB0aGlzLnRvdGFsSGl0cyA+IHJlc3VsdC5oaXRzLmxlbmd0aDtcbiAgICBsZXQgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zID0ge2NvbnRleHQ6IHt9LCBvblNvcnRDaGFuZ2VkOiAoKSA9PiB0aGlzLm9uUGFnZUNoYW5nZWQoKSwgb25GaWx0ZXJDaGFuZ2VkOiAoKSA9PiB0aGlzLm9uUGFnZUNoYW5nZWQoKX07XG4gICAgY29uc3Qgc2VhcmNoTW9kZSA9IHJlc3VsdC5maWVsZHMubW9kZSA/IHJlc3VsdC5maWVsZHMubW9kZSA6IG51bGw7XG5cbiAgICB0aGlzLnNldHRpbmdzID0gdGhpcy5saW1pdGVkTGlzdCAmJiB0aGlzLnF1ZXJ5ID8ge3RvdGFsOiB0aGlzLnRvdGFsSGl0cywgc2l6ZTogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSwgcmVsYXRpb246IHJlc3VsdC5jb3VudC5yZWxhdGlvbn0gOiBudWxsO1xuICAgIGdyaWRPcHRpb25zLnJvd0RhdGEgPSByZXN1bHQuaGl0cztcblxuICAgIGNvbnN0IHtlbGVtZW50cywgc29ydG9yZGVyLCBncm91cG9yZGVyLCBwaW5uZWQsIGFsaWdubWVudHh9ID0gcmVzdWx0LmZpZWxkcztcblxuICAgIGdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSByZXN1bHQuY291bnQ7XG4gICAgZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IHRoaXMuZ3JpZEFwaS5nZXRDb2x1bW5EZWZzKGVsZW1lbnRzLCBzb3J0b3JkZXIsIGdyb3Vwb3JkZXIsIHBpbm5lZCwgYWxpZ25tZW50eCwgZmFsc2UsIHRoaXMuX2NhY2hlZENvbHVtbnMsIHNlYXJjaE1vZGUpO1xuXG4gICAgY29uc3QgcmVmcmVzaEdyaWQgPSB0aGlzLmhhc0dyaWRPcHRpb25zO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5yZXN1bHRHcmlkT3B0aW9ucywgZ3JpZE9wdGlvbnMsIHRoaXMuZ3JpZE9wdGlvbnMpO1xuXG4gICAgaWYgKHJlZnJlc2hHcmlkKSB7XG4gICAgICAvLyByZWxvYWQgZ3JpZCBjb21wb25lbnRcbiAgICAgIHRoaXMucmVzdWx0R3JpZE9wdGlvbnMgPSB7fTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gT2JqZWN0LmFzc2lnbih0aGlzLnJlc3VsdEdyaWRPcHRpb25zLCBncmlkT3B0aW9ucywgdGhpcy5ncmlkT3B0aW9ucyksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zdGZpeFNvcnQoaWQpIHtcbiAgICAvLyB0b2RvOiByZW1vdmUgd2hlbiBpdCdzIGZpeGVkIG9uIGJhY2tlbmRcbiAgICByZXR1cm4gaWQubWF0Y2goLyhec3lzb2JqZWN0XFwufF5zeXNkb2N1bWVudFxcLikoY3JlYXRvciR8bW9kaWZpZXIkKS8pID8gJ3RpdGxlJyA6ICcnO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlZChwYWdlOiBudW1iZXIgPSAxKSB7XG4gICAgaWYgKHRoaXMubGltaXRlZExpc3QgJiYgdGhpcy5xdWVyeSkge1xuICAgICAgdGhpcy5mZXRjaFJvd0RhdGEoe1xuICAgICAgICBzdGFydFJvdzogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSAqIChwYWdlIC0gMSksXG4gICAgICAgIHNvcnRNb2RlbDogdGhpcy5ncmlkLmFwaS5nZXRTb3J0TW9kZWwoKSxcbiAgICAgICAgZmlsdGVyTW9kZWw6IHRoaXMuZ3JpZC5hcGkuZ2V0RmlsdGVyTW9kZWwoKSxcbiAgICAgICAgc3VjY2Vzc0NhbGxiYWNrOiAocm93cywgdG90YWwsIHJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncyA9IHt0b3RhbCwgcmVsYXRpb24sIHNpemU6IHRoaXMuVklSVFVBTF9MSVNUX0NIVU5LX1NJWkUsIHBhZ2V9O1xuICAgICAgICAgIHRoaXMuZ3JpZC5hcGkuc2V0Um93RGF0YShyb3dzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGZvciBmZXRjaGluZyB0aGUgaXRlbXMgdG8gYmUgZGlzcGxheWVkIHdpdGggYSB2aXJ0dWFsIHJvdyBtb2RlbC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIHJvdyBtb2RlbCBwYXJhbXMgKGluY2wuIHN0YXJ0Um93LCBlbmRSb3csIHNvcnRNb2RlbCBhbmQgZmlsdGVyTW9kZWwpXG4gICAqL1xuICBwcml2YXRlIGZldGNoUm93RGF0YShwYXJhbXM6IGFueSkge1xuXG4gICAgaWYgKHRoaXMucXVlcnkpIHtcblxuICAgICAgdGhpcy51cGRhdGVRdWVyeShwYXJhbXMpO1xuXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2VcbiAgICAgICAgLmdldENodW5rZWRSZXN1bHQodGhpcy5xdWVyeSwgcGFyYW1zLnN0YXJ0Um93LCB0aGlzLlZJUlRVQUxfTElTVF9DSFVOS19TSVpFKVxuICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgdGhpcy50b3RhbEhpdHMgPSB0aGlzLmdyaWQuZ3JpZE9wdGlvbnMuY29udGV4dC5yb3dDb3VudCA9IHJlc3VsdC5jb3VudC52YWx1ZTtcbiAgICAgICAgICB0aGlzLmdyaWQuZ3JpZE9wdGlvbnMuY29udGV4dC5jb3VudCA9IHJlc3VsdC5jb3VudDtcbiAgICAgICAgICBwYXJhbXMuc3VjY2Vzc0NhbGxiYWNrKHJlc3VsdC5oaXRzLCB0aGlzLnRvdGFsSGl0cywgcmVzdWx0LmNvdW50LnJlbGF0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVRdWVyeShwYXJhbXM6IGFueSkge1xuICAgIHRoaXMucXVlcnkuc29ydE9wdGlvbnMgPSAocGFyYW1zLnNvcnRNb2RlbCB8fCB0aGlzLmdyaWQuYXBpLmdldFNvcnRNb2RlbCgpIHx8IFtdKVxuICAgICAgICAubWFwKG1vZGVsID0+IG5ldyBTb3J0T3B0aW9uKEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKG1vZGVsLmNvbElkICsgdGhpcy5wb3N0Zml4U29ydChtb2RlbC5jb2xJZCkpLCBtb2RlbC5zb3J0KSk7XG5cbiAgICB0aGlzLnF1ZXJ5LmZpbHRlcnMgPSB0aGlzLmRlZmF1bHRRdWVyeS5maWx0ZXJzXG4gICAgICAuY29uY2F0KChPYmplY3Qua2V5cyhwYXJhbXMuZmlsdGVyTW9kZWwgfHwgdGhpcy5ncmlkLmFwaS5nZXRGaWx0ZXJNb2RlbCgpKSB8fCBbXSlcbiAgICAgICAgLm1hcChrZXkgPT4gR3JpZEZpbHRlci5vcGVyYXRvcihHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihrZXkpLCAocGFyYW1zLmZpbHRlck1vZGVsIHx8IHRoaXMuZ3JpZC5hcGkuZ2V0RmlsdGVyTW9kZWwoKSlba2V5XSkpKTtcblxuICAgIHRoaXMucXVlcnkuc2VhcmNoTW9kZSA9IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREU7XG4gIH1cblxuICBleGVjdXRlU3VnZ2VzdFNlYXJjaCgpIHtcbiAgICAvLyB0b2RvOiBpbXBsZW1lbnRcbiAgfVxuXG4gIHByaXZhdGUgcmVzdWx0SGFzUmVmZXJlbmNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0LmZpZWxkcy5lbGVtZW50cy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudC50eXBlID09PSAnT1JHQU5JU0FUSU9OJyB8fCBlbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKTtcbiAgfVxuXG4gIGV4cG9ydENTVihpZ25vcmVUaHJlc2hvbGQgPSBmYWxzZSkge1xuICAgIGlmICghaWdub3JlVGhyZXNob2xkICYmIHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3YgJiYgdGhpcy5saXN0LmdyaWRDb3VudC50b3RhbENvdW50ID4gdGhpcy5yZXNvbHZlUmVmZXJlbmNlc0NzdlRocmVzaG9sZCAmJiB0aGlzLnJlc3VsdEhhc1JlZmVyZW5jZXMoKSkge1xuICAgICAgdGhpcy5zaG93V2FybkV4cG9ydENTVlRocmVzaG9sZERpYWxvZyA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZVF1ZXJ5KHt9KTtcbiAgICB0aGlzLnNob3dXYXJuRXhwb3J0Q1NWVGhyZXNob2xkRGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmRvd25sb2FkQ3N2RnJvbVF1ZXJ5KHRoaXMucXVlcnkuZ2V0UXVlcnlKc29uKHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3YpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jc3ZMb2FkaW5nU3Bpbm5lclZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlRG1zUGFyYW1zKGRhdGEpIHtcbiAgICByZXR1cm4ge2lkOiBkYXRhICYmIGRhdGEuaWQgPyBkYXRhLmlkIDogbnVsbCwgdHlwZTogZGF0YSAmJiBkYXRhLnR5cGUgPyBkYXRhLnR5cGUgOiBudWxsfTtcbiAgfVxuXG4gIGdldCBoYXNHcmlkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gISEodGhpcy5yZXN1bHRHcmlkT3B0aW9ucy5kYXRhc291cmNlIHx8IHRoaXMucmVzdWx0R3JpZE9wdGlvbnMucm93RGF0YSk7XG4gIH1cblxuICBvblN0b3JlZFF1ZXJ5TG9hZGVkKCkge1xuICAgIHRoaXMuc2F2ZWRTZWFyY2hDbGlja2VkID0gZmFsc2U7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3tvdXRsZXRzOiB7bW9kYWw6ICdzZWFyY2gnfX1dKTtcbiAgfVxuXG4gIG9uU3RvcmVkUXVlcnlFeGVjdXRlKGV2dCkge1xuICAgIHRoaXMuc2F2ZWRTZWFyY2hDbGlja2VkID0gZmFsc2U7XG4gICAgY29uc3QgdXJpUGFyYW0gPSBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZXZ0LnF1ZXJ5SnNvbikpO1xuICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHsncXVlcnknOiB1cmlQYXJhbX19O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Jlc3VsdCddLCB1cmlQYXJhbVF1ZXJ5KTtcbiAgfVxufVxuIl19
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcmVzdWx0LWxpc3QvcmVzdWx0LWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd4RixPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDckUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDbkYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFDTCxXQUFXLEVBQWdCLFVBQVUsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQzFGLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFjLG9CQUFvQixFQUM1RyxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQW1CLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBUXpELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxvQkFBb0I7SUF1SDNELFlBQW9CLE1BQWMsRUFBUyxTQUEyQixFQUFTLE9BQW9CLEVBQVUsT0FBdUIsRUFDaEgsZ0JBQWtDLEVBQVUsYUFBNEIsRUFBVSxZQUEwQixFQUM1RyxjQUFtQyxFQUFVLG9CQUEwQyxFQUFVLE1BQWM7UUFDakksS0FBSyxF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NkJBQ04sTUFBTTtvQkFFTixLQUFLOzJCQW1ETCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtvZiBhcyBvYnNlcnZhYmxlT2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7R3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7R3JpZENvbXBvbmVudH0gZnJvbSAnLi4vZ3JpZC9ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQge0dyaWRTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7QXBwU2VhcmNoU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VhcmNoL2FwcC1zZWFyY2guc2VydmljZSc7XG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XG5pbXBvcnQge0dyaWRGaWx0ZXJ9IGZyb20gJy4uL2dyaWQvZ3JpZC1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHtcbiAgU2VhcmNoUXVlcnksIFNlYXJjaFJlc3VsdCwgU29ydE9wdGlvbiwgQ29uZmlnLCBTZWFyY2hTZXJ2aWNlLCBFdmVudFNlcnZpY2UsIEJhY2tlbmRTZXJ2aWNlLFxuICBFbmFpb0V2ZW50LCBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBGaWVsZERlZmluaXRpb24sIFRyYW5zbGF0ZVNlcnZpY2UsIFV0aWxzLCBPYmplY3RUeXBlLCBTdG9yZWRRdWVyaWVzU2VydmljZSwgU3RvcmVkUXVlcnlcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtMaXN0Q29udGFpbmVyQ29tcG9uZW50fSBmcm9tICcuLi9saXN0LWNvbnRhaW5lcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXJlc3VsdC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3VsdC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVzdWx0LWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZXN1bHRMaXN0Q29tcG9uZW50IGV4dGVuZHMgVW5zdWJzY3JpYmVPbkRlc3Ryb3kgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2VvR3JpZCcpIGdyaWQ6IEdyaWRDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2VvTGlzdCcpIGxpc3Q6IExpc3RDb250YWluZXJDb21wb25lbnQ7XG5cbiAgLy8gZm9yIGxpc3RzIHRoYXQgZXhjZWVkIHRoZSBjb25maWd1cmVkIG1heCByZXN1bHQgc2l6ZSwgZGF0YSB3aWxsIGJlIGZldGNoZWQgaW4gY2h1bmtzXG4gIHByaXZhdGUgVklSVFVBTF9MSVNUX0NIVU5LX1NJWkU6IG51bWJlcjtcbiAgcmVzb2x2ZVJlZmVyZW5jZXNDc3Y6IGJvb2xlYW47XG4gIHJlc29sdmVSZWZlcmVuY2VzQ3N2VGhyZXNob2xkOiBudW1iZXI7XG4gIHN0YXRpYyBDT0xVTU5TX0RFRklOSVRJT04gPSAnZW8uZnJhbWV3b3JrLmNhY2hlLmNvbHVtbnMuZGVmaW5pdGlvbic7XG5cbiAgcHJpdmF0ZSBfcmVzdWx0OiBTZWFyY2hSZXN1bHQ7XG4gIHByaXZhdGUgX3F1ZXJ5OiBTZWFyY2hRdWVyeTtcbiAgcHJpdmF0ZSBfY2FjaGVkQ29sdW1uczogYW55W107XG4gIHByaXZhdGUgZGVmYXVsdFF1ZXJ5OiBTZWFyY2hRdWVyeTtcbiAgY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5ID0gZmFsc2U7XG5cbiAgdmlzaWJsZUNvbmZpZyA9IGZhbHNlO1xuICBzaG93TG9hZGVyID0gZmFsc2U7XG4gIHB1YmxpYyB0b3RhbEhpdHM6IGFueTtcbiAgcHVibGljIGxpbWl0ZWRMaXN0ID0gZmFsc2U7XG4gIHB1YmxpYyByZXN1bHRHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMgPSB7fTtcbiAgc2V0dGluZ3MgPSB7fTtcbiAgcXVlcnlTdWJ0aXRsZSA9ICcnO1xuICBzYXZlZFNlYXJjaENsaWNrZWQgPSBmYWxzZTtcbiAgc3RvcmVkUXVlcnk6IFN0b3JlZFF1ZXJ5O1xuICBzaG93V2FybkV4cG9ydENTVlRocmVzaG9sZERpYWxvZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIGNvbmZpZ1R5cGU6IE9iamVjdFR5cGUgfCBudWxsO1xuICBASW5wdXQoKSBjb25maWdDb250ZXh0OiBPYmplY3RUeXBlIHwgbnVsbDtcblxuICAvLyBJZiBzZXQgdG8gdHJ1ZSBxdWVyeSB3aWxsIGJlIHRyZWF0ZWQgbGlrZSBhIHRlbXBvcmFyeSBzZWFyY2guXG4gIC8vIFRoYXQgbWVhbnMsIGdsb2JhbCBzZWFyY2ggd2lsbCBub3QgYmUgYWZmZWN0ZWQgKGdsb2JhbCBxdWVyeSB3aWxsIGJlIHJlc2V0IGFmdGVyIGV4ZWN1dGlvbilcbiAgQElucHV0KCkgY2xlYXJBZnRlckV4ZWN1dGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9ICcnO1xuICBASW5wdXQoKSBzZWxlY3RGaXJzdCA9IHRydWU7XG4gIEBJbnB1dCgpIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgQElucHV0KCkgaGFzSWNvbiA9IGZhbHNlO1xuICBASW5wdXQoKSByZWZlcmVuY2UgPSBmYWxzZTtcbiAgQE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRm9jdXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Eb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ29udGV4dE1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNvdW50Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uUmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uUmVzdWx0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25RdWVyeUludmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KClcbiAgc2V0IHF1ZXJ5KHF1ZXJ5OiBhbnkpIHtcbiAgICB0aGlzLnN0b3JlZFF1ZXJ5ID0gdW5kZWZpbmVkO1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHRoaXMuaW52YWxpZFF1ZXJ5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChxdWVyeS5uYW1lKSB7XG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcmllc1NlcnZpY2UuZ2V0U3RvcmVkUXVlcmllcyQoKVxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKVxuICAgICAgICAgIC5zdWJzY3JpYmUocXVlcmllc1N1YnNjcmlwdGlvbiA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5ID0gcXVlcmllc1N1YnNjcmlwdGlvbi5xdWVyaWVzLmZpbHRlcihxID0+IHEubmFtZSA9PT0gcXVlcnkubmFtZSlbMF07XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLl9xdWVyeSA9IHRoaXMuc2VhcmNoU2VydmljZS5idWlsZFF1ZXJ5KHF1ZXJ5KTtcbiAgICAgIGlmICh0aGlzLl9xdWVyeSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRRdWVyeSA9IHRoaXMuc2VhcmNoU2VydmljZS5idWlsZFF1ZXJ5KHRoaXMuX3F1ZXJ5LmdldFF1ZXJ5SnNvbigpKTtcbiAgICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldFF1ZXJ5KHRoaXMuZGVmYXVsdFF1ZXJ5KTtcbiAgICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmFnZ3JlZ2F0ZSgpO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuc2VhcmNoU2VydmljZS5nZXRSZXN1bHRGaWVsZERlZmluaXRpb25Db25maWcodGhpcy5xdWVyeSk7XG4gICAgICAgIHRoaXMuY29uZmlnVHlwZSA9IGNvbmZpZy50eXBlO1xuICAgICAgICB0aGlzLmNvbmZpZ0NvbnRleHQgPSBjb25maWcuY29udGV4dFR5cGU7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZVxuICAgICAgICAgIC5nZXRDaHVua2VkUmVzdWx0KHRoaXMuX3F1ZXJ5LCAwLCB0aGlzLlZJUlRVQUxfTElTVF9DSFVOS19TSVpFKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jbGVhclF1ZXJ5KHRoaXMuY2xlYXJBZnRlckV4ZWN1dGUpO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgICAgfSwgVXRpbHMudGhyb3coKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNsZWFyUXVlcnkodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmludmFsaWRRdWVyeSgpO1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5xdWVyeVN1YnRpdGxlID0gJyc7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHRoaXMucXVlcnlTdWJ0aXRsZSArPSB0aGlzLnF1ZXJ5LnR5cGVzW2ldLmxhYmVsO1xuICAgICAgICAgIGlmIChpICE9PSB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlTdWJ0aXRsZSArPSAnLCAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkUXVlcnkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgcXVlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5O1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHNlYXJjaFJlc3VsdChyZXN1bHQ6IFNlYXJjaFJlc3VsdCkge1xuICAgIC8vIHRvZG86IGJhY2tlbmQgc2hvdWxkIHJlc29sdmUgcXVlcnkuZmllbGRzIGFuZCByZXR1cm4gY29uZmlnIGluIHNwZWNpZmljIG9yZGVyXG4gICAgY29uc3QgX2ZpZWxkcyA9IHJlc3VsdC5maWVsZHMgPyBvYnNlcnZhYmxlT2YocmVzdWx0LmZpZWxkcykgOlxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmZldGNoUmVzdWx0RmllbGREZWZpbml0aW9uKHRoaXMuY29uZmlnVHlwZSwgdGhpcy5jb25maWdDb250ZXh0LCAnQUxMJyk7XG4gICAgX2ZpZWxkcy5zdWJzY3JpYmUoZmllbGRzID0+IHtcbiAgICAgIGlmIChmaWVsZHMgJiYgdGhpcy5xdWVyeSAmJiB0aGlzLnF1ZXJ5LmZpZWxkcyAmJiB0aGlzLnF1ZXJ5LmZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgZmllbGRzLmVsZW1lbnRzID0gdGhpcy5xdWVyeS5maWVsZHMubWFwKGYgPT4gZmllbGRzLmVsZW1lbnRzLmZpbmQoZSA9PiBmID09PSBlLmhpdG5hbWUpKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5maWVsZHMgPSBmaWVsZHMgfHwgbmV3IEZpZWxkRGVmaW5pdGlvbigpO1xuICAgICAgdGhpcy5fcmVzdWx0ID0gcmVzdWx0O1xuICAgICAgdGhpcy5wcm9jZXNzUmVzdWx0cyh0aGlzLl9yZXN1bHQpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHNlYXJjaFJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IENvbmZpZywgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcHVibGljIGdyaWRBcGk6IEdyaWRTZXJ2aWNlLCBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2UsIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSwgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSwgcHJpdmF0ZSBzdG9yZWRRdWVyaWVzU2VydmljZTogU3RvcmVkUXVlcmllc1NlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuVklSVFVBTF9MSVNUX0NIVU5LX1NJWkUgPSB0aGlzLmNvbmZpZy5nZXRSYXcoJ3NlYXJjaC5saW1pdCcpIGFzIG51bWJlcjtcbiAgICB0aGlzLnJlc29sdmVSZWZlcmVuY2VzQ3N2ID0gdGhpcy5jb25maWcuZ2V0UmF3KCdzZWFyY2gucmVzb2x2ZVJlZmVyZW5jZXNDU1YnKSBhcyBib29sZWFuIHx8IGZhbHNlO1xuICAgIHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3ZUaHJlc2hvbGQgPSB0aGlzLmNvbmZpZy5nZXRSYXcoJ3NlYXJjaC5yZXNvbHZlUmVmZXJlbmNlc0NTVlRocmVzaG9sZCcpIGFzIG51bWJlciB8fCAxMDAwMDtcbiAgICB0aGlzLl9jYWNoZWRDb2x1bW5zID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKFJlc3VsdExpc3RDb21wb25lbnQuQ09MVU1OU19ERUZJTklUSU9OKSB8fCBbXTtcbiAgfVxuXG4gIGNsZWFyUXVlcnkoY2xlYXJBZnRlckV4ZWN1dGUpIHtcbiAgICBpZiAoY2xlYXJBZnRlckV4ZWN1dGUpIHtcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5jbGVhclF1ZXJ5KCk7XG4gICAgfVxuICB9XG5cbiAgaW52YWxpZFF1ZXJ5KCkge1xuICAgIHRoaXMub25RdWVyeUludmFsaWQuZW1pdCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfREVMRVRFRClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBpZiAodGhpcy5ncmlkKSB7XG4gICAgICAgICAgdGhpcy5ncmlkLnVwZGF0ZVJvd3ModGhpcy5iYWNrZW5kLnVwZGF0ZShbcmVzLmRhdGFdLCBbe2lkOiByZXMuZGF0YS5pZH1dKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBpZiAodGhpcy5ncmlkKSB7XG4gICAgICAgICAgLy8gdGhpcy5ncmlkLnVwZGF0ZVJvd3ModGhpcy5iYWNrZW5kLnVwZGF0ZShbcmVzLmRhdGFdLCBbe2lkOiByZXMuZGF0YS5pZCwgaXRlbTogcmVzLmRhdGEuZGF0YX1dKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cblxuICByZWZyZXNoR3JpZCgpIHtcbiAgICBpZiAodGhpcy5xdWVyeSkge1xuICAgICAgdGhpcy5xdWVyeSA9IHRoaXMuZGVmYXVsdFF1ZXJ5O1xuICAgIH1cbiAgICB0aGlzLm9uUmVmcmVzaC5lbWl0KHRoaXMucXVlcnkpO1xuICB9XG5cbiAgb25Db2x1bW5SZXNpemVkKGNvbHVtbjogYW55KSB7XG4gICAgbGV0IGNvbCA9IHRoaXMuX2NhY2hlZENvbHVtbnMuZmluZChjID0+IGMucW5hbWUgPT09IGNvbHVtbi5jb2xEZWYucmVmRGF0YS5xbmFtZSk7XG4gICAgaWYgKGNvbCkge1xuICAgICAgY29sLndpZHRoID0gY29sdW1uLmFjdHVhbFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jYWNoZWRDb2x1bW5zLnB1c2goe3FuYW1lOiBjb2x1bW4uY29sRGVmLnJlZkRhdGEucW5hbWUsIHdpZHRoOiBjb2x1bW4uYWN0dWFsV2lkdGh9KTtcbiAgICB9XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKFJlc3VsdExpc3RDb21wb25lbnQuQ09MVU1OU19ERUZJTklUSU9OLCB0aGlzLl9jYWNoZWRDb2x1bW5zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBncmlkIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtICRldmVudFxuICAgKi9cbiAgb25Db25maWdDaGFuZ2VkKHJlZnJlc2gpIHtcbiAgICBpZiAocmVmcmVzaCkge1xuICAgICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIFNlYXJjaCByZXN1bHQgJiBnZW5lcmF0ZSBjb2x1bW4gZGVmaW5pdGlvbnNcbiAgICogQHBhcmFtIHJlc3VsdFxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzUmVzdWx0cyhyZXN1bHQ6IFNlYXJjaFJlc3VsdCkge1xuICAgIHRoaXMudmlzaWJsZUNvbmZpZyA9IGZhbHNlO1xuICAgIHRoaXMub25SZXN1bHQuZW1pdChyZXN1bHQpO1xuICAgIHRoaXMudG90YWxIaXRzID0gcmVzdWx0LmNvdW50LnZhbHVlO1xuICAgIHRoaXMubGltaXRlZExpc3QgPSB0aGlzLnRvdGFsSGl0cyA+IHJlc3VsdC5oaXRzLmxlbmd0aDtcbiAgICBsZXQgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zID0ge2NvbnRleHQ6IHt9LCBvblNvcnRDaGFuZ2VkOiAoKSA9PiB0aGlzLm9uUGFnZUNoYW5nZWQoKSwgb25GaWx0ZXJDaGFuZ2VkOiAoKSA9PiB0aGlzLm9uUGFnZUNoYW5nZWQoKX07XG4gICAgY29uc3Qgc2VhcmNoTW9kZSA9IHJlc3VsdC5maWVsZHMubW9kZSA/IHJlc3VsdC5maWVsZHMubW9kZSA6IG51bGw7XG5cbiAgICB0aGlzLnNldHRpbmdzID0gdGhpcy5saW1pdGVkTGlzdCAmJiB0aGlzLnF1ZXJ5ID8ge3RvdGFsOiB0aGlzLnRvdGFsSGl0cywgc2l6ZTogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSwgcmVsYXRpb246IHJlc3VsdC5jb3VudC5yZWxhdGlvbn0gOiBudWxsO1xuICAgIGdyaWRPcHRpb25zLnJvd0RhdGEgPSByZXN1bHQuaGl0cztcblxuICAgIGNvbnN0IHtlbGVtZW50cywgc29ydG9yZGVyLCBncm91cG9yZGVyLCBwaW5uZWQsIGFsaWdubWVudHh9ID0gcmVzdWx0LmZpZWxkcztcblxuICAgIGdyaWRPcHRpb25zLmNvbnRleHQuY291bnQgPSByZXN1bHQuY291bnQ7XG4gICAgZ3JpZE9wdGlvbnMuY29sdW1uRGVmcyA9IHRoaXMuZ3JpZEFwaS5nZXRDb2x1bW5EZWZzKGVsZW1lbnRzLCBzb3J0b3JkZXIsIGdyb3Vwb3JkZXIsIHBpbm5lZCwgYWxpZ25tZW50eCwgZmFsc2UsIHRoaXMuX2NhY2hlZENvbHVtbnMsIHNlYXJjaE1vZGUpO1xuXG4gICAgY29uc3QgcmVmcmVzaEdyaWQgPSB0aGlzLmhhc0dyaWRPcHRpb25zO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5yZXN1bHRHcmlkT3B0aW9ucywgZ3JpZE9wdGlvbnMsIHRoaXMuZ3JpZE9wdGlvbnMpO1xuXG4gICAgaWYgKHJlZnJlc2hHcmlkKSB7XG4gICAgICAvLyByZWxvYWQgZ3JpZCBjb21wb25lbnRcbiAgICAgIHRoaXMucmVzdWx0R3JpZE9wdGlvbnMgPSB7fTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gT2JqZWN0LmFzc2lnbih0aGlzLnJlc3VsdEdyaWRPcHRpb25zLCBncmlkT3B0aW9ucywgdGhpcy5ncmlkT3B0aW9ucyksIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcG9zdGZpeFNvcnQoaWQpIHtcbiAgICAvLyB0b2RvOiByZW1vdmUgd2hlbiBpdCdzIGZpeGVkIG9uIGJhY2tlbmRcbiAgICByZXR1cm4gaWQubWF0Y2goLyhec3lzb2JqZWN0XFwufF5zeXNkb2N1bWVudFxcLikoY3JlYXRvciR8bW9kaWZpZXIkKS8pID8gJ3RpdGxlJyA6ICcnO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlZChwYWdlOiBudW1iZXIgPSAxKSB7XG4gICAgaWYgKHRoaXMubGltaXRlZExpc3QgJiYgdGhpcy5xdWVyeSkge1xuICAgICAgdGhpcy5mZXRjaFJvd0RhdGEoe1xuICAgICAgICBzdGFydFJvdzogdGhpcy5WSVJUVUFMX0xJU1RfQ0hVTktfU0laRSAqIChwYWdlIC0gMSksXG4gICAgICAgIHNvcnRNb2RlbDogdGhpcy5ncmlkLmFwaS5nZXRTb3J0TW9kZWwoKSxcbiAgICAgICAgZmlsdGVyTW9kZWw6IHRoaXMuZ3JpZC5hcGkuZ2V0RmlsdGVyTW9kZWwoKSxcbiAgICAgICAgc3VjY2Vzc0NhbGxiYWNrOiAocm93cywgdG90YWwsIHJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXR0aW5ncyA9IHt0b3RhbCwgcmVsYXRpb24sIHNpemU6IHRoaXMuVklSVFVBTF9MSVNUX0NIVU5LX1NJWkUsIHBhZ2V9O1xuICAgICAgICAgIHRoaXMuZ3JpZC5hcGkuc2V0Um93RGF0YShyb3dzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIGZvciBmZXRjaGluZyB0aGUgaXRlbXMgdG8gYmUgZGlzcGxheWVkIHdpdGggYSB2aXJ0dWFsIHJvdyBtb2RlbC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIHJvdyBtb2RlbCBwYXJhbXMgKGluY2wuIHN0YXJ0Um93LCBlbmRSb3csIHNvcnRNb2RlbCBhbmQgZmlsdGVyTW9kZWwpXG4gICAqL1xuICBwcml2YXRlIGZldGNoUm93RGF0YShwYXJhbXM6IGFueSkge1xuXG4gICAgaWYgKHRoaXMucXVlcnkpIHtcblxuICAgICAgdGhpcy51cGRhdGVRdWVyeShwYXJhbXMpO1xuXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2VcbiAgICAgICAgLmdldENodW5rZWRSZXN1bHQodGhpcy5xdWVyeSwgcGFyYW1zLnN0YXJ0Um93LCB0aGlzLlZJUlRVQUxfTElTVF9DSFVOS19TSVpFKVxuICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgdGhpcy50b3RhbEhpdHMgPSB0aGlzLmdyaWQuZ3JpZE9wdGlvbnMuY29udGV4dC5yb3dDb3VudCA9IHJlc3VsdC5jb3VudC52YWx1ZTtcbiAgICAgICAgICB0aGlzLmdyaWQuZ3JpZE9wdGlvbnMuY29udGV4dC5jb3VudCA9IHJlc3VsdC5jb3VudDtcbiAgICAgICAgICBwYXJhbXMuc3VjY2Vzc0NhbGxiYWNrKHJlc3VsdC5oaXRzLCB0aGlzLnRvdGFsSGl0cywgcmVzdWx0LmNvdW50LnJlbGF0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVRdWVyeShwYXJhbXM6IGFueSkge1xuICAgIHRoaXMucXVlcnkuc29ydE9wdGlvbnMgPSAocGFyYW1zLnNvcnRNb2RlbCB8fCB0aGlzLmdyaWQuYXBpLmdldFNvcnRNb2RlbCgpIHx8IFtdKVxuICAgICAgICAubWFwKG1vZGVsID0+IG5ldyBTb3J0T3B0aW9uKEdyaWRTZXJ2aWNlLnFuYW1lRm9ybWF0dGVyKG1vZGVsLmNvbElkICsgdGhpcy5wb3N0Zml4U29ydChtb2RlbC5jb2xJZCkpLCBtb2RlbC5zb3J0KSk7XG5cbiAgICB0aGlzLnF1ZXJ5LmZpbHRlcnMgPSB0aGlzLmRlZmF1bHRRdWVyeS5maWx0ZXJzXG4gICAgICAuY29uY2F0KChPYmplY3Qua2V5cyhwYXJhbXMuZmlsdGVyTW9kZWwgfHwgdGhpcy5ncmlkLmFwaS5nZXRGaWx0ZXJNb2RlbCgpKSB8fCBbXSlcbiAgICAgICAgLm1hcChrZXkgPT4gR3JpZEZpbHRlci5vcGVyYXRvcihHcmlkU2VydmljZS5xbmFtZUZvcm1hdHRlcihrZXkpLCAocGFyYW1zLmZpbHRlck1vZGVsIHx8IHRoaXMuZ3JpZC5hcGkuZ2V0RmlsdGVyTW9kZWwoKSlba2V5XSkpKTtcblxuICAgIHRoaXMucXVlcnkuc2VhcmNoTW9kZSA9IFNlYXJjaFF1ZXJ5LkRFRkFVTFRfU0VBUkNIX01PREU7XG4gIH1cblxuICBleGVjdXRlU3VnZ2VzdFNlYXJjaCgpIHtcbiAgICAvLyB0b2RvOiBpbXBsZW1lbnRcbiAgfVxuXG4gIHByaXZhdGUgcmVzdWx0SGFzUmVmZXJlbmNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzdWx0LmZpZWxkcy5lbGVtZW50cy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudC50eXBlID09PSAnT1JHQU5JWkFUSU9OJyB8fCBlbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKTtcbiAgfVxuXG4gIGV4cG9ydENTVihpZ25vcmVUaHJlc2hvbGQgPSBmYWxzZSkge1xuICAgIGlmICghaWdub3JlVGhyZXNob2xkICYmIHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3YgJiYgdGhpcy5saXN0LmdyaWRDb3VudC50b3RhbENvdW50ID4gdGhpcy5yZXNvbHZlUmVmZXJlbmNlc0NzdlRocmVzaG9sZCAmJiB0aGlzLnJlc3VsdEhhc1JlZmVyZW5jZXMoKSkge1xuICAgICAgdGhpcy5zaG93V2FybkV4cG9ydENTVlRocmVzaG9sZERpYWxvZyA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3N2TG9hZGluZ1NwaW5uZXJWaXNpYmlsaXR5ID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZVF1ZXJ5KHt9KTtcbiAgICB0aGlzLnNob3dXYXJuRXhwb3J0Q1NWVGhyZXNob2xkRGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmRvd25sb2FkQ3N2RnJvbVF1ZXJ5KHRoaXMucXVlcnkuZ2V0UXVlcnlKc29uKHRoaXMucmVzb2x2ZVJlZmVyZW5jZXNDc3YpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jc3ZMb2FkaW5nU3Bpbm5lclZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlRG1zUGFyYW1zKGRhdGEpIHtcbiAgICByZXR1cm4ge2lkOiBkYXRhICYmIGRhdGEuaWQgPyBkYXRhLmlkIDogbnVsbCwgdHlwZTogZGF0YSAmJiBkYXRhLnR5cGUgPyBkYXRhLnR5cGUgOiBudWxsfTtcbiAgfVxuXG4gIGdldCBoYXNHcmlkT3B0aW9ucygpIHtcbiAgICByZXR1cm4gISEodGhpcy5yZXN1bHRHcmlkT3B0aW9ucy5kYXRhc291cmNlIHx8IHRoaXMucmVzdWx0R3JpZE9wdGlvbnMucm93RGF0YSk7XG4gIH1cblxuICBvblN0b3JlZFF1ZXJ5TG9hZGVkKCkge1xuICAgIHRoaXMuc2F2ZWRTZWFyY2hDbGlja2VkID0gZmFsc2U7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3tvdXRsZXRzOiB7bW9kYWw6ICdzZWFyY2gnfX1dKTtcbiAgfVxuXG4gIG9uU3RvcmVkUXVlcnlFeGVjdXRlKGV2dCkge1xuICAgIHRoaXMuc2F2ZWRTZWFyY2hDbGlja2VkID0gZmFsc2U7XG4gICAgY29uc3QgdXJpUGFyYW0gPSBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZXZ0LnF1ZXJ5SnNvbikpO1xuICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHsncXVlcnknOiB1cmlQYXJhbX19O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Jlc3VsdCddLCB1cmlQYXJhbVF1ZXJ5KTtcbiAgfVxufVxuIl19
@@ -13,7 +13,7 @@ TreeNodeComponent.decorators = [
13
13
  selector: 'eo-tree-node',
14
14
  template: "<div class=\"tree-node\"\n [ngClass]=\"{selected: node.selected,\n expanded: node.expanded,\n notSelectable: !node.selectable && !(node.children?.length),\n branch: node.children && node.children.length > 0}\">\n <div class=\"node-line\"></div>\n <div class=\"node-content\">\n\n <div class=\"node-item\">\n <div class=\"spacer\"></div>\n <div class=\"ico\" (click)=\"node.children?.length ? onNodeExpandedChanged.emit(node) : onNodeSelected.emit(node)\"></div>\n <div class=\"values\">\n <div class=\"label\" (click)=\"onNodeSelected.emit(node)\" [ngClass]=\"{focused: node.focused}\">\n <span>{{node.name}}</span>\n </div>\n <div class=\"badge\" *ngIf=\"node.badges && node.badges.length > 0\">\n <span *ngFor=\"let badge of node.badges\"\n class=\"{{badge.cssClass}}\"\n [ngClass]=\"{highlighted: node.highlighted}\">\n {{badge.value}}\n </span>\n </div>\n </div>\n </div>\n\n <div class=\"node-children\" *ngIf=\"node.children?.length\">\n <eo-tree-node [node]=\"_node\" *ngFor=\"let _node of node.children; trackBy: trackById\"\n (onNodeExpandedChanged)=\"onNodeExpandedChanged.emit($event)\"\n (onNodeSelected)=\"onNodeSelected.emit($event)\"></eo-tree-node>\n </div>\n </div>\n</div>\n",
15
15
  encapsulation: ViewEncapsulation.None,
16
- styles: [".eo-tree.rtl .tree-node .node-content .node-children{padding-left:0;padding-right:var(--app-pane-padding)}.eo-tree.rtl .tree-node .node-content .node-item .label{margin-left:0;margin-right:calc(var(--app-pane-padding)/4)}.eo-tree{color:var(--text-color-caption)}.eo-tree eo-tree-node{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}.eo-tree>eo-tree-node:last-child>.tree-node>.node-line{height:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2 + 1px)}.eo-tree>eo-tree-node:first-child>.tree-node>.node-line{margin-top:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2)}.eo-tree .tree-node{display:flex;flex:1;flex-direction:row;flex-wrap:nowrap;min-height:0;min-width:0}.eo-tree .tree-node.notSelectable{color:var(--text-color-hint)}.eo-tree .tree-node.notSelectable .label{cursor:default!important}.eo-tree .tree-node.notSelectable .label.focused span,.eo-tree .tree-node.notSelectable .label:hover span{border-color:transparent!important;color:var(--text-color-hint)!important}.eo-tree .tree-node .node-line{align-self:stretch;background:rgba(var(--color-black-rgb),.2);flex:0 0 auto;width:1px}.eo-tree .tree-node .node-content{flex:1 1 auto;min-width:0;padding:calc(var(--app-pane-padding)/2) 0}.eo-tree .tree-node .node-content .node-item{align-items:center;display:flex;flex:1;flex-direction:row;flex-wrap:nowrap;height:var(--app-pane-padding);min-height:0;min-width:0}.eo-tree .tree-node .node-content .node-item .spacer{align-self:stretch;display:flex;flex-flow:column;width:calc(var(--app-pane-padding)/2)}.eo-tree .tree-node .node-content .node-item .spacer:before{border-bottom:1px solid rgba(var(--color-black-rgb),.2);content:\"\";flex:0 0 50%}.eo-tree .tree-node .node-content .node-item .ico{align-items:center;border:1px solid rgba(var(--color-black-rgb),.2);border-radius:50%;box-sizing:border-box;display:flex;flex-flow:row nowrap;height:var(--app-pane-padding);justify-content:center;width:var(--app-pane-padding)}.eo-tree .tree-node .node-content .node-item .values{align-items:center;display:flex;flex:1;flex-direction:row;justify-content:space-between;min-height:0;min-width:0}.eo-tree .tree-node .node-content .node-item .label{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;cursor:pointer;display:inline-block;margin-left:calc(var(--app-pane-padding)/4);max-width:none;overflow:hidden;padding:1px;text-overflow:ellipsis;transition:all var(--app-default-transition-duration) ease-in-out;white-space:nowrap;width:100%;word-wrap:break-word}.eo-tree .tree-node .node-content .node-item .label.focused span,.eo-tree .tree-node .node-content .node-item .label:hover span{border-color:var(--color-accent);color:var(--color-accent)}.eo-tree .tree-node .node-content .node-item .label span{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;border:1px solid transparent;border-radius:3px;box-sizing:border-box;display:inline-block;padding:0 calc(var(--app-pane-padding)/4);transition:all var(--app-default-transition-duration) ease-in-out;white-space:nowrap}.eo-tree .tree-node .node-content .node-item .badge span{border:1px solid var(--text-color-hint);border-radius:calc(var(--app-pane-padding)/4);box-sizing:content-box;color:var(--text-color-caption);font-size:var(--font-hint);line-height:1em;margin:0 calc(var(--app-pane-padding)/4);padding:0 calc(var(--app-pane-padding)/4) 1px calc(var(--app-pane-padding)/4)}.eo-tree .tree-node .node-content .node-item .badge span:last-child{background:var(--color-primary-3);border-color:transparent;color:var(--color-white)}.eo-tree .tree-node .node-content .node-item .badge span.highlighted:last-child{background:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-white)}.eo-tree .tree-node .node-content .node-children{display:none;padding-left:var(--app-pane-padding)}.eo-tree .tree-node .node-content .node-children>eo-tree-node:last-child>.tree-node>.node-line{height:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2 + 1px)}.eo-tree .tree-node.selected>.node-content>.node-item>.label span{background:var(--color-accent);color:var(--color-white)}.eo-tree .tree-node.selected>.node-content>.node-item>.label.focused,.eo-tree .tree-node.selected>.node-content>.node-item>.label:hover{border-color:var(--color-accent)}.eo-tree .tree-node.selected:not(.branch)>.node-content>.node-item .ico:before{background:var(--color-accent);border-radius:50%;content:\"\";height:calc(var(--app-pane-padding)/2);width:calc(var(--app-pane-padding)/2)}.eo-tree .tree-node.selected.branch>.node-content>.node-item .ico{border-color:var(--color-accent)}.eo-tree .tree-node.selected.branch>.node-content>.node-item .ico:before{background:var(--color-accent);color:var(--color-white)}.eo-tree .tree-node.branch>.node-content>.node-item>.ico{border-radius:2px}.eo-tree .tree-node.branch>.node-content>.node-item>.ico:hover{background:rgba(var(--color-black-rgb),.1)}.eo-tree .tree-node.branch>.node-content>.node-item>.ico:before{color:var(--text-color-caption);content:\"+\";font-family:monospace;font-size:14px;height:calc(var(--app-pane-padding) - 2px);line-height:calc(var(--app-pane-padding) - 2px);text-align:center;width:calc(var(--app-pane-padding) - 2px)}.eo-tree .tree-node.branch.expanded>.node-content>.node-item>.ico:before{content:\"-\"}.eo-tree .tree-node.branch.expanded>.node-content>.node-children{display:block}"]
16
+ styles: [".eo-tree.rtl .tree-node .node-content .node-children{padding-left:0;padding-right:var(--app-pane-padding)}.eo-tree.rtl .tree-node .node-content .node-item .label{margin-left:0;margin-right:calc(var(--app-pane-padding)/4)}.eo-tree{color:var(--text-color-caption)}.eo-tree eo-tree-node{display:flex;flex:1;flex-direction:row;min-height:0;min-width:0}.eo-tree>eo-tree-node:last-child>.tree-node>.node-line{height:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2 + 1px)}.eo-tree>eo-tree-node:first-child>.tree-node>.node-line{margin-top:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2)}.eo-tree .tree-node{display:flex;flex:1;flex-direction:row;flex-wrap:nowrap;min-height:0;min-width:0}.eo-tree .tree-node.notSelectable{color:var(--text-color-hint);display:none}.eo-tree .tree-node.notSelectable .label{cursor:default!important}.eo-tree .tree-node.notSelectable .label.focused span,.eo-tree .tree-node.notSelectable .label:hover span{border-color:transparent!important;color:var(--text-color-hint)!important}.eo-tree .tree-node .node-line{align-self:stretch;background:rgba(var(--color-black-rgb),.2);flex:0 0 auto;width:1px}.eo-tree .tree-node .node-content{flex:1 1 auto;min-width:0;padding:calc(var(--app-pane-padding)/2) 0}.eo-tree .tree-node .node-content .node-item{align-items:center;display:flex;flex:1;flex-direction:row;flex-wrap:nowrap;height:var(--app-pane-padding);min-height:0;min-width:0}.eo-tree .tree-node .node-content .node-item .spacer{align-self:stretch;display:flex;flex-flow:column;width:calc(var(--app-pane-padding)/2)}.eo-tree .tree-node .node-content .node-item .spacer:before{border-bottom:1px solid rgba(var(--color-black-rgb),.2);content:\"\";flex:0 0 50%}.eo-tree .tree-node .node-content .node-item .ico{align-items:center;border:1px solid rgba(var(--color-black-rgb),.2);border-radius:50%;box-sizing:border-box;display:flex;flex-flow:row nowrap;height:var(--app-pane-padding);justify-content:center;width:var(--app-pane-padding)}.eo-tree .tree-node .node-content .node-item .values{align-items:center;display:flex;flex:1;flex-direction:row;justify-content:space-between;min-height:0;min-width:0}.eo-tree .tree-node .node-content .node-item .label{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;cursor:pointer;display:inline-block;margin-left:calc(var(--app-pane-padding)/4);max-width:none;overflow:hidden;padding:1px;text-overflow:ellipsis;transition:all var(--app-default-transition-duration) ease-in-out;white-space:nowrap;width:100%;word-wrap:break-word}.eo-tree .tree-node .node-content .node-item .label.focused span,.eo-tree .tree-node .node-content .node-item .label:hover span{border-color:var(--color-accent);color:var(--color-accent)}.eo-tree .tree-node .node-content .node-item .label span{-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;border:1px solid transparent;border-radius:3px;box-sizing:border-box;display:inline-block;padding:0 calc(var(--app-pane-padding)/4);transition:all var(--app-default-transition-duration) ease-in-out;white-space:nowrap}.eo-tree .tree-node .node-content .node-item .badge span{border:1px solid var(--text-color-hint);border-radius:calc(var(--app-pane-padding)/4);box-sizing:content-box;color:var(--text-color-caption);font-size:var(--font-hint);line-height:1em;margin:0 calc(var(--app-pane-padding)/4);padding:0 calc(var(--app-pane-padding)/4) 1px calc(var(--app-pane-padding)/4)}.eo-tree .tree-node .node-content .node-item .badge span:last-child{background:var(--color-primary-3);border-color:transparent;color:var(--color-white)}.eo-tree .tree-node .node-content .node-item .badge span.highlighted:last-child{background:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-white)}.eo-tree .tree-node .node-content .node-children{display:none;padding-left:var(--app-pane-padding)}.eo-tree .tree-node .node-content .node-children>eo-tree-node:last-child>.tree-node>.node-line{height:calc(var(--app-pane-padding)/2 + var(--app-pane-padding)/2 + 1px)}.eo-tree .tree-node.selected>.node-content>.node-item>.label span{background:var(--color-accent);color:var(--color-white)}.eo-tree .tree-node.selected>.node-content>.node-item>.label.focused,.eo-tree .tree-node.selected>.node-content>.node-item>.label:hover{border-color:var(--color-accent)}.eo-tree .tree-node.selected:not(.branch)>.node-content>.node-item .ico:before{background:var(--color-accent);border-radius:50%;content:\"\";height:calc(var(--app-pane-padding)/2);width:calc(var(--app-pane-padding)/2)}.eo-tree .tree-node.selected.branch>.node-content>.node-item .ico{border-color:var(--color-accent)}.eo-tree .tree-node.selected.branch>.node-content>.node-item .ico:before{background:var(--color-accent);color:var(--color-white)}.eo-tree .tree-node.branch>.node-content>.node-item>.ico{border-radius:2px}.eo-tree .tree-node.branch>.node-content>.node-item>.ico:hover{background:rgba(var(--color-black-rgb),.1)}.eo-tree .tree-node.branch>.node-content>.node-item>.ico:before{color:var(--text-color-caption);content:\"+\";font-family:monospace;font-size:14px;height:calc(var(--app-pane-padding) - 2px);line-height:calc(var(--app-pane-padding) - 2px);text-align:center;width:calc(var(--app-pane-padding) - 2px)}.eo-tree .tree-node.branch.expanded>.node-content>.node-item>.ico:before{content:\"-\"}.eo-tree .tree-node.branch.expanded>.node-content>.node-children{display:block}"]
17
17
  },] }
18
18
  ];
19
19
  TreeNodeComponent.ctorParameters = () => [];