@skyux/text-editor 8.0.0-alpha.0 → 8.0.0-alpha.10

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.
@@ -26,52 +26,6 @@ import * as i9 from "./menubar/text-editor-menubar.component";
26
26
  * The text editor component lets users format and manipulate text.
27
27
  */
28
28
  export class SkyTextEditorComponent {
29
- constructor(changeDetector, coreAdapterService, adapterService, editorService, sanitizationService, ngControl, zone, idSvc) {
30
- _SkyTextEditorComponent_instances.add(this);
31
- /**
32
- * Whether to put focus on the editor after it renders.
33
- */
34
- this.autofocus = false;
35
- this.editorFocusStream = new Subject();
36
- _SkyTextEditorComponent_defaultId.set(this, void 0);
37
- _SkyTextEditorComponent_id.set(this, void 0);
38
- _SkyTextEditorComponent_focusInitialized.set(this, false);
39
- _SkyTextEditorComponent_initialized.set(this, false);
40
- _SkyTextEditorComponent_ngUnsubscribe.set(this, new Subject());
41
- _SkyTextEditorComponent_changeDetector.set(this, void 0);
42
- _SkyTextEditorComponent_coreAdapterService.set(this, void 0);
43
- _SkyTextEditorComponent_adapterService.set(this, void 0);
44
- _SkyTextEditorComponent_editorService.set(this, void 0);
45
- _SkyTextEditorComponent_sanitizationService.set(this, void 0);
46
- _SkyTextEditorComponent_ngControl.set(this, void 0);
47
- _SkyTextEditorComponent_zone.set(this, void 0);
48
- _SkyTextEditorComponent__fontList.set(this, FONT_LIST_DEFAULTS);
49
- _SkyTextEditorComponent__fontSizeList.set(this, FONT_SIZE_LIST_DEFAULTS);
50
- _SkyTextEditorComponent__mergeFields.set(this, []);
51
- _SkyTextEditorComponent__menus.set(this, MENU_DEFAULTS);
52
- _SkyTextEditorComponent__toolbarActions.set(this, TOOLBAR_ACTION_DEFAULTS);
53
- _SkyTextEditorComponent__disabled.set(this, false);
54
- _SkyTextEditorComponent__initialStyleState.set(this, Object.assign({}, STYLE_STATE_DEFAULTS));
55
- _SkyTextEditorComponent__placeholder.set(this, '');
56
- _SkyTextEditorComponent__value.set(this, '<p></p>');
57
- /* istanbul ignore next */
58
- _SkyTextEditorComponent__onTouched.set(this, () => {
59
- // eslint-disable-next-line @typescript-eslint/no-empty-function
60
- });
61
- /* istanbul ignore next */
62
- _SkyTextEditorComponent__onChange.set(this, () => {
63
- // eslint-disable-next-line @typescript-eslint/no-empty-function
64
- });
65
- __classPrivateFieldSet(this, _SkyTextEditorComponent_changeDetector, changeDetector, "f");
66
- __classPrivateFieldSet(this, _SkyTextEditorComponent_coreAdapterService, coreAdapterService, "f");
67
- __classPrivateFieldSet(this, _SkyTextEditorComponent_adapterService, adapterService, "f");
68
- __classPrivateFieldSet(this, _SkyTextEditorComponent_editorService, editorService, "f");
69
- __classPrivateFieldSet(this, _SkyTextEditorComponent_sanitizationService, sanitizationService, "f");
70
- __classPrivateFieldSet(this, _SkyTextEditorComponent_ngControl, ngControl, "f");
71
- __classPrivateFieldSet(this, _SkyTextEditorComponent_zone, zone, "f");
72
- __classPrivateFieldSet(this, _SkyTextEditorComponent_id, __classPrivateFieldSet(this, _SkyTextEditorComponent_defaultId, idSvc.generateId(), "f"), "f");
73
- ngControl.valueAccessor = this;
74
- }
75
29
  /**
76
30
  * Whether to disable the text editor.
77
31
  * @default false
@@ -234,6 +188,52 @@ export class SkyTextEditorComponent {
234
188
  get value() {
235
189
  return __classPrivateFieldGet(this, _SkyTextEditorComponent__value, "f");
236
190
  }
191
+ constructor(changeDetector, coreAdapterService, adapterService, editorService, sanitizationService, ngControl, zone, idSvc) {
192
+ _SkyTextEditorComponent_instances.add(this);
193
+ /**
194
+ * Whether to put focus on the editor after it renders.
195
+ */
196
+ this.autofocus = false;
197
+ this.editorFocusStream = new Subject();
198
+ _SkyTextEditorComponent_defaultId.set(this, void 0);
199
+ _SkyTextEditorComponent_id.set(this, void 0);
200
+ _SkyTextEditorComponent_focusInitialized.set(this, false);
201
+ _SkyTextEditorComponent_initialized.set(this, false);
202
+ _SkyTextEditorComponent_ngUnsubscribe.set(this, new Subject());
203
+ _SkyTextEditorComponent_changeDetector.set(this, void 0);
204
+ _SkyTextEditorComponent_coreAdapterService.set(this, void 0);
205
+ _SkyTextEditorComponent_adapterService.set(this, void 0);
206
+ _SkyTextEditorComponent_editorService.set(this, void 0);
207
+ _SkyTextEditorComponent_sanitizationService.set(this, void 0);
208
+ _SkyTextEditorComponent_ngControl.set(this, void 0);
209
+ _SkyTextEditorComponent_zone.set(this, void 0);
210
+ _SkyTextEditorComponent__fontList.set(this, FONT_LIST_DEFAULTS);
211
+ _SkyTextEditorComponent__fontSizeList.set(this, FONT_SIZE_LIST_DEFAULTS);
212
+ _SkyTextEditorComponent__mergeFields.set(this, []);
213
+ _SkyTextEditorComponent__menus.set(this, MENU_DEFAULTS);
214
+ _SkyTextEditorComponent__toolbarActions.set(this, TOOLBAR_ACTION_DEFAULTS);
215
+ _SkyTextEditorComponent__disabled.set(this, false);
216
+ _SkyTextEditorComponent__initialStyleState.set(this, Object.assign({}, STYLE_STATE_DEFAULTS));
217
+ _SkyTextEditorComponent__placeholder.set(this, '');
218
+ _SkyTextEditorComponent__value.set(this, '<p></p>');
219
+ /* istanbul ignore next */
220
+ _SkyTextEditorComponent__onTouched.set(this, () => {
221
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
222
+ });
223
+ /* istanbul ignore next */
224
+ _SkyTextEditorComponent__onChange.set(this, () => {
225
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
226
+ });
227
+ __classPrivateFieldSet(this, _SkyTextEditorComponent_changeDetector, changeDetector, "f");
228
+ __classPrivateFieldSet(this, _SkyTextEditorComponent_coreAdapterService, coreAdapterService, "f");
229
+ __classPrivateFieldSet(this, _SkyTextEditorComponent_adapterService, adapterService, "f");
230
+ __classPrivateFieldSet(this, _SkyTextEditorComponent_editorService, editorService, "f");
231
+ __classPrivateFieldSet(this, _SkyTextEditorComponent_sanitizationService, sanitizationService, "f");
232
+ __classPrivateFieldSet(this, _SkyTextEditorComponent_ngControl, ngControl, "f");
233
+ __classPrivateFieldSet(this, _SkyTextEditorComponent_zone, zone, "f");
234
+ __classPrivateFieldSet(this, _SkyTextEditorComponent_id, __classPrivateFieldSet(this, _SkyTextEditorComponent_defaultId, idSvc.generateId(), "f"), "f");
235
+ ngControl.valueAccessor = this;
236
+ }
237
237
  ngAfterViewInit() {
238
238
  __classPrivateFieldGet(this, _SkyTextEditorComponent_instances, "m", _SkyTextEditorComponent_initIframe).call(this);
239
239
  }
@@ -243,7 +243,10 @@ export class SkyTextEditorComponent {
243
243
  __classPrivateFieldGet(this, _SkyTextEditorComponent_ngUnsubscribe, "f").complete();
244
244
  }
245
245
  onIframeLoad() {
246
- __classPrivateFieldGet(this, _SkyTextEditorComponent_instances, "m", _SkyTextEditorComponent_initIframe).call(this);
246
+ // Reinitialize the editor if it already exists to cover situations where the text editor might have been moved in the DOM.
247
+ if (__classPrivateFieldGet(this, _SkyTextEditorComponent_editorService, "f").isInitialized) {
248
+ __classPrivateFieldGet(this, _SkyTextEditorComponent_instances, "m", _SkyTextEditorComponent_initIframe).call(this);
249
+ }
247
250
  }
