@klippa/ngx-enhancy-forms 14.22.6 → 14.22.8

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.
@@ -129,10 +129,11 @@ export class FormElementComponent {
129
129
  return this.getErrorToShow() === error && !this.customErrorHandlers.some((e) => e.error === error);
130
130
  }
131
131
  getScrollableParent(node) {
132
- if (node == null) {
133
- return null;
132
+ if (node === window.document.documentElement) {
133
+ return window.document.documentElement;
134
134
  }
135
- if (node.scrollHeight > node.clientHeight) {
135
+ const overflowY = getComputedStyle(node).overflowY;
136
+ if (node.clientHeight < node.scrollHeight && (overflowY === 'auto' || overflowY === 'scroll')) {
136
137
  return node;
137
138
  }
138
139
  else {
@@ -140,9 +141,17 @@ export class FormElementComponent {
140
141
  }
141
142
  }
142
143
  scrollTo() {
143
- this.internalComponentRef.nativeElement.scrollIntoView(true);
144
- // to give some breathing room, we scroll 100px more to the top
145
- this.getScrollableParent(this.internalComponentRef.nativeElement)?.scrollBy(0, -100);
144
+ const parent = this.getScrollableParent(this.internalComponentRef.nativeElement);
145
+ const parentTop = parent === window.document.documentElement ? 0 : parent.getBoundingClientRect().top;
146
+ const elementTop = this.internalComponentRef.nativeElement.getBoundingClientRect().top;
147
+ const parentScrollTop = parent.scrollTop;
148
+ const answer = elementTop - parentTop + parentScrollTop;
149
+ console.log('answer', parentTop, elementTop, parentScrollTop, answer);
150
+ console.log(parent, this.internalComponentRef.nativeElement);
151
+ parent.scrollTo({
152
+ top: answer - 30,
153
+ behavior: 'smooth'
154
+ });
146
155
  }
147
156
  isRequired() {
148
157
  if (isValueSet(this.input)) {
@@ -255,4 +264,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
255
264
  type: ContentChild,
256
265
  args: [NG_VALUE_ACCESSOR]
257
266
  }] } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQixpQkFBaUIsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUd0RixPQUFPLEVBQUMsVUFBVSxFQUFFLG9CQUFvQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFbkUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFHeEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQXNCLHFCQUFxQixDQUFDLENBQUM7QUFFbEcsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXNCO0lBQ3hELEdBQUcsRUFBRSxnQ0FBZ0M7SUFDckMsR0FBRyxFQUFFLGlDQUFpQztJQUN0QyxRQUFRLEVBQUUsVUFBVTtJQUNwQixLQUFLLEVBQUUsMkJBQTJCO0lBQ2xDLFNBQVMsRUFBRSxnREFBZ0Q7SUFDM0QsU0FBUyxFQUFFLGlEQUFpRDtJQUM1RCxPQUFPLEVBQUUseUJBQXlCO0lBQ2xDLGFBQWEsRUFBRSxzQkFBc0I7SUFDckMsSUFBSSxFQUFFLG9CQUFvQjtDQUMxQixDQUFDO0FBT0YsTUFBTSxPQUFPLG9CQUFvQjtJQXdCaEMsWUFDcUIsTUFBcUIsRUFDUSxjQUFtQyxFQUM1RSxLQUFpQjtRQUZMLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDUSxtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFDNUUsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQXhCVixjQUFTLEdBQThCLFlBQVksQ0FBQztRQUNwRCxtQkFBYyxHQUEyQixhQUFhLENBQUM7UUFDdkQsc0JBQWlCLEdBQXFCLFFBQVEsQ0FBQztRQUMvQyxzQkFBaUIsR0FBb0QsT0FBTyxDQUFDO1FBQzdFLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QiwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFVdkMsa0JBQWEsR0FBc0Isc0JBQXNCLENBQUM7UUFDMUQsd0JBQW1CLEdBQTRELEVBQUUsQ0FBQztRQUdqRixlQUFVLEdBQThDLFNBQVMsQ0FBQztRQTZLbkUsK0JBQTBCLEdBQUcsQ0FBQyxXQUFvQixFQUFFLEVBQUU7WUFDNUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQTtRQXdCTSwwQkFBcUIsR0FBRyxHQUFTLEVBQUU7WUFDekMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtnQkFDdEUsT0FBTzthQUNQO1lBQ0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDbEosSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxjQUFjLFlBQVksS0FBSyxDQUFDO2FBQ2xGO1FBQ0YsQ0FBQyxDQUFDO0lBeE1GLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZTtRQUNwQixNQUFNLHFCQUFxQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3ZELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsQ0FBQyxHQUFHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3hJLENBQUM7SUFFTSx1QkFBdUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLGlCQUFpQixLQUFLLEtBQUssQ0FBQztJQUNqRCxDQUFDO0lBRU0sb0JBQW9CLENBQUMsT0FBZSxFQUFFLFVBQStCO1FBQzNFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDbEQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVNLGVBQWUsQ0FBQyxXQUErQixFQUFFLFFBQWdDLElBQUk7UUFDM0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBR25CLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLG1CQUFtQjtRQUN6QixJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFO1lBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1lBQzVCLE9BQU87U0FDUDtRQUNELElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7WUFDL0IsT0FBTztTQUNQO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFdBQStCO1FBQ3ZELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLGtCQUFrQjtRQUN4QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDN0IsQ0FBQztJQUVNLGdCQUFnQjtRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbkIsQ0FBQztJQUVNLG9CQUFvQixDQUFDLEtBQWEsRUFBRSxXQUE2QjtRQUN2RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVNLGVBQWUsQ0FBQyxXQUE2QjtRQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztJQUMvQixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLDZCQUE2QjtRQUNuQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLFdBQVcsRUFBRTtZQUMvRSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBcUIsQ0FBQztTQUMvRTtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sNkJBQTZCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLFlBQVksV0FBVyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxjQUFjO1FBQ2IsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxLQUFLLElBQUksRUFBRTtZQUMzQyxPQUFPLElBQUksQ0FBQztTQUNaO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBYTtRQUNsQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWE7UUFDN0IsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBSTtRQUN2QixJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDWjtRQUNELElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ1o7YUFBTTtZQUNOLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNqRDtJQUNGLENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsK0RBQStEO1FBQy9ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxVQUFVO1FBQ1QsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0M7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBNEI7UUFDM0MsSUFBSSxHQUFHLEtBQUssV0FBVyxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO1NBQzlDO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVNLGdCQUFnQjtRQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLElBQUksY0FBYyxDQUFDO0lBQzVELENBQUM7SUFFTSw0QkFBNEI7UUFDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFlBQVksQ0FBQztJQUN6QyxDQUFDO0lBRU0sd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUNsRSxPQUFPLEtBQUssQ0FBQztTQUNiO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNsQyxPQUFPLEtBQUssQ0FBQztTQUNiO1FBQ0QsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRTtZQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQy9CO1FBQ0QsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQztTQUNaO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRU0sc0JBQXNCO1FBQzVCLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQy9CLE9BQU8sS0FBSyxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssVUFBVSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLGdCQUFnQixFQUFFO1lBQ2xGLE9BQU8sS0FBSyxDQUFDO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFNTSxzQkFBc0I7UUFDNUIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sVUFBVTtRQUNoQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRU0sV0FBVztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEVBQUU7WUFDbEUsT0FBTztTQUNQO1FBQ0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsT0FBTztTQUNQO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFlBQVksRUFBRTtZQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztTQUM1QjthQUFNO1lBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7U0FDL0I7SUFDRixDQUFDOztpSEEzTlcsb0JBQW9CLCtEQTBCdkIsbUJBQW1CO3FHQTFCaEIsb0JBQW9CLHNXQWVsQixpQkFBaUIsdXFCQ3ZEaEMsNDhMQXFHQTsyRkQ3RGEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNDLGtCQUFrQjs7MEJBNkIxQixRQUFROzswQkFDUixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQUcsUUFBUTtxRUF4QnZCLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUNVLHFCQUFxQjtzQkFBcEMsS0FBSztnQkFDb0Msb0JBQW9CO3NCQUE3RCxTQUFTO3VCQUFDLHNCQUFzQjtnQkFDSixPQUFPO3NCQUFuQyxTQUFTO3VCQUFDLFNBQVM7Z0JBQ2lDLCtCQUErQjtzQkFBbkYsU0FBUzt1QkFBQyxpQ0FBaUM7Z0JBQ1IsY0FBYztzQkFBakQsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ00sV0FBVztzQkFBM0MsU0FBUzt1QkFBQyxhQUFhO2dCQUNVLFlBQVk7c0JBQTdDLFNBQVM7dUJBQUMsY0FBYztnQkFDUSxVQUFVO3NCQUExQyxZQUFZO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFmdGVyVmlld0luaXQsXG5cdENvbXBvbmVudCxcblx0Q29udGVudENoaWxkLFxuXHRFbGVtZW50UmVmLFxuXHRJbmplY3QsXG5cdEluamVjdGlvblRva2VuLFxuXHRJbnB1dCxcblx0T3B0aW9uYWwsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IsIFVudHlwZWRGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtWYWx1ZUFjY2Vzc29yQmFzZX0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge0N1c3RvbUVycm9yTWVzc2FnZXMsIEZvcm1FcnJvck1lc3NhZ2VzfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge2lzVmFsdWVTZXQsIHN0cmluZ0lzU2V0QW5kRmlsbGVkfSBmcm9tICcuLi8uLi91dGlsL3ZhbHVlcyc7XG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gJy4uL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7YXdhaXRhYmxlRm9yTmV4dEN5Y2xlfSBmcm9tICcuLi8uLi91dGlsL2FuZ3VsYXInO1xuaW1wb3J0IHtnZXRBbGxMaW1pdGluZ0NvbnRhaW5lcnN9IGZyb20gJy4uLy4uL3V0aWwvZG9tJztcblxuXG5leHBvcnQgY29uc3QgRk9STV9FUlJPUl9NRVNTQUdFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDdXN0b21FcnJvck1lc3NhZ2VzPignZm9ybS5lcnJvci5tZXNzYWdlcycpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFUzogRm9ybUVycm9yTWVzc2FnZXMgPSB7XG5cdG1pbjogJ1VzZSBhIG51bWJlciBsYXJnZXIgdGhhbiAlbWluJScsXG5cdG1heDogJ1VzZSBhIG51bWJlciBzbWFsbGVyIHRoYW4gJW1heCUnLFxuXHRyZXF1aXJlZDogJ1JlcXVpcmVkJyxcblx0ZW1haWw6ICdVc2UgYSB2YWxpZCBlbWFpbCBhZGRyZXNzJyxcblx0bWluTGVuZ3RoOiAnSGFzIHRvIGJlIGxvbmdlciB0aGFuICVtaW5MZW5ndGglIGNoYXJhY3RlcihzKScsXG5cdG1heExlbmd0aDogJ0hhcyB0byBiZSBzaG9ydGVyIHRoYW4gJW1heExlbmd0aCUgY2hhcmFjdGVyKHMpJyxcblx0cGF0dGVybjogJ1RoaXMgaW5wdXQgaXMgbm90IHZhbGlkJyxcblx0bWF0Y2hQYXNzd29yZDogJ1Bhc3N3b3JkcyBtdXN0IG1hdGNoJyxcblx0ZGF0ZTogJ0VudGVyIGEgdmFsaWQgZGF0ZScsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1lbGVtZW50Jyxcblx0dGVtcGxhdGVVcmw6ICcuL2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2Zvcm0tZWxlbWVudC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXHRwdWJsaWMgYXR0YWNoZWRDb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG5cdEBJbnB1dCgpIHB1YmxpYyBjYXB0aW9uOiBzdHJpbmc7XG5cdEBJbnB1dCgpIHB1YmxpYyBkaXJlY3Rpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cdEBJbnB1dCgpIHB1YmxpYyBjYXB0aW9uU3BhY2luZzogJ3BlcmNlbnRhZ2VzJyB8ICdub25lJyA9ICdwZXJjZW50YWdlcyc7XG5cdEBJbnB1dCgpIHB1YmxpYyB2ZXJ0aWNhbEFsaWdubWVudDogJ2NlbnRlcicgfCAndG9wJyA9ICdjZW50ZXInO1xuXHRASW5wdXQoKSBwdWJsaWMgc3BhY2VEaXN0cmlidXRpb246ICc0MC02MCcgfCAnMzQtNjYnIHwgJzMwLTcwJyB8ICdmaXhlZElucHV0V2lkdGgnID0gJzQwLTYwJztcblx0QElucHV0KCkgcHVibGljIHN3YXBJbnB1dEFuZENhcHRpb24gPSBmYWxzZTtcblx0QElucHV0KCkgcHVibGljIGVycm9yTWVzc2FnZUFzVG9vbHRpcCA9IGZhbHNlO1xuXHRAVmlld0NoaWxkKCdpbnRlcm5hbENvbXBvbmVudFJlZicpIHB1YmxpYyBpbnRlcm5hbENvbXBvbmVudFJlZjogRWxlbWVudFJlZjtcblx0QFZpZXdDaGlsZCgndGFpbFRwbCcpIHB1YmxpYyB0YWlsVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXHRAVmlld0NoaWxkKCdjYXB0aW9uRHVtbXlGb3JTcGFjZUNhbGN1bGF0aW9uJykgcHVibGljIGNhcHRpb25EdW1teUZvclNwYWNlQ2FsY3VsYXRpb246IEVsZW1lbnRSZWY7XG5cdEBWaWV3Q2hpbGQoJ2Fic29sdXRlQW5jaG9yJykgcHVibGljIGFic29sdXRlQW5jaG9yOiBFbGVtZW50UmVmO1xuXHRAVmlld0NoaWxkKCdmaXhlZEFuY2hvcicpIHB1YmxpYyBmaXhlZEFuY2hvcjogRWxlbWVudFJlZjtcblx0QFZpZXdDaGlsZCgnZml4ZWRXcmFwcGVyJykgcHVibGljIGZpeGVkV3JhcHBlcjogRWxlbWVudFJlZjtcblx0QENvbnRlbnRDaGlsZChOR19WQUxVRV9BQ0NFU1NPUikgZmllbGRJbnB1dDogVmFsdWVBY2Nlc3NvckJhc2U8YW55PjtcblxuXHRwdWJsaWMgY2FwdGlvblJlZjogVGVtcGxhdGVSZWY8YW55Pjtcblx0cHVibGljIGVycm9yTWVzc2FnZXM6IEZvcm1FcnJvck1lc3NhZ2VzID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUztcblx0cHVibGljIGN1c3RvbUVycm9ySGFuZGxlcnM6IEFycmF5PHsgZXJyb3I6IHN0cmluZzsgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4gfT4gPSBbXTtcblx0cHJpdmF0ZSBpbnB1dDogVmFsdWVBY2Nlc3NvckJhc2U8YW55Pjtcblx0cHVibGljIGVycm9yRnVsbHlWaXNpYmxlOiBib29sZWFuO1xuXHRwcml2YXRlIHBvcHVwU3RhdGU6ICdsb2NrZWRPcGVuJyB8ICdsb2NrZWRDbG9zZWQnIHwgJ29uSG92ZXInID0gJ29uSG92ZXInO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGb3JtQ29tcG9uZW50LFxuXHRcdEBJbmplY3QoRk9STV9FUlJPUl9NRVNTQUdFUykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjdXN0b21NZXNzYWdlczogQ3VzdG9tRXJyb3JNZXNzYWdlcyxcblx0XHRwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuXHQpIHtcblx0fVxuXG5cdGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCBhd2FpdGFibGVGb3JOZXh0Q3ljbGUoKTtcblx0XHR0aGlzLmZpZWxkSW5wdXQ/LnNldFRhaWxUcGwodGhpcy50YWlsVHBsKTtcblx0XHR0aGlzLmZpZWxkSW5wdXQ/Lm9uVG91Y2guYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKChlKSA9PiB7XG5cdFx0XHR0aGlzLmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0XHR9KTtcblxuXHRcdFsuLi5nZXRBbGxMaW1pdGluZ0NvbnRhaW5lcnModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KSwgd2luZG93XS5mb3JFYWNoKGUgPT4gZS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNldEVycm9yVG9vbHRpcE9mZnNldCkpO1xuXHR9XG5cblx0cHVibGljIHNob3VsZFNob3dFcnJvck1lc3NhZ2VzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnBhcmVudD8uc2hvd0Vycm9yTWVzc2FnZXMgIT09IGZhbHNlO1xuXHR9XG5cblx0cHVibGljIHN1YnN0aXR1dGVQYXJhbWV0ZXJzKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLnJlZHVjZSgobXNnLCBrZXkpID0+IHtcblx0XHRcdHJldHVybiBtc2cucmVwbGFjZShgJSR7a2V5fSVgLCBwYXJhbWV0ZXJzW2tleV0pO1xuXHRcdH0sIG1lc3NhZ2UpO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLCBpbnB1dDogVmFsdWVBY2Nlc3NvckJhc2U8YW55PiA9IG51bGwpOiB2b2lkIHtcblx0XHR0aGlzLmF0dGFjaGVkQ29udHJvbCA9IGZvcm1Db250cm9sO1xuXHRcdHRoaXMucGFyZW50LnJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbCwgdGhpcyk7XG5cdFx0dGhpcy5pbnB1dCA9IGlucHV0O1xuXG5cblx0XHR0aGlzLmF0dGFjaGVkQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoZSkgPT4ge1xuXHRcdFx0dGhpcy5kZXRlcm1pbmVQb3B1cFN0YXRlKCk7XG5cdFx0fSk7XG5cdFx0dGhpcy5kZXRlcm1pbmVQb3B1cFN0YXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgZGV0ZXJtaW5lUG9wdXBTdGF0ZSgpOiB2b2lkIHtcblx0XHRpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5nZXRFcnJvclRvU2hvdygpKSkge1xuXHRcdFx0dGhpcy5wb3B1cFN0YXRlID0gJ29uSG92ZXInO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmdldFdhcm5pbmdUb1Nob3coKSkpIHtcblx0XHRcdHRoaXMucG9wdXBTdGF0ZSA9ICdsb2NrZWRPcGVuJztcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5wb3B1cFN0YXRlID0gJ29uSG92ZXInO1xuXHR9XG5cblx0cHVibGljIHVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLmF0dGFjaGVkQ29udHJvbCA9IG51bGw7XG5cdFx0dGhpcy5wYXJlbnQudW5yZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2wpO1xuXHR9XG5cblx0cHVibGljIGdldEF0dGFjaGVkQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuXHRcdHJldHVybiB0aGlzLmF0dGFjaGVkQ29udHJvbDtcblx0fVxuXG5cdHB1YmxpYyBnZXRBdHRhY2hlZElucHV0KCk6IFZhbHVlQWNjZXNzb3JCYXNlPGFueT4ge1xuXHRcdHJldHVybiB0aGlzLmlucHV0O1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyRXJyb3JIYW5kbGVyKGVycm9yOiBzdHJpbmcsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XG5cdFx0dGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLnB1c2goe2Vycm9yLCB0ZW1wbGF0ZVJlZn0pO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ2FwdGlvbih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQge1xuXHRcdHRoaXMuY2FwdGlvblJlZiA9IHRlbXBsYXRlUmVmO1xuXHR9XG5cblx0cHVibGljIGdldFdhcm5pbmdUb1Nob3coKTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB7XG5cdFx0cmV0dXJuIHRoaXMucGFyZW50Py5nZXRXYXJuaW5nVG9TaG93KHRoaXMuYXR0YWNoZWRDb250cm9sKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRXYXJuaW5nVG9TaG93QXNUZW1wbGF0ZVJlZigpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcblx0XHRpZiAodGhpcy5wYXJlbnQ/LmdldFdhcm5pbmdUb1Nob3codGhpcy5hdHRhY2hlZENvbnRyb2wpIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcblx0XHRcdHJldHVybiB0aGlzLnBhcmVudD8uZ2V0V2FybmluZ1RvU2hvdyh0aGlzLmF0dGFjaGVkQ29udHJvbCkgYXMgVGVtcGxhdGVSZWY8YW55Pjtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdXYXJuaW5nIGlzIG5vdCBhIFRlbXBsYXRlUmVmJyk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0V2FybmluZ1RvU2hvd0lzVGVtcGxhdGVSZWYoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0V2FybmluZ1RvU2hvdygpIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG5cdH1cblxuXHRnZXRFcnJvclRvU2hvdygpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGZpcnN0RXJyb3IgPSBPYmplY3Qua2V5cyh0aGlzLmF0dGFjaGVkQ29udHJvbD8uZXJyb3JzID8/IHt9KVswXTtcblx0XHRpZiAodGhpcy5hdHRhY2hlZENvbnRyb2w/LnRvdWNoZWQgIT09IHRydWUpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAoIXRoaXMuYXR0YWNoZWRDb250cm9sPy5lcnJvcnMpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gZmlyc3RFcnJvcjtcblx0fVxuXG5cdGdldEN1c3RvbUVycm9ySGFuZGxlcihlcnJvcjogc3RyaW5nKTogeyBlcnJvcjogc3RyaW5nOyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiB9IHtcblx0XHRyZXR1cm4gdGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLmZpbmQoKGUpID0+IGUuZXJyb3IgPT09IGVycm9yKTtcblx0fVxuXG5cdHNob3dEZWZhdWx0RXJyb3IoZXJyb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmdldEVycm9yVG9TaG93KCkgPT09IGVycm9yICYmICF0aGlzLmN1c3RvbUVycm9ySGFuZGxlcnMuc29tZSgoZSkgPT4gZS5lcnJvciA9PT0gZXJyb3IpO1xuXHR9XG5cblx0Z2V0U2Nyb2xsYWJsZVBhcmVudChub2RlKTogYW55IHtcblx0XHRpZiAobm9kZSA9PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0aWYgKG5vZGUuc2Nyb2xsSGVpZ2h0ID4gbm9kZS5jbGllbnRIZWlnaHQpIHtcblx0XHRcdHJldHVybiBub2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRTY3JvbGxhYmxlUGFyZW50KG5vZGUucGFyZW50Tm9kZSk7XG5cdFx0fVxuXHR9XG5cblx0c2Nyb2xsVG8oKTogdm9pZCB7XG5cdFx0dGhpcy5pbnRlcm5hbENvbXBvbmVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHRydWUpO1xuXHRcdC8vIHRvIGdpdmUgc29tZSBicmVhdGhpbmcgcm9vbSwgd2Ugc2Nyb2xsIDEwMHB4IG1vcmUgdG8gdGhlIHRvcFxuXHRcdHRoaXMuZ2V0U2Nyb2xsYWJsZVBhcmVudCh0aGlzLmludGVybmFsQ29tcG9uZW50UmVmLm5hdGl2ZUVsZW1lbnQpPy5zY3JvbGxCeSgwLCAtMTAwKTtcblx0fVxuXG5cdGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XG5cdFx0aWYgKGlzVmFsdWVTZXQodGhpcy5pbnB1dCkpIHtcblx0XHRcdHJldHVybiB0aGlzLmlucHV0Lmhhc1ZhbGlkYXRvcigncmVxdWlyZWQnKTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Z2V0RXJyb3JNZXNzYWdlKGtleToga2V5b2YgRm9ybUVycm9yTWVzc2FnZXMpOiBzdHJpbmcge1xuXHRcdGlmIChrZXkgPT09ICdmb3JtTGV2ZWwnKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hdHRhY2hlZENvbnRyb2wuZXJyb3JzPy5mb3JtTGV2ZWw7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmN1c3RvbU1lc3NhZ2VzPy5ba2V5XT8uKCkgPz8gdGhpcy5lcnJvck1lc3NhZ2VzW2tleV07XG5cdH1cblxuXHRwdWJsaWMgZ2V0RXJyb3JMb2NhdGlvbigpOiAnYmVsb3dDYXB0aW9uJyB8ICdyaWdodE9mQ2FwdGlvbicge1xuXHRcdHJldHVybiB0aGlzLnBhcmVudD8uZXJyb3JNZXNzYWdlTG9jYXRpb24gPz8gJ2JlbG93Q2FwdGlvbic7XG5cdH1cblxuXHRwdWJsaWMgc2hvdWxkU2hvd0Vycm9yVG9vbHRpcE9wZW5lZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5wb3B1cFN0YXRlID09PSAnbG9ja2VkT3Blbic7XG5cdH1cblxuXHRwdWJsaWMgaGFzSG92ZXJhYmxlRXJyb3JUb29sdGlwKCk6IGJvb2xlYW4ge1xuXHRcdGlmICghdGhpcy5oYXNSaWdodE9mQ2FwdGlvbkVycm9yKCkgJiYgIXRoaXMuZXJyb3JNZXNzYWdlQXNUb29sdGlwKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnBvcHVwU3RhdGUgIT09ICdvbkhvdmVyJykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5nZXRFcnJvclRvU2hvdygpKSkge1xuXHRcdFx0cmV0dXJuICF0aGlzLmVycm9yRnVsbHlWaXNpYmxlO1xuXHRcdH1cblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmdldFdhcm5pbmdUb1Nob3coKSkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgaGFzUmlnaHRPZkNhcHRpb25FcnJvcigpOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5lcnJvck1lc3NhZ2VBc1Rvb2x0aXApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZGlyZWN0aW9uICE9PSAndmVydGljYWwnIHx8IHRoaXMuZ2V0RXJyb3JMb2NhdGlvbigpICE9PSAncmlnaHRPZkNhcHRpb24nKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cHVibGljIHNldEVycm9yTWVzc2FnZUlzVHJ1bmNhdGVkID0gKGlzVHJ1bmNhdGVkOiBib29sZWFuKSA9PiB7XG5cdFx0dGhpcy5lcnJvckZ1bGx5VmlzaWJsZSA9ICFpc1RydW5jYXRlZDtcblx0fVxuXG5cdHB1YmxpYyBzaG91bGRTaG93V2FybmluZ1BvcHVwKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBpc1ZhbHVlU2V0KHRoaXMuZ2V0V2FybmluZ1RvU2hvdygpKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZVBvcHVwKCk6IHZvaWQge1xuXHRcdHRoaXMucG9wdXBTdGF0ZSA9ICdvbkhvdmVyJztcblx0fVxuXG5cdHB1YmxpYyB0b2dnbGVQb3B1cCgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuZXJyb3JNZXNzYWdlQXNUb29sdGlwICYmICF0aGlzLmhhc1JpZ2h0T2ZDYXB0aW9uRXJyb3IoKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAodGhpcy5lcnJvckZ1bGx5VmlzaWJsZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAodGhpcy5wb3B1cFN0YXRlID09PSAnbG9ja2VkT3BlbicpIHtcblx0XHRcdHRoaXMucG9wdXBTdGF0ZSA9ICdvbkhvdmVyJztcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5wb3B1cFN0YXRlID0gJ2xvY2tlZE9wZW4nO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBzZXRFcnJvclRvb2x0aXBPZmZzZXQgPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKHRoaXMucG9wdXBTdGF0ZSAhPT0gJ2xvY2tlZE9wZW4nICYmIHRoaXMucG9wdXBTdGF0ZSAhPT0gJ29uSG92ZXInKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHBvcHVwT2Zmc2V0WSA9IHRoaXMuYWJzb2x1dGVBbmNob3I/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gdGhpcy5maXhlZEFuY2hvcj8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG5cdFx0aWYgKHRoaXMuZml4ZWRXcmFwcGVyPy5uYXRpdmVFbGVtZW50KSB7XG5cdFx0XHR0aGlzLmZpeGVkV3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7cG9wdXBPZmZzZXRZfXB4KWA7XG5cdFx0fVxuXHR9O1xufVxuIiwiPGRpdlxuXHRjbGFzcz1cImNvbXBvbmVudENvbnRhaW5lclwiXG5cdFtuZ0NsYXNzXT1cIntcblx0XHRoYXNDYXB0aW9uOiBjYXB0aW9uIHx8IGNhcHRpb25SZWYsXG5cdFx0dmVydGljYWw6IGRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJyxcblx0XHRob3Jpem9udGFsOiBkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyxcblx0XHR0b3BBbGlnbm1lbnQ6IHZlcnRpY2FsQWxpZ25tZW50ID09PSAndG9wJyxcblx0XHRyZXZlcnNlT3JkZXI6IHN3YXBJbnB1dEFuZENhcHRpb24sXG5cdFx0aGFzRXJyb3JzOiBnZXRFcnJvclRvU2hvdygpICYmIGF0dGFjaGVkQ29udHJvbC50b3VjaGVkLFxuXHRcdHBlcmNlbnRhZ2VTcGFjaW5nOiBjYXB0aW9uU3BhY2luZyA9PT0gJ3BlcmNlbnRhZ2VzJyAmJiBzcGFjZURpc3RyaWJ1dGlvbiAhPT0gJ2ZpeGVkSW5wdXRXaWR0aCcsXG5cdFx0J2Q0MC02MCc6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnNDAtNjAnLFxuXHRcdCdkMzAtNzAnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJzMwLTcwJyxcblx0XHQnZDM0LTY2Jzogc3BhY2VEaXN0cmlidXRpb24gPT09ICczNC02NicsXG5cdFx0J2ZpeGVkSW5wdXRXaWR0aCc6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnZml4ZWRJbnB1dFdpZHRoJ1xuXHR9XCJcbj5cblx0PGRpdiBjbGFzcz1cImVycm9yQWJvdmVJbnB1dENvbnRhaW5lclwiICpuZ0lmPVwiZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYgIWVycm9yTWVzc2FnZUFzVG9vbHRpcFwiPlxuXHRcdDxkaXYgY2xhc3M9XCJzcGFjZXJcIj48L2Rpdj5cblx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVycm9yUmVmXCI+PC9uZy1jb250YWluZXI+XG5cdDwvZGl2PlxuXG5cdDxkaXYgY2xhc3M9XCJjYXB0aW9uSW5wdXRBbmRFcnJvclwiICNpbnRlcm5hbENvbXBvbmVudFJlZj5cblx0XHQ8ZGl2IGNsYXNzPVwiY2FwdGlvbkR1bW15Rm9yU3BhY2VDYWxjdWxhdGlvblwiICNjYXB0aW9uRHVtbXlGb3JTcGFjZUNhbGN1bGF0aW9uICpuZ0lmPVwiaGFzUmlnaHRPZkNhcHRpb25FcnJvcigpXCI+XG5cdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhcHRpb25UcGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2ZvckNhbGN1bGF0aW9uOiB0cnVlfVwiPjwvbmctY29udGFpbmVyPlxuXHRcdDwvZGl2PlxuXHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FwdGlvblRwbFwiPjwvbmctY29udGFpbmVyPlxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcgJiYgZ2V0RXJyb3JMb2NhdGlvbigpID09PSAnYmVsb3dDYXB0aW9uJyAmJiAhZXJyb3JNZXNzYWdlQXNUb29sdGlwXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXJyb3JSZWZcIj48L25nLWNvbnRhaW5lcj5cblx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXRDb250YWluZXJcIiAobW91c2VlbnRlcik9XCJzZXRFcnJvclRvb2x0aXBPZmZzZXQoKVwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yTWVzc2FnZUFzVG9vbHRpcCAmJiBzaG91bGRTaG93RXJyb3JNZXNzYWdlcygpICYmIGdldEVycm9yVG9TaG93KClcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcFRyaWFuZ2xlXCI+PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJlcnJvclRvb2x0aXBUcmlhbmdsZVdoaXRlXCI+PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJlcnJvclRvb2x0aXBcIj5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVycm9yUmVmXCI+PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY2FwdGlvblRwbCBsZXQtZm9yQ2FsY3VsYXRpb249XCJmb3JDYWxjdWxhdGlvblwiPlxuXHQ8ZGl2IGNsYXNzPVwiY2FwdGlvblwiXG5cdFx0Km5nSWY9XCJjYXB0aW9uIHx8IGNhcHRpb25SZWZcIlxuXHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdHdpdGhFcnJvclJpZ2h0T2ZDYXB0aW9uOiBnZXRFcnJvckxvY2F0aW9uKCkgPT09ICdyaWdodE9mQ2FwdGlvbidcblx0XHR9XCJcblx0PlxuXHRcdDxkaXYgKm5nSWY9XCJjYXB0aW9uUmVmXCIgY2xhc3M9XCJjYXB0aW9uUmVmQ29udGFpbmVyXCI+XG5cdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhcHRpb25SZWZcIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdDxkaXYgKm5nSWY9XCJpc1JlcXVpcmVkKClcIj4mbmJzcDsqPC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cIiFjYXB0aW9uUmVmXCIgY2xhc3M9XCJjYXB0aW9uVGV4dFwiPnt7Y2FwdGlvbn19PHNwYW4gKm5nSWY9XCJpc1JlcXVpcmVkKClcIj4mbmJzcDsqPC9zcGFuPjwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJyaWdodE9mQ2FwdGlvbkVycm9yXCIgKm5nSWY9XCJoYXNSaWdodE9mQ2FwdGlvbkVycm9yKClcIiBbbmdDbGFzc109XCJ7ZXJyb3JGdWxseVZpc2libGU6IGVycm9yRnVsbHlWaXNpYmxlfVwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJlcnJvclJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9yQ2FsY3VsYXRpb246IGZvckNhbGN1bGF0aW9ufVwiPjwvbmctY29udGFpbmVyPlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZXJyb3JSZWYgbGV0LWZvckNhbGN1bGF0aW9uPVwiZm9yQ2FsY3VsYXRpb25cIj5cblx0PGRpdiAqbmdJZj1cInNob3VsZFNob3dFcnJvck1lc3NhZ2VzKCkgJiYgZ2V0RXJyb3JUb1Nob3coKVwiIGNsYXNzPVwiZXJyb3JDb250YWluZXJcIiBbZWxlbWVudElzVHJ1bmNhdGVkQ2JdPVwiZm9yQ2FsY3VsYXRpb24gPyBzZXRFcnJvck1lc3NhZ2VJc1RydW5jYXRlZCA6IG51bGxcIiBbbmdDbGFzc109XCJ7aG9yaXpvbnRhbDogZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcsIGhhc0NhcHRpb246IGNhcHRpb24gfHwgY2FwdGlvblJlZiwgJ2QzMC03MCc6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzAtNzAnLCAnZDM0LTY2Jzogc3BhY2VEaXN0cmlidXRpb24gPT09ICczNC02Nid9XCI+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ21pbicpXCI+e3tzdWJzdGl0dXRlUGFyYW1ldGVycyhnZXRFcnJvck1lc3NhZ2UoXCJtaW5cIiksIHttaW46IGF0dGFjaGVkQ29udHJvbC5lcnJvcnMubWluLm1pbn0pfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignbWF4JylcIj57e3N1YnN0aXR1dGVQYXJhbWV0ZXJzKGdldEVycm9yTWVzc2FnZShcIm1heFwiKSwge21heDogYXR0YWNoZWRDb250cm9sLmVycm9ycy5tYXgubWF4fSl9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdyZXF1aXJlZCcpXCI+e3tnZXRFcnJvck1lc3NhZ2UoXCJyZXF1aXJlZFwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ2VtYWlsJylcIj57e2dldEVycm9yTWVzc2FnZShcImVtYWlsXCIpfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignbWlubGVuZ3RoJylcIj57e3N1YnN0aXR1dGVQYXJhbWV0ZXJzKGdldEVycm9yTWVzc2FnZShcIm1pbkxlbmd0aFwiKSwge21pbkxlbmd0aDogYXR0YWNoZWRDb250cm9sLmVycm9ycy5taW5sZW5ndGgucmVxdWlyZWRMZW5ndGh9KX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ21heGxlbmd0aCcpXCI+e3tzdWJzdGl0dXRlUGFyYW1ldGVycyhnZXRFcnJvck1lc3NhZ2UoXCJtYXhMZW5ndGhcIiksIHttYXhMZW5ndGg6IGF0dGFjaGVkQ29udHJvbC5lcnJvcnMubWF4bGVuZ3RoLnJlcXVpcmVkTGVuZ3RofSl9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdwYXR0ZXJuJylcIj57e2dldEVycm9yTWVzc2FnZShcInBhdHRlcm5cIil9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdNYXRjaFBhc3N3b3JkJylcIj57e2dldEVycm9yTWVzc2FnZShcIm1hdGNoUGFzc3dvcmRcIil9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdkYXRlJylcIj57e2dldEVycm9yTWVzc2FnZShcImRhdGVcIil9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdtZXNzYWdlJylcIj57e2F0dGFjaGVkQ29udHJvbC5lcnJvcnMubWVzc2FnZS52YWx1ZX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ2Zvcm1MZXZlbCcpXCI+e3tnZXRFcnJvck1lc3NhZ2UoXCJmb3JtTGV2ZWxcIil9fTwvZGl2PlxuXHRcdDxkaXYgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q3VzdG9tRXJyb3JIYW5kbGVyKGdldEVycm9yVG9TaG93KCkpPy50ZW1wbGF0ZVJlZlwiPjwvZGl2PlxuXHQ8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFpbFRwbD5cblx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcENvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInthbHdheXNPcGVuOiBzaG91bGRTaG93RXJyb3JUb29sdGlwT3BlbmVkKCl9XCI+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0hvdmVyYWJsZUVycm9yVG9vbHRpcCgpIHx8IHNob3VsZFNob3dFcnJvclRvb2x0aXBPcGVuZWQoKVwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcFRyaWFuZ2xlXCI+PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZXJyb3JUb29sdGlwVHJpYW5nbGVXaGl0ZVwiPjwvZGl2PlxuXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYWJzb2x1dGVBbmNob3JcIiAjYWJzb2x1dGVBbmNob3I+PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZml4ZWRBbmNob3JcIiAjZml4ZWRBbmNob3IgW29uUmVuZGVyRm5dPVwic2V0RXJyb3JUb29sdGlwT2Zmc2V0XCI+PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZml4ZWRXcmFwcGVyXCIgI2ZpeGVkV3JhcHBlcj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcFwiIFtuZ0NsYXNzXT1cIntub1BvaW50ZXJFdmVudHM6ICFzaG91bGRTaG93RXJyb3JUb29sdGlwT3BlbmVkKCl9XCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcElubmVyXCI+XG5cdFx0XHRcdFx0XHQ8aSBjbGFzcz1cImNsb3NlQnRuXCIgKGNsaWNrKT1cImNsb3NlUG9wdXAoKTtcIj7DlzwvaT5cblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRFcnJvclRvU2hvdygpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXJyb3JSZWZcIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCIhZ2V0RXJyb3JUb1Nob3coKSAmJiBzaG91bGRTaG93V2FybmluZ1BvcHVwKClcIj5cblx0XHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFdhcm5pbmdUb1Nob3dJc1RlbXBsYXRlUmVmKClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRXYXJuaW5nVG9TaG93QXNUZW1wbGF0ZVJlZigpXCI+PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiIWdldFdhcm5pbmdUb1Nob3dJc1RlbXBsYXRlUmVmKClcIj57e2dldFdhcm5pbmdUb1Nob3coKX19PC9zcGFuPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHQ8a2xwLWZvcm0td2FybmluZy1pY29uIHZhcmlhbnQ9XCJmaWxsXCIgKm5nSWY9XCJnZXRFcnJvclRvU2hvdygpXCIgKGNsaWNrKT1cInRvZ2dsZVBvcHVwKClcIj48L2tscC1mb3JtLXdhcm5pbmctaWNvbj5cblx0XHQ8a2xwLWZvcm0td2FybmluZy1pY29uIHZhcmlhbnQ9XCJsaW5lXCIgKm5nSWY9XCIhZ2V0RXJyb3JUb1Nob3coKSAmJiBnZXRXYXJuaW5nVG9TaG93KClcIiAoY2xpY2spPVwidG9nZ2xlUG9wdXAoKVwiPjwva2xwLWZvcm0td2FybmluZy1pY29uPlxuXHQ8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBRVosTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQixpQkFBaUIsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUd0RixPQUFPLEVBQUMsVUFBVSxFQUFFLG9CQUFvQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFbkUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFHeEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQXNCLHFCQUFxQixDQUFDLENBQUM7QUFFbEcsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXNCO0lBQ3hELEdBQUcsRUFBRSxnQ0FBZ0M7SUFDckMsR0FBRyxFQUFFLGlDQUFpQztJQUN0QyxRQUFRLEVBQUUsVUFBVTtJQUNwQixLQUFLLEVBQUUsMkJBQTJCO0lBQ2xDLFNBQVMsRUFBRSxnREFBZ0Q7SUFDM0QsU0FBUyxFQUFFLGlEQUFpRDtJQUM1RCxPQUFPLEVBQUUseUJBQXlCO0lBQ2xDLGFBQWEsRUFB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QUxoQyxTQUFTOytCQUNDLGtCQUFrQjs7MEJBNkIxQixRQUFROzswQkFDUixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQUcsUUFBUTtxRUF4QnZCLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUNVLHFCQUFxQjtzQkFBcEMsS0FBSztnQkFDb0Msb0JBQW9CO3NCQUE3RCxTQUFTO3VCQUFDLHNCQUFzQjtnQkFDSixPQUFPO3NCQUFuQyxTQUFTO3VCQUFDLFNBQVM7Z0JBQ2lDLCtCQUErQjtzQkFBbkYsU0FBUzt1QkFBQyxpQ0FBaUM7Z0JBQ1IsY0FBYztzQkFBakQsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ00sV0FBVztzQkFBM0MsU0FBUzt1QkFBQyxhQUFhO2dCQUNVLFlBQVk7c0JBQTdDLFNBQVM7dUJBQUMsY0FBYztnQkFDUSxVQUFVO3NCQUExQyxZQUFZO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFmdGVyVmlld0luaXQsXG5cdENvbXBvbmVudCxcblx0Q29udGVudENoaWxkLFxuXHRFbGVtZW50UmVmLFxuXHRJbmplY3QsXG5cdEluamVjdGlvblRva2VuLFxuXHRJbnB1dCxcblx0T3B0aW9uYWwsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IsIFVudHlwZWRGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtWYWx1ZUFjY2Vzc29yQmFzZX0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQge0N1c3RvbUVycm9yTWVzc2FnZXMsIEZvcm1FcnJvck1lc3NhZ2VzfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge2lzVmFsdWVTZXQsIHN0cmluZ0lzU2V0QW5kRmlsbGVkfSBmcm9tICcuLi8uLi91dGlsL3ZhbHVlcyc7XG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gJy4uL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7YXdhaXRhYmxlRm9yTmV4dEN5Y2xlfSBmcm9tICcuLi8uLi91dGlsL2FuZ3VsYXInO1xuaW1wb3J0IHtnZXRBbGxMaW1pdGluZ0NvbnRhaW5lcnN9IGZyb20gJy4uLy4uL3V0aWwvZG9tJztcblxuXG5leHBvcnQgY29uc3QgRk9STV9FUlJPUl9NRVNTQUdFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDdXN0b21FcnJvck1lc3NhZ2VzPignZm9ybS5lcnJvci5tZXNzYWdlcycpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFUzogRm9ybUVycm9yTWVzc2FnZXMgPSB7XG5cdG1pbjogJ1VzZSBhIG51bWJlciBsYXJnZXIgdGhhbiAlbWluJScsXG5cdG1heDogJ1VzZSBhIG51bWJlciBzbWFsbGVyIHRoYW4gJW1heCUnLFxuXHRyZXF1aXJlZDogJ1JlcXVpcmVkJyxcblx0ZW1haWw6ICdVc2UgYSB2YWxpZCBlbWFpbCBhZGRyZXNzJyxcblx0bWluTGVuZ3RoOiAnSGFzIHRvIGJlIGxvbmdlciB0aGFuICVtaW5MZW5ndGglIGNoYXJhY3RlcihzKScsXG5cdG1heExlbmd0aDogJ0hhcyB0byBiZSBzaG9ydGVyIHRoYW4gJW1heExlbmd0aCUgY2hhcmFjdGVyKHMpJyxcblx0cGF0dGVybjogJ1RoaXMgaW5wdXQgaXMgbm90IHZhbGlkJyxcblx0bWF0Y2hQYXNzd29yZDogJ1Bhc3N3b3JkcyBtdXN0IG1hdGNoJyxcblx0ZGF0ZTogJ0VudGVyIGEgdmFsaWQgZGF0ZScsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1lbGVtZW50Jyxcblx0dGVtcGxhdGVVcmw6ICcuL2Zvcm0tZWxlbWVudC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2Zvcm0tZWxlbWVudC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXHRwdWJsaWMgYXR0YWNoZWRDb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG5cdEBJbnB1dCgpIHB1YmxpYyBjYXB0aW9uOiBzdHJpbmc7XG5cdEBJbnB1dCgpIHB1YmxpYyBkaXJlY3Rpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cdEBJbnB1dCgpIHB1YmxpYyBjYXB0aW9uU3BhY2luZzogJ3BlcmNlbnRhZ2VzJyB8ICdub25lJyA9ICdwZXJjZW50YWdlcyc7XG5cdEBJbnB1dCgpIHB1YmxpYyB2ZXJ0aWNhbEFsaWdubWVudDogJ2NlbnRlcicgfCAndG9wJyA9ICdjZW50ZXInO1xuXHRASW5wdXQoKSBwdWJsaWMgc3BhY2VEaXN0cmlidXRpb246ICc0MC02MCcgfCAnMzQtNjYnIHwgJzMwLTcwJyB8ICdmaXhlZElucHV0V2lkdGgnID0gJzQwLTYwJztcblx0QElucHV0KCkgcHVibGljIHN3YXBJbnB1dEFuZENhcHRpb24gPSBmYWxzZTtcblx0QElucHV0KCkgcHVibGljIGVycm9yTWVzc2FnZUFzVG9vbHRpcCA9IGZhbHNlO1xuXHRAVmlld0NoaWxkKCdpbnRlcm5hbENvbXBvbmVudFJlZicpIHB1YmxpYyBpbnRlcm5hbENvbXBvbmVudFJlZjogRWxlbWVudFJlZjtcblx0QFZpZXdDaGlsZCgndGFpbFRwbCcpIHB1YmxpYyB0YWlsVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXHRAVmlld0NoaWxkKCdjYXB0aW9uRHVtbXlGb3JTcGFjZUNhbGN1bGF0aW9uJykgcHVibGljIGNhcHRpb25EdW1teUZvclNwYWNlQ2FsY3VsYXRpb246IEVsZW1lbnRSZWY7XG5cdEBWaWV3Q2hpbGQoJ2Fic29sdXRlQW5jaG9yJykgcHVibGljIGFic29sdXRlQW5jaG9yOiBFbGVtZW50UmVmO1xuXHRAVmlld0NoaWxkKCdmaXhlZEFuY2hvcicpIHB1YmxpYyBmaXhlZEFuY2hvcjogRWxlbWVudFJlZjtcblx0QFZpZXdDaGlsZCgnZml4ZWRXcmFwcGVyJykgcHVibGljIGZpeGVkV3JhcHBlcjogRWxlbWVudFJlZjtcblx0QENvbnRlbnRDaGlsZChOR19WQUxVRV9BQ0NFU1NPUikgZmllbGRJbnB1dDogVmFsdWVBY2Nlc3NvckJhc2U8YW55PjtcblxuXHRwdWJsaWMgY2FwdGlvblJlZjogVGVtcGxhdGVSZWY8YW55Pjtcblx0cHVibGljIGVycm9yTWVzc2FnZXM6IEZvcm1FcnJvck1lc3NhZ2VzID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUztcblx0cHVibGljIGN1c3RvbUVycm9ySGFuZGxlcnM6IEFycmF5PHsgZXJyb3I6IHN0cmluZzsgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4gfT4gPSBbXTtcblx0cHJpdmF0ZSBpbnB1dDogVmFsdWVBY2Nlc3NvckJhc2U8YW55Pjtcblx0cHVibGljIGVycm9yRnVsbHlWaXNpYmxlOiBib29sZWFuO1xuXHRwcml2YXRlIHBvcHVwU3RhdGU6ICdsb2NrZWRPcGVuJyB8ICdsb2NrZWRDbG9zZWQnIHwgJ29uSG92ZXInID0gJ29uSG92ZXInO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGb3JtQ29tcG9uZW50LFxuXHRcdEBJbmplY3QoRk9STV9FUlJPUl9NRVNTQUdFUykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjdXN0b21NZXNzYWdlczogQ3VzdG9tRXJyb3JNZXNzYWdlcyxcblx0XHRwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuXHQpIHtcblx0fVxuXG5cdGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCBhd2FpdGFibGVGb3JOZXh0Q3ljbGUoKTtcblx0XHR0aGlzLmZpZWxkSW5wdXQ/LnNldFRhaWxUcGwodGhpcy50YWlsVHBsKTtcblx0XHR0aGlzLmZpZWxkSW5wdXQ/Lm9uVG91Y2guYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKChlKSA9PiB7XG5cdFx0XHR0aGlzLmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0XHR9KTtcblxuXHRcdFsuLi5nZXRBbGxMaW1pdGluZ0NvbnRhaW5lcnModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KSwgd2luZG93XS5mb3JFYWNoKGUgPT4gZS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNldEVycm9yVG9vbHRpcE9mZnNldCkpO1xuXHR9XG5cblx0cHVibGljIHNob3VsZFNob3dFcnJvck1lc3NhZ2VzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnBhcmVudD8uc2hvd0Vycm9yTWVzc2FnZXMgIT09IGZhbHNlO1xuXHR9XG5cblx0cHVibGljIHN1YnN0aXR1dGVQYXJhbWV0ZXJzKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLnJlZHVjZSgobXNnLCBrZXkpID0+IHtcblx0XHRcdHJldHVybiBtc2cucmVwbGFjZShgJSR7a2V5fSVgLCBwYXJhbWV0ZXJzW2tleV0pO1xuXHRcdH0sIG1lc3NhZ2UpO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLCBpbnB1dDogVmFsdWVBY2Nlc3NvckJhc2U8YW55PiA9IG51bGwpOiB2b2lkIHtcblx0XHR0aGlzLmF0dGFjaGVkQ29udHJvbCA9IGZvcm1Db250cm9sO1xuXHRcdHRoaXMucGFyZW50LnJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbCwgdGhpcyk7XG5cdFx0dGhpcy5pbnB1dCA9IGlucHV0O1xuXG5cblx0XHR0aGlzLmF0dGFjaGVkQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoZSkgPT4ge1xuXHRcdFx0dGhpcy5kZXRlcm1pbmVQb3B1cFN0YXRlKCk7XG5cdFx0fSk7XG5cdFx0dGhpcy5kZXRlcm1pbmVQb3B1cFN0YXRlKCk7XG5cdH1cblxuXHRwdWJsaWMgZGV0ZXJtaW5lUG9wdXBTdGF0ZSgpOiB2b2lkIHtcblx0XHRpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5nZXRFcnJvclRvU2hvdygpKSkge1xuXHRcdFx0dGhpcy5wb3B1cFN0YXRlID0gJ29uSG92ZXInO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmdldFdhcm5pbmdUb1Nob3coKSkpIHtcblx0XHRcdHRoaXMucG9wdXBTdGF0ZSA9ICdsb2NrZWRPcGVuJztcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5wb3B1cFN0YXRlID0gJ29uSG92ZXInO1xuXHR9XG5cblx0cHVibGljIHVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLmF0dGFjaGVkQ29udHJvbCA9IG51bGw7XG5cdFx0dGhpcy5wYXJlbnQudW5yZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2wpO1xuXHR9XG5cblx0cHVibGljIGdldEF0dGFjaGVkQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wge1xuXHRcdHJldHVybiB0aGlzLmF0dGFjaGVkQ29udHJvbDtcblx0fVxuXG5cdHB1YmxpYyBnZXRBdHRhY2hlZElucHV0KCk6IFZhbHVlQWNjZXNzb3JCYXNlPGFueT4ge1xuXHRcdHJldHVybiB0aGlzLmlucHV0O1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyRXJyb3JIYW5kbGVyKGVycm9yOiBzdHJpbmcsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XG5cdFx0dGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLnB1c2goe2Vycm9yLCB0ZW1wbGF0ZVJlZn0pO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ2FwdGlvbih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQge1xuXHRcdHRoaXMuY2FwdGlvblJlZiA9IHRlbXBsYXRlUmVmO1xuXHR9XG5cblx0cHVibGljIGdldFdhcm5pbmdUb1Nob3coKTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB7XG5cdFx0cmV0dXJuIHRoaXMucGFyZW50Py5nZXRXYXJuaW5nVG9TaG93KHRoaXMuYXR0YWNoZWRDb250cm9sKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRXYXJuaW5nVG9TaG93QXNUZW1wbGF0ZVJlZigpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcblx0XHRpZiAodGhpcy5wYXJlbnQ/LmdldFdhcm5pbmdUb1Nob3codGhpcy5hdHRhY2hlZENvbnRyb2wpIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcblx0XHRcdHJldHVybiB0aGlzLnBhcmVudD8uZ2V0V2FybmluZ1RvU2hvdyh0aGlzLmF0dGFjaGVkQ29udHJvbCkgYXMgVGVtcGxhdGVSZWY8YW55Pjtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdXYXJuaW5nIGlzIG5vdCBhIFRlbXBsYXRlUmVmJyk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0V2FybmluZ1RvU2hvd0lzVGVtcGxhdGVSZWYoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0V2FybmluZ1RvU2hvdygpIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG5cdH1cblxuXHRnZXRFcnJvclRvU2hvdygpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGZpcnN0RXJyb3IgPSBPYmplY3Qua2V5cyh0aGlzLmF0dGFjaGVkQ29udHJvbD8uZXJyb3JzID8/IHt9KVswXTtcblx0XHRpZiAodGhpcy5hdHRhY2hlZENvbnRyb2w/LnRvdWNoZWQgIT09IHRydWUpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAoIXRoaXMuYXR0YWNoZWRDb250cm9sPy5lcnJvcnMpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gZmlyc3RFcnJvcjtcblx0fVxuXG5cdGdldEN1c3RvbUVycm9ySGFuZGxlcihlcnJvcjogc3RyaW5nKTogeyBlcnJvcjogc3RyaW5nOyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiB9IHtcblx0XHRyZXR1cm4gdGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLmZpbmQoKGUpID0+IGUuZXJyb3IgPT09IGVycm9yKTtcblx0fVxuXG5cdHNob3dEZWZhdWx0RXJyb3IoZXJyb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmdldEVycm9yVG9TaG93KCkgPT09IGVycm9yICYmICF0aGlzLmN1c3RvbUVycm9ySGFuZGxlcnMuc29tZSgoZSkgPT4gZS5lcnJvciA9PT0gZXJyb3IpO1xuXHR9XG5cblx0Z2V0U2Nyb2xsYWJsZVBhcmVudChub2RlKTogYW55IHtcblx0XHRpZiAobm9kZSA9PT0gd2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuXHRcdFx0cmV0dXJuIHdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cdFx0fVxuXHRcdGNvbnN0IG92ZXJmbG93WSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSkub3ZlcmZsb3dZO1xuXHRcdGlmIChub2RlLmNsaWVudEhlaWdodCA8IG5vZGUuc2Nyb2xsSGVpZ2h0ICYmIChvdmVyZmxvd1kgPT09ICdhdXRvJyB8fCBvdmVyZmxvd1kgPT09ICdzY3JvbGwnKSkge1xuXHRcdFx0cmV0dXJuIG5vZGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFNjcm9sbGFibGVQYXJlbnQobm9kZS5wYXJlbnROb2RlKTtcblx0XHR9XG5cdH1cblxuXHRzY3JvbGxUbygpOiB2b2lkIHtcblx0XHRjb25zdCBwYXJlbnQgPSB0aGlzLmdldFNjcm9sbGFibGVQYXJlbnQodGhpcy5pbnRlcm5hbENvbXBvbmVudFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHRjb25zdCBwYXJlbnRUb3AgPSBwYXJlbnQgPT09IHdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPyAwIDogcGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblx0XHRjb25zdCBlbGVtZW50VG9wID0gdGhpcy5pbnRlcm5hbENvbXBvbmVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcblx0XHRjb25zdCBwYXJlbnRTY3JvbGxUb3AgPSBwYXJlbnQuc2Nyb2xsVG9wO1xuXHRcdGNvbnN0IGFuc3dlciA9IGVsZW1lbnRUb3AgLSBwYXJlbnRUb3AgKyBwYXJlbnRTY3JvbGxUb3A7XG5cdFx0Y29uc29sZS5sb2coJ2Fuc3dlcicsIHBhcmVudFRvcCwgZWxlbWVudFRvcCwgcGFyZW50U2Nyb2xsVG9wLCBhbnN3ZXIpO1xuXHRcdGNvbnNvbGUubG9nKHBhcmVudCwgdGhpcy5pbnRlcm5hbENvbXBvbmVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuXHRcdHBhcmVudC5zY3JvbGxUbyh7XG5cdFx0XHR0b3A6IGFuc3dlciAtIDMwLFxuXHRcdFx0YmVoYXZpb3I6ICdzbW9vdGgnXG5cdFx0fSk7XG5cdH1cblxuXHRpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xuXHRcdGlmIChpc1ZhbHVlU2V0KHRoaXMuaW5wdXQpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pbnB1dC5oYXNWYWxpZGF0b3IoJ3JlcXVpcmVkJyk7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGdldEVycm9yTWVzc2FnZShrZXk6IGtleW9mIEZvcm1FcnJvck1lc3NhZ2VzKTogc3RyaW5nIHtcblx0XHRpZiAoa2V5ID09PSAnZm9ybUxldmVsJykge1xuXHRcdFx0cmV0dXJuIHRoaXMuYXR0YWNoZWRDb250cm9sLmVycm9ycz8uZm9ybUxldmVsO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5jdXN0b21NZXNzYWdlcz8uW2tleV0/LigpID8/IHRoaXMuZXJyb3JNZXNzYWdlc1trZXldO1xuXHR9XG5cblx0cHVibGljIGdldEVycm9yTG9jYXRpb24oKTogJ2JlbG93Q2FwdGlvbicgfCAncmlnaHRPZkNhcHRpb24nIHtcblx0XHRyZXR1cm4gdGhpcy5wYXJlbnQ/LmVycm9yTWVzc2FnZUxvY2F0aW9uID8/ICdiZWxvd0NhcHRpb24nO1xuXHR9XG5cblx0cHVibGljIHNob3VsZFNob3dFcnJvclRvb2x0aXBPcGVuZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMucG9wdXBTdGF0ZSA9PT0gJ2xvY2tlZE9wZW4nO1xuXHR9XG5cblx0cHVibGljIGhhc0hvdmVyYWJsZUVycm9yVG9vbHRpcCgpOiBib29sZWFuIHtcblx0XHRpZiAoIXRoaXMuaGFzUmlnaHRPZkNhcHRpb25FcnJvcigpICYmICF0aGlzLmVycm9yTWVzc2FnZUFzVG9vbHRpcCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRpZiAodGhpcy5wb3B1cFN0YXRlICE9PSAnb25Ib3ZlcicpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0aWYgKHN0cmluZ0lzU2V0QW5kRmlsbGVkKHRoaXMuZ2V0RXJyb3JUb1Nob3coKSkpIHtcblx0XHRcdHJldHVybiAhdGhpcy5lcnJvckZ1bGx5VmlzaWJsZTtcblx0XHR9XG5cdFx0aWYgKGlzVmFsdWVTZXQodGhpcy5nZXRXYXJuaW5nVG9TaG93KCkpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHVibGljIGhhc1JpZ2h0T2ZDYXB0aW9uRXJyb3IoKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuZXJyb3JNZXNzYWdlQXNUb29sdGlwKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmRpcmVjdGlvbiAhPT0gJ3ZlcnRpY2FsJyB8fCB0aGlzLmdldEVycm9yTG9jYXRpb24oKSAhPT0gJ3JpZ2h0T2ZDYXB0aW9uJykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHB1YmxpYyBzZXRFcnJvck1lc3NhZ2VJc1RydW5jYXRlZCA9IChpc1RydW5jYXRlZDogYm9vbGVhbikgPT4ge1xuXHRcdHRoaXMuZXJyb3JGdWxseVZpc2libGUgPSAhaXNUcnVuY2F0ZWQ7XG5cdH1cblxuXHRwdWJsaWMgc2hvdWxkU2hvd1dhcm5pbmdQb3B1cCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gaXNWYWx1ZVNldCh0aGlzLmdldFdhcm5pbmdUb1Nob3coKSk7XG5cdH1cblxuXHRwdWJsaWMgY2xvc2VQb3B1cCgpOiB2b2lkIHtcblx0XHR0aGlzLnBvcHVwU3RhdGUgPSAnb25Ib3Zlcic7XG5cdH1cblxuXHRwdWJsaWMgdG9nZ2xlUG9wdXAoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmVycm9yTWVzc2FnZUFzVG9vbHRpcCAmJiAhdGhpcy5oYXNSaWdodE9mQ2FwdGlvbkVycm9yKCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZXJyb3JGdWxseVZpc2libGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKHRoaXMucG9wdXBTdGF0ZSA9PT0gJ2xvY2tlZE9wZW4nKSB7XG5cdFx0XHR0aGlzLnBvcHVwU3RhdGUgPSAnb25Ib3Zlcic7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9wdXBTdGF0ZSA9ICdsb2NrZWRPcGVuJztcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2V0RXJyb3JUb29sdGlwT2Zmc2V0ID0gKCk6IHZvaWQgPT4ge1xuXHRcdGlmICh0aGlzLnBvcHVwU3RhdGUgIT09ICdsb2NrZWRPcGVuJyAmJiB0aGlzLnBvcHVwU3RhdGUgIT09ICdvbkhvdmVyJykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBwb3B1cE9mZnNldFkgPSB0aGlzLmFic29sdXRlQW5jaG9yPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCAtIHRoaXMuZml4ZWRBbmNob3I/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXHRcdGlmICh0aGlzLmZpeGVkV3JhcHBlcj8ubmF0aXZlRWxlbWVudCkge1xuXHRcdFx0dGhpcy5maXhlZFdyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgke3BvcHVwT2Zmc2V0WX1weClgO1xuXHRcdH1cblx0fTtcbn1cbiIsIjxkaXZcblx0Y2xhc3M9XCJjb21wb25lbnRDb250YWluZXJcIlxuXHRbbmdDbGFzc109XCJ7XG5cdFx0aGFzQ2FwdGlvbjogY2FwdGlvbiB8fCBjYXB0aW9uUmVmLFxuXHRcdHZlcnRpY2FsOiBkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcsXG5cdFx0aG9yaXpvbnRhbDogZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcsXG5cdFx0dG9wQWxpZ25tZW50OiB2ZXJ0aWNhbEFsaWdubWVudCA9PT0gJ3RvcCcsXG5cdFx0cmV2ZXJzZU9yZGVyOiBzd2FwSW5wdXRBbmRDYXB0aW9uLFxuXHRcdGhhc0Vycm9yczogZ2V0RXJyb3JUb1Nob3coKSAmJiBhdHRhY2hlZENvbnRyb2wudG91Y2hlZCxcblx0XHRwZXJjZW50YWdlU3BhY2luZzogY2FwdGlvblNwYWNpbmcgPT09ICdwZXJjZW50YWdlcycgJiYgc3BhY2VEaXN0cmlidXRpb24gIT09ICdmaXhlZElucHV0V2lkdGgnLFxuXHRcdCdkNDAtNjAnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJzQwLTYwJyxcblx0XHQnZDMwLTcwJzogc3BhY2VEaXN0cmlidXRpb24gPT09ICczMC03MCcsXG5cdFx0J2QzNC02Nic6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzQtNjYnLFxuXHRcdCdmaXhlZElucHV0V2lkdGgnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJ2ZpeGVkSW5wdXRXaWR0aCdcblx0fVwiXG4+XG5cdDxkaXYgY2xhc3M9XCJlcnJvckFib3ZlSW5wdXRDb250YWluZXJcIiAqbmdJZj1cImRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnICYmICFlcnJvck1lc3NhZ2VBc1Rvb2x0aXBcIj5cblx0XHQ8ZGl2IGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG5cdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJlcnJvclJlZlwiPjwvbmctY29udGFpbmVyPlxuXHQ8L2Rpdj5cblxuXHQ8ZGl2IGNsYXNzPVwiY2FwdGlvbklucHV0QW5kRXJyb3JcIiAjaW50ZXJuYWxDb21wb25lbnRSZWY+XG5cdFx0PGRpdiBjbGFzcz1cImNhcHRpb25EdW1teUZvclNwYWNlQ2FsY3VsYXRpb25cIiAjY2FwdGlvbkR1bW15Rm9yU3BhY2VDYWxjdWxhdGlvbiAqbmdJZj1cImhhc1JpZ2h0T2ZDYXB0aW9uRXJyb3IoKVwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjYXB0aW9uVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntmb3JDYWxjdWxhdGlvbjogdHJ1ZX1cIj48L25nLWNvbnRhaW5lcj5cblx0XHQ8L2Rpdj5cblx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhcHRpb25UcGxcIj48L25nLWNvbnRhaW5lcj5cblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZGlyZWN0aW9uID09PSAndmVydGljYWwnICYmIGdldEVycm9yTG9jYXRpb24oKSA9PT0gJ2JlbG93Q2FwdGlvbicgJiYgIWVycm9yTWVzc2FnZUFzVG9vbHRpcFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVycm9yUmVmXCI+PC9uZy1jb250YWluZXI+XG5cdFx0PGRpdiBjbGFzcz1cImlucHV0Q29udGFpbmVyXCIgKG1vdXNlZW50ZXIpPVwic2V0RXJyb3JUb29sdGlwT2Zmc2V0KClcIj5cblx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvck1lc3NhZ2VBc1Rvb2x0aXAgJiYgc2hvdWxkU2hvd0Vycm9yTWVzc2FnZXMoKSAmJiBnZXRFcnJvclRvU2hvdygpXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJlcnJvclRvb2x0aXBUcmlhbmdsZVwiPjwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZXJyb3JUb29sdGlwVHJpYW5nbGVXaGl0ZVwiPjwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZXJyb3JUb29sdGlwXCI+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJlcnJvclJlZlwiPjwvbmctY29udGFpbmVyPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdFx0PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NhcHRpb25UcGwgbGV0LWZvckNhbGN1bGF0aW9uPVwiZm9yQ2FsY3VsYXRpb25cIj5cblx0PGRpdiBjbGFzcz1cImNhcHRpb25cIlxuXHRcdCpuZ0lmPVwiY2FwdGlvbiB8fCBjYXB0aW9uUmVmXCJcblx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHR3aXRoRXJyb3JSaWdodE9mQ2FwdGlvbjogZ2V0RXJyb3JMb2NhdGlvbigpID09PSAncmlnaHRPZkNhcHRpb24nXG5cdFx0fVwiXG5cdD5cblx0XHQ8ZGl2ICpuZ0lmPVwiY2FwdGlvblJlZlwiIGNsYXNzPVwiY2FwdGlvblJlZkNvbnRhaW5lclwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjYXB0aW9uUmVmXCI+PC9uZy1jb250YWluZXI+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiaXNSZXF1aXJlZCgpXCI+Jm5ic3A7KjwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCIhY2FwdGlvblJlZlwiIGNsYXNzPVwiY2FwdGlvblRleHRcIj57e2NhcHRpb259fTxzcGFuICpuZ0lmPVwiaXNSZXF1aXJlZCgpXCI+Jm5ic3A7Kjwvc3Bhbj48L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwicmlnaHRPZkNhcHRpb25FcnJvclwiICpuZ0lmPVwiaGFzUmlnaHRPZkNhcHRpb25FcnJvcigpXCIgW25nQ2xhc3NdPVwie2Vycm9yRnVsbHlWaXNpYmxlOiBlcnJvckZ1bGx5VmlzaWJsZX1cIj5cblx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXJyb3JSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2ZvckNhbGN1bGF0aW9uOiBmb3JDYWxjdWxhdGlvbn1cIj48L25nLWNvbnRhaW5lcj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Vycm9yUmVmIGxldC1mb3JDYWxjdWxhdGlvbj1cImZvckNhbGN1bGF0aW9uXCI+XG5cdDxkaXYgKm5nSWY9XCJzaG91bGRTaG93RXJyb3JNZXNzYWdlcygpICYmIGdldEVycm9yVG9TaG93KClcIiBjbGFzcz1cImVycm9yQ29udGFpbmVyXCIgW2VsZW1lbnRJc1RydW5jYXRlZENiXT1cImZvckNhbGN1bGF0aW9uID8gc2V0RXJyb3JNZXNzYWdlSXNUcnVuY2F0ZWQgOiBudWxsXCIgW25nQ2xhc3NdPVwie2hvcml6b250YWw6IGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnLCBoYXNDYXB0aW9uOiBjYXB0aW9uIHx8IGNhcHRpb25SZWYsICdkMzAtNzAnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJzMwLTcwJywgJ2QzNC02Nic6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzQtNjYnfVwiPlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdtaW4nKVwiPnt7c3Vic3RpdHV0ZVBhcmFtZXRlcnMoZ2V0RXJyb3JNZXNzYWdlKFwibWluXCIpLCB7bWluOiBhdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1pbi5taW59KX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ21heCcpXCI+e3tzdWJzdGl0dXRlUGFyYW1ldGVycyhnZXRFcnJvck1lc3NhZ2UoXCJtYXhcIiksIHttYXg6IGF0dGFjaGVkQ29udHJvbC5lcnJvcnMubWF4Lm1heH0pfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcigncmVxdWlyZWQnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwicmVxdWlyZWRcIil9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdlbWFpbCcpXCI+e3tnZXRFcnJvck1lc3NhZ2UoXCJlbWFpbFwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ21pbmxlbmd0aCcpXCI+e3tzdWJzdGl0dXRlUGFyYW1ldGVycyhnZXRFcnJvck1lc3NhZ2UoXCJtaW5MZW5ndGhcIiksIHttaW5MZW5ndGg6IGF0dGFjaGVkQ29udHJvbC5lcnJvcnMubWlubGVuZ3RoLnJlcXVpcmVkTGVuZ3RofSl9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdtYXhsZW5ndGgnKVwiPnt7c3Vic3RpdHV0ZVBhcmFtZXRlcnMoZ2V0RXJyb3JNZXNzYWdlKFwibWF4TGVuZ3RoXCIpLCB7bWF4TGVuZ3RoOiBhdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1heGxlbmd0aC5yZXF1aXJlZExlbmd0aH0pfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcigncGF0dGVybicpXCI+e3tnZXRFcnJvck1lc3NhZ2UoXCJwYXR0ZXJuXCIpfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignTWF0Y2hQYXNzd29yZCcpXCI+e3tnZXRFcnJvck1lc3NhZ2UoXCJtYXRjaFBhc3N3b3JkXCIpfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignZGF0ZScpXCI+e3tnZXRFcnJvck1lc3NhZ2UoXCJkYXRlXCIpfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignbWVzc2FnZScpXCI+e3thdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1lc3NhZ2UudmFsdWV9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdmb3JtTGV2ZWwnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwiZm9ybUxldmVsXCIpfX08L2Rpdj5cblx0XHQ8ZGl2IFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEN1c3RvbUVycm9ySGFuZGxlcihnZXRFcnJvclRvU2hvdygpKT8udGVtcGxhdGVSZWZcIj48L2Rpdj5cblx0PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RhaWxUcGw+XG5cdDxkaXYgY2xhc3M9XCJlcnJvclRvb2x0aXBDb250YWluZXJcIiBbbmdDbGFzc109XCJ7YWx3YXlzT3Blbjogc2hvdWxkU2hvd0Vycm9yVG9vbHRpcE9wZW5lZCgpfVwiPlxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNIb3ZlcmFibGVFcnJvclRvb2x0aXAoKSB8fCBzaG91bGRTaG93RXJyb3JUb29sdGlwT3BlbmVkKClcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJlcnJvclRvb2x0aXBUcmlhbmdsZVwiPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcFRyaWFuZ2xlV2hpdGVcIj48L2Rpdj5cblxuXHRcdFx0PGRpdiBjbGFzcz1cImFic29sdXRlQW5jaG9yXCIgI2Fic29sdXRlQW5jaG9yPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImZpeGVkQW5jaG9yXCIgI2ZpeGVkQW5jaG9yIFtvblJlbmRlckZuXT1cInNldEVycm9yVG9vbHRpcE9mZnNldFwiPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImZpeGVkV3JhcHBlclwiICNmaXhlZFdyYXBwZXI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJlcnJvclRvb2x0aXBcIiBbbmdDbGFzc109XCJ7bm9Qb2ludGVyRXZlbnRzOiAhc2hvdWxkU2hvd0Vycm9yVG9vbHRpcE9wZW5lZCgpfVwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJlcnJvclRvb2x0aXBJbm5lclwiPlxuXHRcdFx0XHRcdFx0PGkgY2xhc3M9XCJjbG9zZUJ0blwiIChjbGljayk9XCJjbG9zZVBvcHVwKCk7XCI+w5c8L2k+XG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0RXJyb3JUb1Nob3coKVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVycm9yUmVmXCI+PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWdldEVycm9yVG9TaG93KCkgJiYgc2hvdWxkU2hvd1dhcm5pbmdQb3B1cCgpXCI+XG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRXYXJuaW5nVG9TaG93SXNUZW1wbGF0ZVJlZigpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0V2FybmluZ1RvU2hvd0FzVGVtcGxhdGVSZWYoKVwiPjwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0XHQ8c3BhbiAqbmdJZj1cIiFnZXRXYXJuaW5nVG9TaG93SXNUZW1wbGF0ZVJlZigpXCI+e3tnZXRXYXJuaW5nVG9TaG93KCl9fTwvc3Bhbj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXG5cdFx0PC9uZy1jb250YWluZXI+XG5cdFx0PGtscC1mb3JtLXdhcm5pbmctaWNvbiB2YXJpYW50PVwiZmlsbFwiICpuZ0lmPVwiZ2V0RXJyb3JUb1Nob3coKVwiIChjbGljayk9XCJ0b2dnbGVQb3B1cCgpXCI+PC9rbHAtZm9ybS13YXJuaW5nLWljb24+XG5cdFx0PGtscC1mb3JtLXdhcm5pbmctaWNvbiB2YXJpYW50PVwibGluZVwiICpuZ0lmPVwiIWdldEVycm9yVG9TaG93KCkgJiYgZ2V0V2FybmluZ1RvU2hvdygpXCIgKGNsaWNrKT1cInRvZ2dsZVBvcHVwKClcIj48L2tscC1mb3JtLXdhcm5pbmctaWNvbj5cblx0PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -690,10 +690,11 @@ class FormElementComponent {
690
690
  return this.getErrorToShow() === error && !this.customErrorHandlers.some((e) => e.error === error);
691
691
  }
692
692
  getScrollableParent(node) {
693
- if (node == null) {
694
- return null;
693
+ if (node === window.document.documentElement) {
694
+ return window.document.documentElement;
695
695
  }
696
- if (node.scrollHeight > node.clientHeight) {
696
+ const overflowY = getComputedStyle(node).overflowY;
697
+ if (node.clientHeight < node.scrollHeight && (overflowY === 'auto' || overflowY === 'scroll')) {
697
698
  return node;
698
699
  }
699
700
  else {
@@ -701,10 +702,17 @@ class FormElementComponent {
701
702
  }
702
703
  }
703
704
  scrollTo() {
704
- var _a;
705
- this.internalComponentRef.nativeElement.scrollIntoView(true);
706
- // to give some breathing room, we scroll 100px more to the top
707
- (_a = this.getScrollableParent(this.internalComponentRef.nativeElement)) === null || _a === void 0 ? void 0 : _a.scrollBy(0, -100);
705
+ const parent = this.getScrollableParent(this.internalComponentRef.nativeElement);
706
+ const parentTop = parent === window.document.documentElement ? 0 : parent.getBoundingClientRect().top;
707
+ const elementTop = this.internalComponentRef.nativeElement.getBoundingClientRect().top;
708
+ const parentScrollTop = parent.scrollTop;
709
+ const answer = elementTop - parentTop + parentScrollTop;
710
+ console.log('answer', parentTop, elementTop, parentScrollTop, answer);
711
+ console.log(parent, this.internalComponentRef.nativeElement);
712
+ parent.scrollTo({
713
+ top: answer - 30,
714
+ behavior: 'smooth'
715
+ });
708
716
  }
709
717
  isRequired() {
710
718
  if (isValueSet(this.input)) {