248
251
  /**
249
252
  * Implemented as part of ControlValueAccessor.
@@ -338,13 +341,13 @@ _SkyTextEditorComponent_defaultId = new WeakMap(), _SkyTextEditorComponent_id =
338
341
  __classPrivateFieldGet(this, _SkyTextEditorComponent__onChange, "f").call(this, __classPrivateFieldGet(this, _SkyTextEditorComponent__value, "f"));
339
342
  }
340
343
  };
341
- SkyTextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyTextEditorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i2.SkyTextEditorAdapterService }, { token: i3.SkyTextEditorService }, { token: i4.SkyTextSanitizationService }, { token: i5.NgControl }, { token: i0.NgZone }, { token: i1.SkyIdService }], target: i0.ɵɵFactoryTarget.Component });
342
- SkyTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SkyTextEditorComponent, selector: "sky-text-editor", inputs: { autofocus: "autofocus", disabled: "disabled", fontList: "fontList", fontSizeList: "fontSizeList", id: "id", initialStyleState: "initialStyleState", menus: "menus", mergeFields: "mergeFields", placeholder: "placeholder", toolbarActions: "toolbarActions" }, providers: [
344
+ SkyTextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyTextEditorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyCoreAdapterService }, { token: i2.SkyTextEditorAdapterService }, { token: i3.SkyTextEditorService }, { token: i4.SkyTextSanitizationService }, { token: i5.NgControl }, { token: i0.NgZone }, { token: i1.SkyIdService }], target: i0.ɵɵFactoryTarget.Component });
345
+ SkyTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: SkyTextEditorComponent, selector: "sky-text-editor", inputs: { autofocus: "autofocus", disabled: "disabled", fontList: "fontList", fontSizeList: "fontSizeList", id: "id", initialStyleState: "initialStyleState", menus: "menus", mergeFields: "mergeFields", placeholder: "placeholder", toolbarActions: "toolbarActions" }, providers: [
343
346
  SkyTextEditorService,
344
347
  SkyTextEditorSelectionService,
345
348
  SkyTextEditorAdapterService,
346
349
  ], viewQueries: [{ propertyName: "iframeRef", first: true, predicate: ["iframe"], descendants: true }], ngImport: i0, template: "<div class=\"sky-text-editor\">\n <sky-toolbar\n *ngIf=\"\n (menus && menus.length) > 0 ||\n (toolbarActions && toolbarActions.length > 0)\n \"\n class=\"sky-text-editor-toolbar\"\n >\n <sky-toolbar-section\n *ngIf=\"menus && menus.length > 0\"\n aria-label=\"Text formatting\"\n class=\"menubar\"\n role=\"toolbar\"\n >\n <sky-text-editor-menubar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [menus]=\"menus\"\n [mergeFields]=\"mergeFields\"\n >\n </sky-text-editor-menubar>\n </sky-toolbar-section>\n <sky-toolbar-section\n *ngIf=\"toolbarActions && toolbarActions.length > 0\"\n aria-label=\"Text formatting\"\n class=\"toolbar\"\n role=\"toolbar\"\n >\n <sky-text-editor-toolbar\n [disabled]=\"disabled\"\n [editorFocusStream]=\"editorFocusStream\"\n [fontList]=\"fontList\"\n [fontSizeList]=\"fontSizeList\"\n [toolbarActions]=\"toolbarActions\"\n [styleState]=\"initialStyleState\"\n >\n </sky-text-editor-toolbar>\n </sky-toolbar-section>\n </sky-toolbar>\n <iframe\n class=\"sky-text-editor-wrapper\"\n src=\"about:blank\"\n title=\"Text Editor\"\n [ngClass]=\"{\n 'sky-text-editor-wrapper-disabled': disabled\n }\"\n (load)=\"onIframeLoad()\"\n #iframe\n >\n </iframe>\n</div>\n", styles: [".sky-text-editor .sky-text-editor-wrapper{display:flex;flex-wrap:wrap;background-color:#fff;width:100%;height:300px;padding:1rem;font-size:1.2rem;border:1px solid #c0c0c0;overflow-y:auto;outline:none}.sky-text-editor .sky-text-editor-wrapper.sky-text-editor-wrapper-disabled{background-color:#ededee}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:1px solid #cdcfd2!important;border-right:1px solid #cdcfd2!important}.sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 10px 0}.sky-text-editor .sky-text-editor-toolbar .sky-dropdown-button{border:none}.sky-text-editor .sky-text-editor-toolbar sky-text-editor-menubar,.sky-text-editor .sky-text-editor-toolbar sky-text-editor-toolbar{display:flex;flex-wrap:wrap}.sky-theme-modern .sky-text-editor .sky-text-editor-wrapper{border:1px solid #d2d2d2}.sky-theme-modern .sky-text-editor .sky-text-editor-wrapper.sky-text-editor-wrapper-disabled{background-color:#ececed}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar{padding:10px 10px 0}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-section{padding:10px!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-top:1px solid #d2d2d2!important;border-left:1px solid #d2d2d2!important;border-right:1px solid #d2d2d2!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 0 0!important}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.λ37, selector: "sky-toolbar" }, { kind: "component", type: i7.λ38, selector: "sky-toolbar-section" }, { kind: "component", type: i8.SkyTextEditorToolbarComponent, selector: "sky-text-editor-toolbar", inputs: ["editorFocusStream", "fontList", "fontSizeList", "toolbarActions", "styleState", "disabled"] }, { kind: "component", type: i9.SkyTextEditorMenubarComponent, selector: "sky-text-editor-menubar", inputs: ["editorFocusStream", "menus", "mergeFields", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
347
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyTextEditorComponent, decorators: [{
350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyTextEditorComponent, decorators: [{
348
351
  type: Component,
349
352
  args: [{ selector: 'sky-text-editor', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
350
353
  SkyTextEditorService,
@@ -375,4 +378,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
375
378
  type: ViewChild,
376
379
  args: ['iframe']
377
380
  }] } });
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsS0FBSyxFQUdMLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFR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c0JBQXNCLG9UQU50QjtRQUNULG9CQUFvQjtRQUNwQiw2QkFBNkI7UUFDN0IsMkJBQTJCO0tBQzVCLCtIQ2hESCxpNUNBbURBOzJGRERhLHNCQUFzQjtrQkFabEMsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDVCxvQkFBb0I7d0JBQ3BCLDZCQUE2Qjt3QkFDN0IsMkJBQTJCO3FCQUM1QjswVUFPTSxTQUFTO3NCQURmLEtBQUs7Z0JBUUssUUFBUTtzQkFEbEIsS0FBSztnQkEyQ0ssUUFBUTtzQkFEbEIsS0FBSztnQkFjSyxZQUFZO3NCQUR0QixLQUFLO2dCQWNLLEVBQUU7c0JBRFosS0FBSztnQkFhSyxpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBcUJLLEtBQUs7c0JBRGYsS0FBSztnQkFhSyxXQUFXO3NCQURyQixLQUFLO2dCQWFLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBb0JLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBWUMsU0FBUztzQkFEZixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUNvcmVBZGFwdGVyU2VydmljZSwgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZvcm1zVXRpbGl0eSB9IGZyb20gJy4uL3NoYXJlZC9mb3Jtcy11dGlsaXR5JztcblxuaW1wb3J0IHsgRk9OVF9MSVNUX0RFRkFVTFRTIH0gZnJvbSAnLi9kZWZhdWx0cy9mb250LWxpc3QtZGVmYXVsdHMnO1xuaW1wb3J0IHsgRk9OVF9TSVpFX0xJU1RfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL2ZvbnQtc2l6ZS1saXN0LWRlZmF1bHRzJztcbmltcG9ydCB7IE1FTlVfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL21lbnUtZGVmYXVsdHMnO1xuaW1wb3J0IHsgU1RZTEVfU1RBVEVfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL3N0eWxlLXN0YXRlLWRlZmF1bHRzJztcbmltcG9ydCB7IFRPT0xCQVJfQUNUSU9OX0RFRkFVTFRTIH0gZnJvbSAnLi9kZWZhdWx0cy90b29sYmFyLWFjdGlvbi1kZWZhdWx0cyc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RleHQtZWRpdG9yLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1lZGl0b3Itc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RleHQtZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RleHQtc2FuaXRpemF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvckZvbnQgfSBmcm9tICcuL3R5cGVzL2ZvbnQtc3RhdGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lbnVUeXBlIH0gZnJvbSAnLi90eXBlcy9tZW51LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvclN0eWxlU3RhdGUgfSBmcm9tICcuL3R5cGVzL3N0eWxlLXN0YXRlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkIH0gZnJvbSAnLi90eXBlcy90ZXh0LWVkaXRvci1tZXJnZS1maWVsZCc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzL3Rvb2xiYXItYWN0aW9uLXR5cGUnO1xuXG4vKipcbiAqIFRoZSB0ZXh0IGVkaXRvciBjb21wb25lbnQgbGV0cyB1c2VycyBmb3JtYXQgYW5kIG1hbmlwdWxhdGUgdGV4dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVRleHRFZGl0b3JTZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHB1dCBmb2N1cyBvbiB0aGUgZWRpdG9yIGFmdGVyIGl0IHJlbmRlcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2ZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGV4dCBlZGl0b3IuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0gU2t5Rm9ybXNVdGlsaXR5LmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKGNvZXJjZWRWYWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jX2Rpc2FibGVkID0gY29lcmNlZFZhbHVlO1xuXG4gICAgICAvLyBVcGRhdGUgZm9jdXNhYmxlQ2hpbGRyZW4gaW5zaWRlIHRoZSBpZnJhbWUuXG4gICAgICBsZXQgZm9jdXNhYmxlQ2hpbGRyZW46IEhUTUxFbGVtZW50W107XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRoaXMuaWZyYW1lUmVmKSB7XG4gICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuID0gdGhpcy4jY29yZUFkYXB0ZXJTZXJ2aWNlLmdldEZvY3VzYWJsZUNoaWxkcmVuKFxuICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHksXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWdub3JlVmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZVRhYkluZGV4OiB0cnVlLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy4jX2Rpc2FibGVkKSB7XG4gICAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZGlzYWJsZUVkaXRvcihcbiAgICAgICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuLFxuICAgICAgICAgICAgdGhpcy5pZnJhbWVSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZW5hYmxlRWRpdG9yKFxuICAgICAgICAgICAgZm9jdXNhYmxlQ2hpbGRyZW4sXG4gICAgICAgICAgICB0aGlzLmlmcmFtZVJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZvbnRzIHRvIGluY2x1ZGUgaW4gdGhlIGZvbnQgcGlja2VyLlxuICAgKiBAZGVmYXVsdCBbe25hbWU6ICdCbGFja2JhdWQgU2FucycsIHZhbHVlOiAnXCJCbGFja2JhdWQgU2Fuc1wiLCBBcmlhbCwgc2Fucy1zZXJpZid9LCB7bmFtZTogJ0FyaWFsJywgdmFsdWU6ICdBcmlhbCd9LCB7bmFtZTogJ0FyaWFsIEJsYWNrJywgdmFsdWU6ICdcIkFyaWFsIEJsYWNrXCInfSwge25hbWU6ICdDb3VyaWVyIE5ldycsIHZhbHVlOiAnXCJDb3VyaWVyIE5ld1wiJ30sIHtuYW1lOiAnR2VvcmdpYScsIHZhbHVlOiAnR2VvcmdpYSwgc2VyaWYnfSwge25hbWU6ICdUYWhvbWEnLCB2YWx1ZTogJ1RhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmJ30sIHtuYW1lOiAnVGltZXMgTmV3IFJvbWFuJywgdmFsdWU6ICdcIlRpbWVzIE5ldyBSb21hblwiJ30sIHtuYW1lOiAnVHJlYnVjaGV0IE1TJywgdmFsdWU6ICdcIlRyZWJ1Y2hldCBNU1wiLCBzYW5zLXNlcmlmJ30sIHtuYW1lOiAnVmVyZGFuYScsIHZhbHVlOiAnVmVyZGFuYSwgR2VuZXZhLCBzYW5zLXNlcmlmJ31dXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZvbnRMaXN0KHZhbHVlOiBTa3lUZXh0RWRpdG9yRm9udFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2ZvbnRMaXN0ID0gdmFsdWUgfHwgRk9OVF9MSVNUX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBmb250TGlzdCgpOiBTa3lUZXh0RWRpdG9yRm9udFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2ZvbnRMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb250IHNpemVzIHRvIGluY2x1ZGUgaW4gdGhlIGZvbnQgc2l6ZSBwaWNrZXIuXG4gICAqIEBkZWZhdWx0IFs2LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTgsIDIwLCAyMiwgMjQsIDI2LCAyOCwgMzYsIDQ4XVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmb250U2l6ZUxpc3QodmFsdWU6IG51bWJlcltdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2ZvbnRTaXplTGlzdCA9IHZhbHVlIHx8IEZPTlRfU0laRV9MSVNUX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBmb250U2l6ZUxpc3QoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLiNfZm9udFNpemVMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgSUQgYXR0cmlidXRlIGZvciB0aGUgdGV4dCBlZGl0b3IuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb21wb25lbnQgZ2VuZXJhdGVzIGEgcmFuZG9tIElELlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpZCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jaWQgPSB2YWx1ZSB8fCB0aGlzLiNkZWZhdWx0SWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2lkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHN0eWxlcyBmb3IgYWxsIGNvbnRlbnQsIGluY2x1ZGluZyBiYWNrZ3JvdW5kIGNvbG9yLCBmb250IHNpemUsIGFuZCBsaW5rIHN0YXRlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbml0aWFsU3R5bGVTdGF0ZShzdGF0ZTogU2t5VGV4dEVkaXRvclN0eWxlU3RhdGUgfCB1bmRlZmluZWQpIHtcbiAgICAvLyBEbyBub3QgdXBkYXRlIHRoZSBzdGF0ZSBhZnRlciBpbml0aWFsaXphdGlvbiBoYXMgdGFrZW4gcGxhY2VcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy4jaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI19pbml0aWFsU3R5bGVTdGF0ZSA9IHtcbiAgICAgICAgLi4uU1RZTEVfU1RBVEVfREVGQVVMVFMsXG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluaXRpYWxTdHlsZVN0YXRlKCk6IFNreVRleHRFZGl0b3JTdHlsZVN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy4jX2luaXRpYWxTdHlsZVN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZW51cyB0byBpbmNsdWRlIGluIHRoZSBtZW51IGJhci5cbiAgICogQGRlZmF1bHQgWyAnZWRpdCcsICdmb3JtYXQnIF1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWVudXModmFsdWU6IFNreVRleHRFZGl0b3JNZW51VHlwZVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX21lbnVzID0gdmFsdWUgfHwgTUVOVV9ERUZBVUxUUztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVudXMoKTogU2t5VGV4dEVkaXRvck1lbnVUeXBlW10ge1xuICAgIHJldHVybiB0aGlzLiNfbWVudXM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1lcmdlIGZpZWxkcyB0byBpbmNsdWRlIGluIHRoZSBtZXJnZSBmaWVsZCBtZW51LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtZXJnZUZpZWxkcyh2YWx1ZTogU2t5VGV4dEVkaXRvck1lcmdlRmllbGRbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tZXJnZUZpZWxkcyA9IHZhbHVlIHx8IFtdO1xuICB9XG5cbiAgcHVibGljIGdldCBtZXJnZUZpZWxkcygpOiBTa3lUZXh0RWRpdG9yTWVyZ2VGaWVsZFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX21lcmdlRmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgdG8gZGlzcGxheSB3aGVuIHRoZSB0ZXh0IGVudHJ5IGFyZWEgaXMgZW1wdHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX3BsYWNlaG9sZGVyKSB7XG4gICAgICB0aGlzLiNfcGxhY2Vob2xkZXIgPSB2YWx1ZSB8fCAnJztcbiAgICAgIGlmICh0aGlzLiNpbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfcGxhY2Vob2xkZXI7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFjdGlvbnMgdG8gaW5jbHVkZSBpbiB0aGUgdG9vbGJhciBhbmQgZGV0ZXJtaW5lcyB0aGVpciBvcmRlci5cbiAgICogQGRlZmF1bHQgWyAnZm9udC1mYW1pbHknLCAnZm9udC1zaXplJywgJ2ZvbnQtc3R5bGUnLCAnY29sb3InLCAnbGlzdCcsICdsaW5rIF1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdG9vbGJhckFjdGlvbnMoXG4gICAgdmFsdWU6IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZVtdIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHRoaXMuI190b29sYmFyQWN0aW9ucyA9IHZhbHVlIHx8IFRPT0xCQVJfQUNUSU9OX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCB0b29sYmFyQWN0aW9ucygpOiBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuI190b29sYmFyQWN0aW9ucztcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2lmcmFtZScpXG4gIHB1YmxpYyBpZnJhbWVSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5hbCB2YWx1ZSBvZiB0aGUgY29udHJvbC5cbiAgICovXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIC8vIE5vcm1hbGl6ZSB2YWx1ZSBhbmQgc2V0IGFueSBlbXB0eSBzdGF0ZSB0byBhbiBlbXB0eSBzdHJpbmcuXG4gICAgbGV0IG5vcm1hbGl6ZWRWYWx1ZTogc3RyaW5nO1xuICAgIGNvbnN0IHZhbHVlVHJpbW1lZCA9IHZhbHVlPy50cmltKCk7XG5cbiAgICBpZiAoXG4gICAgICAhdmFsdWUgfHxcbiAgICAgIHZhbHVlVHJpbW1lZCA9PT0gJzxwPjwvcD4nIHx8XG4gICAgICB2YWx1ZVRyaW1tZWQgPT09ICc8YnI+JyB8fFxuICAgICAgdmFsdWVUcmltbWVkID09PSAnPHA+PGJyPjwvcD4nXG4gICAgKSB7XG4gICAgICBub3JtYWxpemVkVmFsdWUgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgbm9ybWFsaXplZFZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplZFZhbHVlID0gdGhpcy4jc2FuaXRpemF0aW9uU2VydmljZVxuICAgICAgLnNhbml0aXplKG5vcm1hbGl6ZWRWYWx1ZSlcbiAgICAgIC50cmltKCk7XG5cbiAgICBpZiAodGhpcy4jX3ZhbHVlICE9PSBub3JtYWxpemVkVmFsdWUpIHtcbiAgICAgIHRoaXMuI192YWx1ZSA9IG5vcm1hbGl6ZWRWYWx1ZTtcblxuICAgICAgLy8gVXBkYXRlIGFuZ3VsYXIgZm9ybSBjb250cm9sIGlmIG1vZGVsIGhhcyBiZWVuIG5vcm1hbGl6ZWQuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLiNuZ0NvbnRyb2w/LmNvbnRyb2wgJiZcbiAgICAgICAgbm9ybWFsaXplZFZhbHVlICE9PSB0aGlzLiNuZ0NvbnRyb2wuY29udHJvbC52YWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuI25nQ29udHJvbC5jb250cm9sLnNldFZhbHVlKG5vcm1hbGl6ZWRWYWx1ZSwge1xuICAgICAgICAgIGVtaXRNb2RlbFRvVmlld0NoYW5nZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBBdXRvZm9jdXMgaXNuJ3QgdGVzdGFibGUgaW4gRmlyZWZveCBhbmQgSUUuXG4gICAgICAvLyBEb24ndCBzZXQgZm9jdXMgb24gdGhlIGVkaXRvciBub3cgaWYgdGhlIGlmcmFtZSBpc24ndCBpbml0aWFsaXplZC5cbiAgICAgIC8vICNpbml0SWZyYW1lKCkgd2lsbCBkbyBhbm90aGVyIGNoZWNrIGxhdGVyIHRvIHNlZSBpZiB0aGUgZWRpdG9yIHNob3VsZFxuICAgICAgLy8gcmVjZWl2ZSBmb2N1cy5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBpZiAodGhpcy5hdXRvZm9jdXMgJiYgdGhpcy4jaW5pdGlhbGl6ZWQgJiYgIXRoaXMuI2ZvY3VzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNFZGl0b3IoKTtcbiAgICAgICAgdGhpcy4jZm9jdXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZWRpdG9yRm9jdXNTdHJlYW0gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNkZWZhdWx0SWQ6IHN0cmluZztcbiAgI2lkOiBzdHJpbmc7XG4gICNmb2N1c0luaXRpYWxpemVkID0gZmFsc2U7XG4gICNpbml0aWFsaXplZCA9IGZhbHNlO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNjb3JlQWRhcHRlclNlcnZpY2U6IFNreUNvcmVBZGFwdGVyU2VydmljZTtcbiAgI2FkYXB0ZXJTZXJ2aWNlOiBTa3lUZXh0RWRpdG9yQWRhcHRlclNlcnZpY2U7XG4gICNlZGl0b3JTZXJ2aWNlOiBTa3lUZXh0RWRpdG9yU2VydmljZTtcbiAgI3Nhbml0aXphdGlvblNlcnZpY2U6IFNreVRleHRTYW5pdGl6YXRpb25TZXJ2aWNlO1xuICAjbmdDb250cm9sOiBOZ0NvbnRyb2w7XG4gICN6b25lOiBOZ1pvbmU7XG5cbiAgI19mb250TGlzdCA9IEZPTlRfTElTVF9ERUZBVUxUUztcbiAgI19mb250U2l6ZUxpc3QgPSBGT05UX1NJWkVfTElTVF9ERUZBVUxUUztcbiAgI19tZXJnZUZpZWxkczogU2t5VGV4dEVkaXRvck1lcmdlRmllbGRbXSA9IFtdO1xuICAjX21lbnVzID0gTUVOVV9ERUZBVUxUUztcbiAgI190b29sYmFyQWN0aW9uczogU2t5VGV4dEVkaXRvclRvb2xiYXJBY3Rpb25UeXBlW10gPSBUT09MQkFSX0FDVElPTl9ERUZBVUxUUztcbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuICAjX2luaXRpYWxTdHlsZVN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgU1RZTEVfU1RBVEVfREVGQVVMVFMpO1xuICAjX3BsYWNlaG9sZGVyID0gJyc7XG4gICNfdmFsdWUgPSAnPHA+PC9wPic7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIGNvcmVBZGFwdGVyU2VydmljZTogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIGFkYXB0ZXJTZXJ2aWNlOiBTa3lUZXh0RWRpdG9yQWRhcHRlclNlcnZpY2UsXG4gICAgZWRpdG9yU2VydmljZTogU2t5VGV4dEVkaXRvclNlcnZpY2UsXG4gICAgc2FuaXRpemF0aW9uU2VydmljZTogU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2UsXG4gICAgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgem9uZTogTmdab25lLFxuICAgIGlkU3ZjOiBTa3lJZFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNjb3JlQWRhcHRlclNlcnZpY2UgPSBjb3JlQWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UgPSBhZGFwdGVyU2VydmljZTtcbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlID0gZWRpdG9yU2VydmljZTtcbiAgICB0aGlzLiNzYW5pdGl6YXRpb25TZXJ2aWNlID0gc2FuaXRpemF0aW9uU2VydmljZTtcbiAgICB0aGlzLiNuZ0NvbnRyb2wgPSBuZ0NvbnRyb2w7XG4gICAgdGhpcy4jem9uZSA9IHpvbmU7XG5cbiAgICB0aGlzLiNpZCA9IHRoaXMuI2RlZmF1bHRJZCA9IGlkU3ZjLmdlbmVyYXRlSWQoKTtcblxuICAgIG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jaW5pdElmcmFtZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnJlbW92ZU9ic2VydmVycyh0aGlzLiNlZGl0b3JTZXJ2aWNlLmVkaXRvcik7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG9uSWZyYW1lTG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLiNpbml0SWZyYW1lKCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAvLyBVcGRhdGUgSFRNTCBpZiBuZWNlc3NhcnkuXG4gICAgaWYgKHRoaXMuI2luaXRpYWxpemVkKSB7XG4gICAgICBjb25zdCBlZGl0b3JWYWx1ZSA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldEVkaXRvcklubmVySHRtbCgpO1xuICAgICAgaWYgKGVkaXRvclZhbHVlICE9PSB0aGlzLiNfdmFsdWUpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0RWRpdG9ySW5uZXJIdG1sKHRoaXMuI192YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAjdXBkYXRlU3R5bGUoKTogdm9pZCB7XG4gICAgdGhpcy4jX2luaXRpYWxTdHlsZVN0YXRlID0ge1xuICAgICAgLi4udGhpcy4jX2luaXRpYWxTdHlsZVN0YXRlLFxuICAgICAgLi4udGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0U3R5bGVTdGF0ZSgpLFxuICAgIH07XG4gIH1cblxuICAjaW5pdElmcmFtZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5pbml0RWRpdG9yKFxuICAgICAgdGhpcy5pZCxcbiAgICAgICh0aGlzLmlmcmFtZVJlZiBhcyBFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5pbml0aWFsU3R5bGVTdGF0ZSxcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJcbiAgICApO1xuXG4gICAgdGhpcy4jZWRpdG9yU2VydmljZVxuICAgICAgLmlucHV0TGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBydW4gY2hhbmdlIGRldGVjdGlvbiBmb3IgY2hhbmdlcyBvcmlnaW5hdGluZyBpbnNpZGUgYW4gaWZyYW1lLFxuICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIGNhbGwgdGhlIG9uQ2hhbmdlKCkgZXZlbnQgaW5zaWRlIE5nWm9uZSB0byBmb3JjZSBjaGFuZ2UgcHJvcGFnYXRpb24gdG8gY29uc3VtaW5nIGNvbXBvbmVudHMuXG4gICAgICAgIHRoaXMuI3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiN2aWV3VG9Nb2RlbFVwZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZWRpdG9yU2VydmljZVxuICAgICAgLnNlbGVjdGlvbkNoYW5nZUxpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiN1cGRhdGVTdHlsZSgpO1xuICAgICAgICB0aGlzLmVkaXRvckZvY3VzU3RyZWFtLm5leHQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZWRpdG9yU2VydmljZVxuICAgICAgLmNsaWNrTGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZWRpdG9yRm9jdXNTdHJlYW0ubmV4dCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuYmx1ckxpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBBbmd1bGFyIGRvZXNuJ3QgcnVuIGNoYW5nZSBkZXRlY3Rpb24gZm9yIGNoYW5nZXMgb3JpZ2luYXRpbmcgaW5zaWRlIGFuIGlmcmFtZSxcbiAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBydW4gbWFya0ZvckNoZWNrKCkgaW5zaWRlIHRoZSBOZ1pvbmUgdG8gZm9yY2UgY2hhbmdlIHByb3BhZ2F0aW9uIHRvIGNvbnN1bWluZyBjb21wb25lbnRzLlxuICAgICAgICB0aGlzLiN6b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jX29uVG91Y2hlZCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZWRpdG9yU2VydmljZVxuICAgICAgLmNvbW1hbmRDaGFuZ2VMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jdXBkYXRlU3R5bGUoKTtcbiAgICAgICAgdGhpcy4jdmlld1RvTW9kZWxVcGRhdGUoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0RWRpdG9ySW5uZXJIdG1sKHRoaXMuI192YWx1ZSk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLmF1dG9mb2N1cykge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNFZGl0b3IoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNpbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICAjdmlld1RvTW9kZWxVcGRhdGUoZW1pdENoYW5nZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0RWRpdG9ySW5uZXJIdG1sKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZW1pdENoYW5nZSkge1xuICAgICAgdGhpcy4jX29uQ2hhbmdlKHRoaXMuI192YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgI19vblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICB9O1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICNfb25DaGFuZ2U6IChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHZhbHVlOiBhbnlcbiAgKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3JcIj5cbiAgPHNreS10b29sYmFyXG4gICAgKm5nSWY9XCJcbiAgICAgIChtZW51cyAmJiBtZW51cy5sZW5ndGgpID4gMCB8fFxuICAgICAgKHRvb2xiYXJBY3Rpb25zICYmIHRvb2xiYXJBY3Rpb25zLmxlbmd0aCA+IDApXG4gICAgXCJcbiAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci10b29sYmFyXCJcbiAgPlxuICAgIDxza3ktdG9vbGJhci1zZWN0aW9uXG4gICAgICAqbmdJZj1cIm1lbnVzICYmIG1lbnVzLmxlbmd0aCA+IDBcIlxuICAgICAgYXJpYS1sYWJlbD1cIlRleHQgZm9ybWF0dGluZ1wiXG4gICAgICBjbGFzcz1cIm1lbnViYXJcIlxuICAgICAgcm9sZT1cInRvb2xiYXJcIlxuICAgID5cbiAgICAgIDxza3ktdGV4dC1lZGl0b3ItbWVudWJhclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbZWRpdG9yRm9jdXNTdHJlYW1dPVwiZWRpdG9yRm9jdXNTdHJlYW1cIlxuICAgICAgICBbbWVudXNdPVwibWVudXNcIlxuICAgICAgICBbbWVyZ2VGaWVsZHNdPVwibWVyZ2VGaWVsZHNcIlxuICAgICAgPlxuICAgICAgPC9za3ktdGV4dC1lZGl0b3ItbWVudWJhcj5cbiAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gICAgPHNreS10b29sYmFyLXNlY3Rpb25cbiAgICAgICpuZ0lmPVwidG9vbGJhckFjdGlvbnMgJiYgdG9vbGJhckFjdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICBhcmlhLWxhYmVsPVwiVGV4dCBmb3JtYXR0aW5nXCJcbiAgICAgIGNsYXNzPVwidG9vbGJhclwiXG4gICAgICByb2xlPVwidG9vbGJhclwiXG4gICAgPlxuICAgICAgPHNreS10ZXh0LWVkaXRvci10b29sYmFyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtlZGl0b3JGb2N1c1N0cmVhbV09XCJlZGl0b3JGb2N1c1N0cmVhbVwiXG4gICAgICAgIFtmb250TGlzdF09XCJmb250TGlzdFwiXG4gICAgICAgIFtmb250U2l6ZUxpc3RdPVwiZm9udFNpemVMaXN0XCJcbiAgICAgICAgW3Rvb2xiYXJBY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCJcbiAgICAgICAgW3N0eWxlU3RhdGVdPVwiaW5pdGlhbFN0eWxlU3RhdGVcIlxuICAgICAgPlxuICAgICAgPC9za3ktdGV4dC1lZGl0b3ItdG9vbGJhcj5cbiAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gIDwvc2t5LXRvb2xiYXI+XG4gIDxpZnJhbWVcbiAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci13cmFwcGVyXCJcbiAgICBzcmM9XCJhYm91dDpibGFua1wiXG4gICAgdGl0bGU9XCJUZXh0IEVkaXRvclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS10ZXh0LWVkaXRvci13cmFwcGVyLWRpc2FibGVkJzogZGlzYWJsZWRcbiAgICB9XCJcbiAgICAobG9hZCk9XCJvbklmcmFtZUxvYWQoKVwiXG4gICAgI2lmcmFtZVxuICA+XG4gIDwvaWZyYW1lPlxuPC9kaXY+XG4iXX0=
381
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsS0FBSyxFQUdMLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFR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LElBQUksc0NBQVEsQ0FBQyxDQUFDO0tBQy9CO0FBQ0gsQ0FBQzttSEEvWVUsc0JBQXNCO3VHQUF0QixzQkFBc0Isb1RBTnRCO1FBQ1Qsb0JBQW9CO1FBQ3BCLDZCQUE2QjtRQUM3QiwyQkFBMkI7S0FDNUIsK0hDaERILGk1Q0FtREE7MkZERGEsc0JBQXNCO2tCQVpsQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNULG9CQUFvQjt3QkFDcEIsNkJBQTZCO3dCQUM3QiwyQkFBMkI7cUJBQzVCOzBVQU9NLFNBQVM7c0JBRGYsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQTJDSyxRQUFRO3NCQURsQixLQUFLO2dCQWNLLFlBQVk7c0JBRHRCLEtBQUs7Z0JBY0ssRUFBRTtzQkFEWixLQUFLO2dCQWFLLGlCQUFpQjtzQkFEM0IsS0FBSztnQkFxQkssS0FBSztzQkFEZixLQUFLO2dCQWFLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBYUssV0FBVztzQkFEckIsS0FBSztnQkFvQkssY0FBYztzQkFEeEIsS0FBSztnQkFZQyxTQUFTO3NCQURmLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlLCBTa3lJZFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5Rm9ybXNVdGlsaXR5IH0gZnJvbSAnLi4vc2hhcmVkL2Zvcm1zLXV0aWxpdHknO1xuXG5pbXBvcnQgeyBGT05UX0xJU1RfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL2ZvbnQtbGlzdC1kZWZhdWx0cyc7XG5pbXBvcnQgeyBGT05UX1NJWkVfTElTVF9ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvZm9udC1zaXplLWxpc3QtZGVmYXVsdHMnO1xuaW1wb3J0IHsgTUVOVV9ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvbWVudS1kZWZhdWx0cyc7XG5pbXBvcnQgeyBTVFlMRV9TVEFURV9ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvc3R5bGUtc3RhdGUtZGVmYXVsdHMnO1xuaW1wb3J0IHsgVE9PTEJBUl9BQ1RJT05fREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL3Rvb2xiYXItYWN0aW9uLWRlZmF1bHRzJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1lZGl0b3ItYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90ZXh0LWVkaXRvci1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0U2FuaXRpemF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1zYW5pdGl6YXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yRm9udCB9IGZyb20gJy4vdHlwZXMvZm9udC1zdGF0ZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yTWVudVR5cGUgfSBmcm9tICcuL3R5cGVzL21lbnUtdHlwZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yU3R5bGVTdGF0ZSB9IGZyb20gJy4vdHlwZXMvc3R5bGUtc3RhdGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lcmdlRmllbGQgfSBmcm9tICcuL3R5cGVzL3RleHQtZWRpdG9yLW1lcmdlLWZpZWxkJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZSB9IGZyb20gJy4vdHlwZXMvdG9vbGJhci1hY3Rpb24tdHlwZSc7XG5cbi8qKlxuICogVGhlIHRleHQgZWRpdG9yIGNvbXBvbmVudCBsZXRzIHVzZXJzIGZvcm1hdCBhbmQgbWFuaXB1bGF0ZSB0ZXh0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdGV4dC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5VGV4dEVkaXRvclNlcnZpY2UsXG4gICAgU2t5VGV4dEVkaXRvclNlbGVjdGlvblNlcnZpY2UsXG4gICAgU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUZXh0RWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHV0IGZvY3VzIG9uIHRoZSBlZGl0b3IgYWZ0ZXIgaXQgcmVuZGVycy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSB0ZXh0IGVkaXRvci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBTa3lGb3Jtc1V0aWxpdHkuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICBpZiAoY29lcmNlZFZhbHVlICE9PSB0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLiNfZGlzYWJsZWQgPSBjb2VyY2VkVmFsdWU7XG5cbiAgICAgIC8vIFVwZGF0ZSBmb2N1c2FibGVDaGlsZHJlbiBpbnNpZGUgdGhlIGlmcmFtZS5cbiAgICAgIGxldCBmb2N1c2FibGVDaGlsZHJlbjogSFRNTEVsZW1lbnRbXTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAodGhpcy5pZnJhbWVSZWYpIHtcbiAgICAgICAgZm9jdXNhYmxlQ2hpbGRyZW4gPSB0aGlzLiNjb3JlQWRhcHRlclNlcnZpY2UuZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4oXG4gICAgICAgICAgdGhpcy5pZnJhbWVSZWYubmF0aXZlRWxlbWVudC5jb250ZW50RG9jdW1lbnQuYm9keSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZ25vcmVWaXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICAgICAgaWdub3JlVGFiSW5kZXg6IHRydWUsXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLiNfZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5kaXNhYmxlRWRpdG9yKFxuICAgICAgICAgICAgZm9jdXNhYmxlQ2hpbGRyZW4sXG4gICAgICAgICAgICB0aGlzLmlmcmFtZVJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5lbmFibGVFZGl0b3IoXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbixcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9udHMgdG8gaW5jbHVkZSBpbiB0aGUgZm9udCBwaWNrZXIuXG4gICAqIEBkZWZhdWx0IFt7bmFtZTogJ0JsYWNrYmF1ZCBTYW5zJywgdmFsdWU6ICdcIkJsYWNrYmF1ZCBTYW5zXCIsIEFyaWFsLCBzYW5zLXNlcmlmJ30sIHtuYW1lOiAnQXJpYWwnLCB2YWx1ZTogJ0FyaWFsJ30sIHtuYW1lOiAnQXJpYWwgQmxhY2snLCB2YWx1ZTogJ1wiQXJpYWwgQmxhY2tcIid9LCB7bmFtZTogJ0NvdXJpZXIgTmV3JywgdmFsdWU6ICdcIkNvdXJpZXIgTmV3XCInfSwge25hbWU6ICdHZW9yZ2lhJywgdmFsdWU6ICdHZW9yZ2lhLCBzZXJpZid9LCB7bmFtZTogJ1RhaG9tYScsIHZhbHVlOiAnVGFob21hLCBHZW5ldmEsIHNhbnMtc2VyaWYnfSwge25hbWU6ICdUaW1lcyBOZXcgUm9tYW4nLCB2YWx1ZTogJ1wiVGltZXMgTmV3IFJvbWFuXCInfSwge25hbWU6ICdUcmVidWNoZXQgTVMnLCB2YWx1ZTogJ1wiVHJlYnVjaGV0IE1TXCIsIHNhbnMtc2VyaWYnfSwge25hbWU6ICdWZXJkYW5hJywgdmFsdWU6ICdWZXJkYW5hLCBHZW5ldmEsIHNhbnMtc2VyaWYnfV1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZm9udExpc3QodmFsdWU6IFNreVRleHRFZGl0b3JGb250W10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZm9udExpc3QgPSB2YWx1ZSB8fCBGT05UX0xJU1RfREVGQVVMVFM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvbnRMaXN0KCk6IFNreVRleHRFZGl0b3JGb250W10ge1xuICAgIHJldHVybiB0aGlzLiNfZm9udExpc3Q7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZvbnQgc2l6ZXMgdG8gaW5jbHVkZSBpbiB0aGUgZm9udCBzaXplIHBpY2tlci5cbiAgICogQGRlZmF1bHQgWzYsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxOCwgMjAsIDIyLCAyNCwgMjYsIDI4LCAzNiwgNDhdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZvbnRTaXplTGlzdCh2YWx1ZTogbnVtYmVyW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfZm9udFNpemVMaXN0ID0gdmFsdWUgfHwgRk9OVF9TSVpFX0xJU1RfREVGQVVMVFM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZvbnRTaXplTGlzdCgpOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19mb250U2l6ZUxpc3Q7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBJRCBhdHRyaWJ1dGUgZm9yIHRoZSB0ZXh0IGVkaXRvci5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbXBvbmVudCBnZW5lcmF0ZXMgYSByYW5kb20gSUQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNpZCA9IHZhbHVlIHx8IHRoaXMuI2RlZmF1bHRJZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jaWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGluaXRpYWwgc3R5bGVzIGZvciBhbGwgY29udGVudCwgaW5jbHVkaW5nIGJhY2tncm91bmQgY29sb3IsIGZvbnQgc2l6ZSwgYW5kIGxpbmsgc3RhdGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGluaXRpYWxTdHlsZVN0YXRlKHN0YXRlOiBTa3lUZXh0RWRpdG9yU3R5bGVTdGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIC8vIERvIG5vdCB1cGRhdGUgdGhlIHN0YXRlIGFmdGVyIGluaXRpYWxpemF0aW9uIGhhcyB0YWtlbiBwbGFjZVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKCF0aGlzLiNpbml0aWFsaXplZCkge1xuICAgICAgdGhpcy4jX2luaXRpYWxTdHlsZVN0YXRlID0ge1xuICAgICAgICAuLi5TVFlMRV9TVEFURV9ERUZBVUxUUyxcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5pdGlhbFN0eWxlU3RhdGUoKTogU2t5VGV4dEVkaXRvclN0eWxlU3RhdGUge1xuICAgIHJldHVybiB0aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG1lbnVzIHRvIGluY2x1ZGUgaW4gdGhlIG1lbnUgYmFyLlxuICAgKiBAZGVmYXVsdCBbICdlZGl0JywgJ2Zvcm1hdCcgXVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBtZW51cyh2YWx1ZTogU2t5VGV4dEVkaXRvck1lbnVUeXBlW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWVudXMgPSB2YWx1ZSB8fCBNRU5VX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBtZW51cygpOiBTa3lUZXh0RWRpdG9yTWVudVR5cGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19tZW51cztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWVyZ2UgZmllbGRzIHRvIGluY2x1ZGUgaW4gdGhlIG1lcmdlIGZpZWxkIG1lbnUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1lcmdlRmllbGRzKHZhbHVlOiBTa3lUZXh0RWRpdG9yTWVyZ2VGaWVsZFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX21lcmdlRmllbGRzID0gdmFsdWUgfHwgW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lcmdlRmllbGRzKCk6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkW10ge1xuICAgIHJldHVybiB0aGlzLiNfbWVyZ2VGaWVsZHM7XG4gIH1cblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdGV4dCB0byBkaXNwbGF5IHdoZW4gdGhlIHRleHQgZW50cnkgYXJlYSBpcyBlbXB0eS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLiNfcGxhY2Vob2xkZXIpIHtcbiAgICAgIHRoaXMuI19wbGFjZWhvbGRlciA9IHZhbHVlIHx8ICcnO1xuICAgICAgaWYgKHRoaXMuI2luaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldFBsYWNlaG9sZGVyKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI19wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9ucyB0byBpbmNsdWRlIGluIHRoZSB0b29sYmFyIGFuZCBkZXRlcm1pbmVzIHRoZWlyIG9yZGVyLlxuICAgKiBAZGVmYXVsdCBbICdmb250LWZhbWlseScsICdmb250LXNpemUnLCAnZm9udC1zdHlsZScsICdjb2xvcicsICdsaXN0JywgJ2xpbmsgXVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0b29sYmFyQWN0aW9ucyhcbiAgICB2YWx1ZTogU2t5VGV4dEVkaXRvclRvb2xiYXJBY3Rpb25UeXBlW10gfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgdGhpcy4jX3Rvb2xiYXJBY3Rpb25zID0gdmFsdWUgfHwgVE9PTEJBUl9BQ1RJT05fREVGQVVMVFM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvb2xiYXJBY3Rpb25zKCk6IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX3Rvb2xiYXJBY3Rpb25zO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnaWZyYW1lJylcbiAgcHVibGljIGlmcmFtZVJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGludGVybmFsIHZhbHVlIG9mIHRoZSBjb250cm9sLlxuICAgKi9cbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gTm9ybWFsaXplIHZhbHVlIGFuZCBzZXQgYW55IGVtcHR5IHN0YXRlIHRvIGFuIGVtcHR5IHN0cmluZy5cbiAgICBsZXQgbm9ybWFsaXplZFZhbHVlOiBzdHJpbmc7XG4gICAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWU/LnRyaW0oKTtcblxuICAgIGlmIChcbiAgICAgICF2YWx1ZSB8fFxuICAgICAgdmFsdWVUcmltbWVkID09PSAnPHA+PC9wPicgfHxcbiAgICAgIHZhbHVlVHJpbW1lZCA9PT0gJzxicj4nIHx8XG4gICAgICB2YWx1ZVRyaW1tZWQgPT09ICc8cD48YnI+PC9wPidcbiAgICApIHtcbiAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBub3JtYWxpemVkVmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBub3JtYWxpemVkVmFsdWUgPSB0aGlzLiNzYW5pdGl6YXRpb25TZXJ2aWNlXG4gICAgICAuc2FuaXRpemUobm9ybWFsaXplZFZhbHVlKVxuICAgICAgLnRyaW0oKTtcblxuICAgIGlmICh0aGlzLiNfdmFsdWUgIT09IG5vcm1hbGl6ZWRWYWx1ZSkge1xuICAgICAgdGhpcy4jX3ZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xuXG4gICAgICAvLyBVcGRhdGUgYW5ndWxhciBmb3JtIGNvbnRyb2wgaWYgbW9kZWwgaGFzIGJlZW4gbm9ybWFsaXplZC5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuI25nQ29udHJvbD8uY29udHJvbCAmJlxuICAgICAgICBub3JtYWxpemVkVmFsdWUgIT09IHRoaXMuI25nQ29udHJvbC5jb250cm9sLnZhbHVlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy4jbmdDb250cm9sLmNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZFZhbHVlLCB7XG4gICAgICAgICAgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIEF1dG9mb2N1cyBpc24ndCB0ZXN0YWJsZSBpbiBGaXJlZm94IGFuZCBJRS5cbiAgICAgIC8vIERvbid0IHNldCBmb2N1cyBvbiB0aGUgZWRpdG9yIG5vdyBpZiB0aGUgaWZyYW1lIGlzbid0IGluaXRpYWxpemVkLlxuICAgICAgLy8gI2luaXRJZnJhbWUoKSB3aWxsIGRvIGFub3RoZXIgY2hlY2sgbGF0ZXIgdG8gc2VlIGlmIHRoZSBlZGl0b3Igc2hvdWxkXG4gICAgICAvLyByZWNlaXZlIGZvY3VzLlxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmICh0aGlzLmF1dG9mb2N1cyAmJiB0aGlzLiNpbml0aWFsaXplZCAmJiAhdGhpcy4jZm9jdXNJbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5mb2N1c0VkaXRvcigpO1xuICAgICAgICB0aGlzLiNmb2N1c0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI192YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0b3JGb2N1c1N0cmVhbSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI2RlZmF1bHRJZDogc3RyaW5nO1xuICAjaWQ6IHN0cmluZztcbiAgI2ZvY3VzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgI2luaXRpYWxpemVkID0gZmFsc2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI2NvcmVBZGFwdGVyU2VydmljZTogU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlO1xuICAjYWRhcHRlclNlcnZpY2U6IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZTtcbiAgI2VkaXRvclNlcnZpY2U6IFNreVRleHRFZGl0b3JTZXJ2aWNlO1xuICAjc2FuaXRpemF0aW9uU2VydmljZTogU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2U7XG4gICNuZ0NvbnRyb2w6IE5nQ29udHJvbDtcbiAgI3pvbmU6IE5nWm9uZTtcblxuICAjX2ZvbnRMaXN0ID0gRk9OVF9MSVNUX0RFRkFVTFRTO1xuICAjX2ZvbnRTaXplTGlzdCA9IEZPTlRfU0laRV9MSVNUX0RFRkFVTFRTO1xuICAjX21lcmdlRmllbGRzOiBTa3lUZXh0RWRpdG9yTWVyZ2VGaWVsZFtdID0gW107XG4gICNfbWVudXMgPSBNRU5VX0RFRkFVTFRTO1xuICAjX3Rvb2xiYXJBY3Rpb25zOiBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGVbXSA9IFRPT0xCQVJfQUNUSU9OX0RFRkFVTFRTO1xuICAjX2Rpc2FibGVkID0gZmFsc2U7XG4gICNfaW5pdGlhbFN0eWxlU3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBTVFlMRV9TVEFURV9ERUZBVUxUUyk7XG4gICNfcGxhY2Vob2xkZXIgPSAnJztcbiAgI192YWx1ZSA9ICc8cD48L3A+JztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgY29yZUFkYXB0ZXJTZXJ2aWNlOiBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gICAgYWRhcHRlclNlcnZpY2U6IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSxcbiAgICBlZGl0b3JTZXJ2aWNlOiBTa3lUZXh0RWRpdG9yU2VydmljZSxcbiAgICBzYW5pdGl6YXRpb25TZXJ2aWNlOiBTa3lUZXh0U2FuaXRpemF0aW9uU2VydmljZSxcbiAgICBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICB6b25lOiBOZ1pvbmUsXG4gICAgaWRTdmM6IFNreUlkU2VydmljZVxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2NvcmVBZGFwdGVyU2VydmljZSA9IGNvcmVBZGFwdGVyU2VydmljZTtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZSA9IGFkYXB0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuI2VkaXRvclNlcnZpY2UgPSBlZGl0b3JTZXJ2aWNlO1xuICAgIHRoaXMuI3Nhbml0aXphdGlvblNlcnZpY2UgPSBzYW5pdGl6YXRpb25TZXJ2aWNlO1xuICAgIHRoaXMuI25nQ29udHJvbCA9IG5nQ29udHJvbDtcbiAgICB0aGlzLiN6b25lID0gem9uZTtcblxuICAgIHRoaXMuI2lkID0gdGhpcy4jZGVmYXVsdElkID0gaWRTdmMuZ2VuZXJhdGVJZCgpO1xuXG4gICAgbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNpbml0SWZyYW1lKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UucmVtb3ZlT2JzZXJ2ZXJzKHRoaXMuI2VkaXRvclNlcnZpY2UuZWRpdG9yKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25JZnJhbWVMb2FkKCk6IHZvaWQge1xuICAgIC8vIFJlaW5pdGlhbGl6ZSB0aGUgZWRpdG9yIGlmIGl0IGFscmVhZHkgZXhpc3RzIHRvIGNvdmVyIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHRleHQgZWRpdG9yIG1pZ2h0IGhhdmUgYmVlbiBtb3ZlZCBpbiB0aGUgRE9NLlxuICAgIGlmICh0aGlzLiNlZGl0b3JTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI2luaXRJZnJhbWUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAvLyBVcGRhdGUgSFRNTCBpZiBuZWNlc3NhcnkuXG4gICAgaWYgKHRoaXMuI2luaXRpYWxpemVkKSB7XG4gICAgICBjb25zdCBlZGl0b3JWYWx1ZSA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldEVkaXRvcklubmVySHRtbCgpO1xuICAgICAgaWYgKGVkaXRvclZhbHVlICE9PSB0aGlzLiNfdmFsdWUpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0RWRpdG9ySW5uZXJIdG1sKHRoaXMuI192YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAjdXBkYXRlU3R5bGUoKTogdm9pZCB7XG4gICAgdGhpcy4jX2luaXRpYWxTdHlsZVN0YXRlID0ge1xuICAgICAgLi4udGhpcy4jX2luaXRpYWxTdHlsZVN0YXRlLFxuICAgICAgLi4udGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0U3R5bGVTdGF0ZSgpLFxuICAgIH07XG4gIH1cblxuICAjaW5pdElmcmFtZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5pbml0RWRpdG9yKFxuICAgICAgdGhpcy5pZCxcbiAgICAgICh0aGlzLmlmcmFtZVJlZiBhcyBFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5pbml0aWFsU3R5bGVTdGF0ZSxcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJcbiAgICApO1xuXG4gICAgdGhpcy4jZWRpdG9yU2VydmljZVxuICAgICAgLmlucHV0TGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBydW4gY2hhbmdlIGRldGVjdGlvbiBmb3IgY2hhbmdlcyBvcmlnaW5hdGluZyBpbnNpZGUgYW4gaWZyYW1lLFxuICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIGNhbGwgdGhlIG9uQ2hhbmdlKCkgZXZlbnQgaW5zaWRlIE5nWm9uZSB0byBmb3JjZSBjaGFuZ2UgcHJvcGFnYXRpb24gdG8gY29uc3VtaW5nIGNvbXBvbmVudHMuXG4gICAgICAgIHRoaXMuI3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiN2aWV3VG9Nb2RlbFVwZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZWRpdG9yU2VydmljZVxuICAgICAgLnNlbGVjdGlvbkNoYW5nZUxpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiN1cGRhdGVTdHlsZSgpO1xuICAgICAgICB0aGlzLmVkaXRvckZvY3VzU3RyZWFtLm5leHQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZWRpdG9yU2VydmljZVxuICAgICAgLmNsaWNrTGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZWRpdG9yRm9jdXNTdHJlYW0ubmV4dCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuYmx1ckxpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBBbmd1bGFyIGRvZXNuJ3QgcnVuIGNoYW5nZSBkZXRlY3Rpb24gZm9yIGNoYW5nZXMgb3JpZ2luYXRpbmcgaW5zaWRlIGFuIGlmcmFtZSxcbiAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBydW4gbWFya0ZvckNoZWNrKCkgaW5zaWRlIHRoZSBOZ1pvbmUgdG8gZm9yY2UgY2hhbmdlIHByb3BhZ2F0aW9uIHRvIGNvbnN1bWluZyBjb21wb25lbnRzLlxuICAgICAgICB0aGlzLiN6b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jX29uVG91Y2hlZCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZWRpdG9yU2VydmljZVxuICAgICAgLmNvbW1hbmRDaGFuZ2VMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jdXBkYXRlU3R5bGUoKTtcbiAgICAgICAgdGhpcy4jdmlld1RvTW9kZWxVcGRhdGUoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0RWRpdG9ySW5uZXJIdG1sKHRoaXMuI192YWx1ZSk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLmF1dG9mb2N1cykge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNFZGl0b3IoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNpbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICAjdmlld1RvTW9kZWxVcGRhdGUoZW1pdENoYW5nZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0RWRpdG9ySW5uZXJIdG1sKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZW1pdENoYW5nZSkge1xuICAgICAgdGhpcy4jX29uQ2hhbmdlKHRoaXMuI192YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgI19vblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICB9O1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICNfb25DaGFuZ2U6IChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHZhbHVlOiBhbnlcbiAgKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3JcIj5cbiAgPHNreS10b29sYmFyXG4gICAgKm5nSWY9XCJcbiAgICAgIChtZW51cyAmJiBtZW51cy5sZW5ndGgpID4gMCB8fFxuICAgICAgKHRvb2xiYXJBY3Rpb25zICYmIHRvb2xiYXJBY3Rpb25zLmxlbmd0aCA+IDApXG4gICAgXCJcbiAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci10b29sYmFyXCJcbiAgPlxuICAgIDxza3ktdG9vbGJhci1zZWN0aW9uXG4gICAgICAqbmdJZj1cIm1lbnVzICYmIG1lbnVzLmxlbmd0aCA+IDBcIlxuICAgICAgYXJpYS1sYWJlbD1cIlRleHQgZm9ybWF0dGluZ1wiXG4gICAgICBjbGFzcz1cIm1lbnViYXJcIlxuICAgICAgcm9sZT1cInRvb2xiYXJcIlxuICAgID5cbiAgICAgIDxza3ktdGV4dC1lZGl0b3ItbWVudWJhclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbZWRpdG9yRm9jdXNTdHJlYW1dPVwiZWRpdG9yRm9jdXNTdHJlYW1cIlxuICAgICAgICBbbWVudXNdPVwibWVudXNcIlxuICAgICAgICBbbWVyZ2VGaWVsZHNdPVwibWVyZ2VGaWVsZHNcIlxuICAgICAgPlxuICAgICAgPC9za3ktdGV4dC1lZGl0b3ItbWVudWJhcj5cbiAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gICAgPHNreS10b29sYmFyLXNlY3Rpb25cbiAgICAgICpuZ0lmPVwidG9vbGJhckFjdGlvbnMgJiYgdG9vbGJhckFjdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICBhcmlhLWxhYmVsPVwiVGV4dCBmb3JtYXR0aW5nXCJcbiAgICAgIGNsYXNzPVwidG9vbGJhclwiXG4gICAgICByb2xlPVwidG9vbGJhclwiXG4gICAgPlxuICAgICAgPHNreS10ZXh0LWVkaXRvci10b29sYmFyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtlZGl0b3JGb2N1c1N0cmVhbV09XCJlZGl0b3JGb2N1c1N0cmVhbVwiXG4gICAgICAgIFtmb250TGlzdF09XCJmb250TGlzdFwiXG4gICAgICAgIFtmb250U2l6ZUxpc3RdPVwiZm9udFNpemVMaXN0XCJcbiAgICAgICAgW3Rvb2xiYXJBY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCJcbiAgICAgICAgW3N0eWxlU3RhdGVdPVwiaW5pdGlhbFN0eWxlU3RhdGVcIlxuICAgICAgPlxuICAgICAgPC9za3ktdGV4dC1lZGl0b3ItdG9vbGJhcj5cbiAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gIDwvc2t5LXRvb2xiYXI+XG4gIDxpZnJhbWVcbiAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci13cmFwcGVyXCJcbiAgICBzcmM9XCJhYm91dDpibGFua1wiXG4gICAgdGl0bGU9XCJUZXh0IEVkaXRvclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS10ZXh0LWVkaXRvci13cmFwcGVyLWRpc2FibGVkJzogZGlzYWJsZWRcbiAgICB9XCJcbiAgICAobG9hZCk9XCJvbklmcmFtZUxvYWQoKVwiXG4gICAgI2lmcmFtZVxuICA+XG4gIDwvaWZyYW1lPlxuPC9kaXY+XG4iXX0=
@@ -19,8 +19,8 @@ import { SkyTextEditorUrlModalComponent } from './url-modal/text-editor-url-moda
19
19
  import * as i0 from "@angular/core";
20
20
  export class SkyTextEditorModule {
21
21
  }
22
- SkyTextEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyTextEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
- SkyTextEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: SkyTextEditorModule, declarations: [SkyTextEditorComponent,
22
+ SkyTextEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyTextEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23
+ SkyTextEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: SkyTextEditorModule, declarations: [SkyTextEditorComponent,
24
24
  SkyTextEditorUrlModalComponent,
25
25
  SkyTextEditorToolbarComponent,
26
26
  SkyTextEditorMenubarComponent], imports: [CommonModule,
@@ -42,7 +42,7 @@ SkyTextEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
42
42
  SkyTextEditorUrlModalComponent,
43
43
  SkyTextEditorToolbarComponent,
44
44
  SkyTextEditorMenubarComponent] });
45
- SkyTextEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyTextEditorModule, imports: [CommonModule,
45
+ SkyTextEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyTextEditorModule, imports: [CommonModule,
46
46
  FormsModule,
47
47
  ReactiveFormsModule,
48
48
  SkyCoreAdapterModule,
@@ -58,7 +58,7 @@ SkyTextEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ver
58
58
  SkyTabsModule,
59
59
  SkyThemeModule,
60
60
  SkyToolbarModule] });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SkyTextEditorModule, decorators: [{
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyTextEditorModule, decorators: [{
62
62
  type: NgModule,
63
63
  args: [{
64
64
  imports: [