@skyux/text-editor 8.6.0 → 8.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  var _SkyTextEditorComponent_instances, _SkyTextEditorComponent_defaultId, _SkyTextEditorComponent_id, _SkyTextEditorComponent_focusInitialized, _SkyTextEditorComponent_initialized, _SkyTextEditorComponent_ngUnsubscribe, _SkyTextEditorComponent_changeDetector, _SkyTextEditorComponent_coreAdapterService, _SkyTextEditorComponent_adapterService, _SkyTextEditorComponent_editorService, _SkyTextEditorComponent_sanitizationService, _SkyTextEditorComponent_ngControl, _SkyTextEditorComponent_zone, _SkyTextEditorComponent__fontList, _SkyTextEditorComponent__fontSizeList, _SkyTextEditorComponent__mergeFields, _SkyTextEditorComponent__menus, _SkyTextEditorComponent__toolbarActions, _SkyTextEditorComponent__disabled, _SkyTextEditorComponent__initialStyleState, _SkyTextEditorComponent__placeholder, _SkyTextEditorComponent__value, _SkyTextEditorComponent_updateStyle, _SkyTextEditorComponent_initIframe, _SkyTextEditorComponent_viewToModelUpdate, _SkyTextEditorComponent__onTouched, _SkyTextEditorComponent__onChange;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation, } from '@angular/core';
3
+ import { ChangeDetectionStrategy, Component, HostBinding, Input, TemplateRef, ViewChild, ViewEncapsulation, inject, } from '@angular/core';
4
+ import { SkyInputBoxHostService } from '@skyux/forms';
4
5
  import { Subject } from 'rxjs';
5
6
  import { takeUntil } from 'rxjs/operators';
6
7
  import { SkyFormsUtility } from '../shared/forms-utility';
@@ -196,6 +197,9 @@ export class SkyTextEditorComponent {
196
197
  */
197
198
  this.autofocus = false;
198
199
  this.editorFocusStream = new Subject();
200
+ this.formControlClass = !!inject(SkyInputBoxHostService, {
201
+ optional: true,
202
+ });
199
203
  _SkyTextEditorComponent_defaultId.set(this, void 0);
200
204
  _SkyTextEditorComponent_id.set(this, void 0);
201
205
  _SkyTextEditorComponent_focusInitialized.set(this, false);
@@ -343,11 +347,11 @@ _SkyTextEditorComponent_defaultId = new WeakMap(), _SkyTextEditorComponent_id =
343
347
  }
344
348
  };
345
349
  SkyTextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", 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 });
346
- SkyTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", 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: [
350
+ SkyTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", 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" }, host: { properties: { "class.sky-form-control": "this.formControlClass" } }, providers: [
347
351
  SkyTextEditorService,
348
352
  SkyTextEditorSelectionService,
349
353
  SkyTextEditorAdapterService,
350
- ], 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 });
354
+ ], viewQueries: [{ propertyName: "iframeRef", first: true, predicate: ["iframe"], descendants: true }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: 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 });
351
355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTextEditorComponent, decorators: [{
352
356
  type: Component,
353
357
  args: [{ selector: 'sky-text-editor', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
@@ -378,5 +382,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
378
382
  }], iframeRef: [{
379
383
  type: ViewChild,
380
384
  args: ['iframe']
385
+ }], inputTemplateRef: [{
386
+ type: ViewChild,
387
+ args: ['inputTemplateRef', {
388
+ read: TemplateRef,
389
+ static: true,
390
+ }]
391
+ }], formControlClass: [{
392
+ type: HostBinding,
393
+ args: ['class.sky-form-control']
381
394
  }] } });
382
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsS0FBSyxFQUdMLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFR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QSxJQUFJLHNDQUFRLENBQUMsQ0FBQztLQUMvQjtBQUNILENBQUM7bUhBaFpVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG9UQU50QjtRQUNULG9CQUFvQjtRQUNwQiw2QkFBNkI7UUFDN0IsMkJBQTJCO0tBQzVCLCtIQ2hESCxpNUNBbURBOzJGRERhLHNCQUFzQjtrQkFabEMsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDVCxvQkFBb0I7d0JBQ3BCLDZCQUE2Qjt3QkFDN0IsMkJBQTJCO3FCQUM1QjswVUFPTSxTQUFTO3NCQURmLEtBQUs7Z0JBU0ssUUFBUTtzQkFEbEIsS0FBSztnQkEyQ0ssUUFBUTtzQkFEbEIsS0FBSztnQkFjSyxZQUFZO3NCQUR0QixLQUFLO2dCQWNLLEVBQUU7c0JBRFosS0FBSztnQkFhSyxpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBcUJLLEtBQUs7c0JBRGYsS0FBSztnQkFhSyxXQUFXO3NCQURyQixLQUFLO2dCQWFLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBb0JLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBWUMsU0FBUztzQkFEZixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUNvcmVBZGFwdGVyU2VydmljZSwgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZvcm1zVXRpbGl0eSB9IGZyb20gJy4uL3NoYXJlZC9mb3Jtcy11dGlsaXR5JztcblxuaW1wb3J0IHsgRk9OVF9MSVNUX0RFRkFVTFRTIH0gZnJvbSAnLi9kZWZhdWx0cy9mb250LWxpc3QtZGVmYXVsdHMnO1xuaW1wb3J0IHsgRk9OVF9TSVpFX0xJU1RfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL2ZvbnQtc2l6ZS1saXN0LWRlZmF1bHRzJztcbmltcG9ydCB7IE1FTlVfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL21lbnUtZGVmYXVsdHMnO1xuaW1wb3J0IHsgU1RZTEVfU1RBVEVfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL3N0eWxlLXN0YXRlLWRlZmF1bHRzJztcbmltcG9ydCB7IFRPT0xCQVJfQUNUSU9OX0RFRkFVTFRTIH0gZnJvbSAnLi9kZWZhdWx0cy90b29sYmFyLWFjdGlvbi1kZWZhdWx0cyc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RleHQtZWRpdG9yLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1lZGl0b3Itc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RleHQtZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RleHQtc2FuaXRpemF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvckZvbnQgfSBmcm9tICcuL3R5cGVzL2ZvbnQtc3RhdGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lbnVUeXBlIH0gZnJvbSAnLi90eXBlcy9tZW51LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvclN0eWxlU3RhdGUgfSBmcm9tICcuL3R5cGVzL3N0eWxlLXN0YXRlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkIH0gZnJvbSAnLi90eXBlcy90ZXh0LWVkaXRvci1tZXJnZS1maWVsZCc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzL3Rvb2xiYXItYWN0aW9uLXR5cGUnO1xuXG4vKipcbiAqIFRoZSB0ZXh0IGVkaXRvciBjb21wb25lbnQgbGV0cyB1c2VycyBmb3JtYXQgYW5kIG1hbmlwdWxhdGUgdGV4dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVRleHRFZGl0b3JTZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHB1dCBmb2N1cyBvbiB0aGUgZWRpdG9yIGFmdGVyIGl0IHJlbmRlcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2ZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGV4dCBlZGl0b3Igb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IFNreUZvcm1zVXRpbGl0eS5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmIChjb2VyY2VkVmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuI19kaXNhYmxlZCA9IGNvZXJjZWRWYWx1ZTtcblxuICAgICAgLy8gVXBkYXRlIGZvY3VzYWJsZUNoaWxkcmVuIGluc2lkZSB0aGUgaWZyYW1lLlxuICAgICAgbGV0IGZvY3VzYWJsZUNoaWxkcmVuOiBIVE1MRWxlbWVudFtdO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICh0aGlzLmlmcmFtZVJlZikge1xuICAgICAgICBmb2N1c2FibGVDaGlsZHJlbiA9IHRoaXMuI2NvcmVBZGFwdGVyU2VydmljZS5nZXRGb2N1c2FibGVDaGlsZHJlbihcbiAgICAgICAgICB0aGlzLmlmcmFtZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5ib2R5LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlnbm9yZVZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBpZ25vcmVUYWJJbmRleDogdHJ1ZSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuI19kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmRpc2FibGVFZGl0b3IoXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbixcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmVuYWJsZUVkaXRvcihcbiAgICAgICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuLFxuICAgICAgICAgICAgdGhpcy5pZnJhbWVSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb250cyB0byBpbmNsdWRlIGluIHRoZSBmb250IHBpY2tlci5cbiAgICogQGRlZmF1bHQgW3tuYW1lOiAnQmxhY2tiYXVkIFNhbnMnLCB2YWx1ZTogJ1wiQmxhY2tiYXVkIFNhbnNcIiwgQXJpYWwsIHNhbnMtc2VyaWYnfSwge25hbWU6ICdBcmlhbCcsIHZhbHVlOiAnQXJpYWwnfSwge25hbWU6ICdBcmlhbCBCbGFjaycsIHZhbHVlOiAnXCJBcmlhbCBCbGFja1wiJ30sIHtuYW1lOiAnQ291cmllciBOZXcnLCB2YWx1ZTogJ1wiQ291cmllciBOZXdcIid9LCB7bmFtZTogJ0dlb3JnaWEnLCB2YWx1ZTogJ0dlb3JnaWEsIHNlcmlmJ30sIHtuYW1lOiAnVGFob21hJywgdmFsdWU6ICdUYWhvbWEsIEdlbmV2YSwgc2Fucy1zZXJpZid9LCB7bmFtZTogJ1RpbWVzIE5ldyBSb21hbicsIHZhbHVlOiAnXCJUaW1lcyBOZXcgUm9tYW5cIid9LCB7bmFtZTogJ1RyZWJ1Y2hldCBNUycsIHZhbHVlOiAnXCJUcmVidWNoZXQgTVNcIiwgc2Fucy1zZXJpZid9LCB7bmFtZTogJ1ZlcmRhbmEnLCB2YWx1ZTogJ1ZlcmRhbmEsIEdlbmV2YSwgc2Fucy1zZXJpZid9XVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmb250TGlzdCh2YWx1ZTogU2t5VGV4dEVkaXRvckZvbnRbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19mb250TGlzdCA9IHZhbHVlIHx8IEZPTlRfTElTVF9ERUZBVUxUUztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9udExpc3QoKTogU2t5VGV4dEVkaXRvckZvbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19mb250TGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9udCBzaXplcyB0byBpbmNsdWRlIGluIHRoZSBmb250IHNpemUgcGlja2VyLlxuICAgKiBAZGVmYXVsdCBbNiwgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE4LCAyMCwgMjIsIDI0LCAyNiwgMjgsIDM2LCA0OF1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZm9udFNpemVMaXN0KHZhbHVlOiBudW1iZXJbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19mb250U2l6ZUxpc3QgPSB2YWx1ZSB8fCBGT05UX1NJWkVfTElTVF9ERUZBVUxUUztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9udFNpemVMaXN0KCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy4jX2ZvbnRTaXplTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIElEIGF0dHJpYnV0ZSBmb3IgdGhlIHRleHQgZWRpdG9yLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29tcG9uZW50IGdlbmVyYXRlcyBhIHJhbmRvbSBJRC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2lkID0gdmFsdWUgfHwgdGhpcy4jZGVmYXVsdElkO1xuICB9XG5cbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCBzdHlsZXMgZm9yIGFsbCBjb250ZW50LCBpbmNsdWRpbmcgYmFja2dyb3VuZCBjb2xvciwgZm9udCBzaXplLCBhbmQgbGluayBzdGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW5pdGlhbFN0eWxlU3RhdGUoc3RhdGU6IFNreVRleHRFZGl0b3JTdHlsZVN0YXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRG8gbm90IHVwZGF0ZSB0aGUgc3RhdGUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gaGFzIHRha2VuIHBsYWNlXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMuI2luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUgPSB7XG4gICAgICAgIC4uLlNUWUxFX1NUQVRFX0RFRkFVTFRTLFxuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpbml0aWFsU3R5bGVTdGF0ZSgpOiBTa3lUZXh0RWRpdG9yU3R5bGVTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuI19pbml0aWFsU3R5bGVTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWVudXMgdG8gaW5jbHVkZSBpbiB0aGUgbWVudSBiYXIuXG4gICAqIEBkZWZhdWx0IFsgJ2VkaXQnLCAnZm9ybWF0JyBdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1lbnVzKHZhbHVlOiBTa3lUZXh0RWRpdG9yTWVudVR5cGVbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tZW51cyA9IHZhbHVlIHx8IE1FTlVfREVGQVVMVFM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVzKCk6IFNreVRleHRFZGl0b3JNZW51VHlwZVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX21lbnVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZXJnZSBmaWVsZHMgdG8gaW5jbHVkZSBpbiB0aGUgbWVyZ2UgZmllbGQgbWVudS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWVyZ2VGaWVsZHModmFsdWU6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWVyZ2VGaWVsZHMgPSB2YWx1ZSB8fCBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVyZ2VGaWVsZHMoKTogU2t5VGV4dEVkaXRvck1lcmdlRmllbGRbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19tZXJnZUZpZWxkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IHRvIGRpc3BsYXkgd2hlbiB0aGUgdGV4dCBlbnRyeSBhcmVhIGlzIGVtcHR5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodmFsdWUgIT09IHRoaXMuI19wbGFjZWhvbGRlcikge1xuICAgICAgdGhpcy4jX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgJyc7XG4gICAgICBpZiAodGhpcy4jaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0UGxhY2Vob2xkZXIodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb25zIHRvIGluY2x1ZGUgaW4gdGhlIHRvb2xiYXIgYW5kIGRldGVybWluZXMgdGhlaXIgb3JkZXIuXG4gICAqIEBkZWZhdWx0IFsgJ2ZvbnQtZmFtaWx5JywgJ2ZvbnQtc2l6ZScsICdmb250LXN0eWxlJywgJ2NvbG9yJywgJ2xpc3QnLCAnbGluayBdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRvb2xiYXJBY3Rpb25zKFxuICAgIHZhbHVlOiBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGVbXSB8IHVuZGVmaW5lZFxuICApIHtcbiAgICB0aGlzLiNfdG9vbGJhckFjdGlvbnMgPSB2YWx1ZSB8fCBUT09MQkFSX0FDVElPTl9ERUZBVUxUUztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9vbGJhckFjdGlvbnMoKTogU2t5VGV4dEVkaXRvclRvb2xiYXJBY3Rpb25UeXBlW10ge1xuICAgIHJldHVybiB0aGlzLiNfdG9vbGJhckFjdGlvbnM7XG4gIH1cblxuICBAVmlld0NoaWxkKCdpZnJhbWUnKVxuICBwdWJsaWMgaWZyYW1lUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgdmFsdWUgb2YgdGhlIGNvbnRyb2wuXG4gICAqL1xuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvLyBOb3JtYWxpemUgdmFsdWUgYW5kIHNldCBhbnkgZW1wdHkgc3RhdGUgdG8gYW4gZW1wdHkgc3RyaW5nLlxuICAgIGxldCBub3JtYWxpemVkVmFsdWU6IHN0cmluZztcbiAgICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZT8udHJpbSgpO1xuXG4gICAgaWYgKFxuICAgICAgIXZhbHVlIHx8XG4gICAgICB2YWx1ZVRyaW1tZWQgPT09ICc8cD48L3A+JyB8fFxuICAgICAgdmFsdWVUcmltbWVkID09PSAnPGJyPicgfHxcbiAgICAgIHZhbHVlVHJpbW1lZCA9PT0gJzxwPjxicj48L3A+J1xuICAgICkge1xuICAgICAgbm9ybWFsaXplZFZhbHVlID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMuI3Nhbml0aXphdGlvblNlcnZpY2VcbiAgICAgIC5zYW5pdGl6ZShub3JtYWxpemVkVmFsdWUpXG4gICAgICAudHJpbSgpO1xuXG4gICAgaWYgKHRoaXMuI192YWx1ZSAhPT0gbm9ybWFsaXplZFZhbHVlKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG5cbiAgICAgIC8vIFVwZGF0ZSBhbmd1bGFyIGZvcm0gY29udHJvbCBpZiBtb2RlbCBoYXMgYmVlbiBub3JtYWxpemVkLlxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy4jbmdDb250cm9sPy5jb250cm9sICYmXG4gICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSAhPT0gdGhpcy4jbmdDb250cm9sLmNvbnRyb2wudmFsdWVcbiAgICAgICkge1xuICAgICAgICB0aGlzLiNuZ0NvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVkVmFsdWUsIHtcbiAgICAgICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gQXV0b2ZvY3VzIGlzbid0IHRlc3RhYmxlIGluIEZpcmVmb3ggYW5kIElFLlxuICAgICAgLy8gRG9uJ3Qgc2V0IGZvY3VzIG9uIHRoZSBlZGl0b3Igbm93IGlmIHRoZSBpZnJhbWUgaXNuJ3QgaW5pdGlhbGl6ZWQuXG4gICAgICAvLyAjaW5pdElmcmFtZSgpIHdpbGwgZG8gYW5vdGhlciBjaGVjayBsYXRlciB0byBzZWUgaWYgdGhlIGVkaXRvciBzaG91bGRcbiAgICAgIC8vIHJlY2VpdmUgZm9jdXMuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKHRoaXMuYXV0b2ZvY3VzICYmIHRoaXMuI2luaXRpYWxpemVkICYmICF0aGlzLiNmb2N1c0luaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmZvY3VzRWRpdG9yKCk7XG4gICAgICAgIHRoaXMuI2ZvY3VzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlO1xuICB9XG5cbiAgcHVibGljIGVkaXRvckZvY3VzU3RyZWFtID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjZGVmYXVsdElkOiBzdHJpbmc7XG4gICNpZDogc3RyaW5nO1xuICAjZm9jdXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAjaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjY29yZUFkYXB0ZXJTZXJ2aWNlOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG4gICNhZGFwdGVyU2VydmljZTogU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlO1xuICAjZWRpdG9yU2VydmljZTogU2t5VGV4dEVkaXRvclNlcnZpY2U7XG4gICNzYW5pdGl6YXRpb25TZXJ2aWNlOiBTa3lUZXh0U2FuaXRpemF0aW9uU2VydmljZTtcbiAgI25nQ29udHJvbDogTmdDb250cm9sO1xuICAjem9uZTogTmdab25lO1xuXG4gICNfZm9udExpc3QgPSBGT05UX0xJU1RfREVGQVVMVFM7XG4gICNfZm9udFNpemVMaXN0ID0gRk9OVF9TSVpFX0xJU1RfREVGQVVMVFM7XG4gICNfbWVyZ2VGaWVsZHM6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkW10gPSBbXTtcbiAgI19tZW51cyA9IE1FTlVfREVGQVVMVFM7XG4gICNfdG9vbGJhckFjdGlvbnM6IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZVtdID0gVE9PTEJBUl9BQ1RJT05fREVGQVVMVFM7XG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcbiAgI19pbml0aWFsU3R5bGVTdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIFNUWUxFX1NUQVRFX0RFRkFVTFRTKTtcbiAgI19wbGFjZWhvbGRlciA9ICcnO1xuICAjX3ZhbHVlID0gJzxwPjwvcD4nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBjb3JlQWRhcHRlclNlcnZpY2U6IFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgICBhZGFwdGVyU2VydmljZTogU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlLFxuICAgIGVkaXRvclNlcnZpY2U6IFNreVRleHRFZGl0b3JTZXJ2aWNlLFxuICAgIHNhbml0aXphdGlvblNlcnZpY2U6IFNreVRleHRTYW5pdGl6YXRpb25TZXJ2aWNlLFxuICAgIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBpZFN2YzogU2t5SWRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jY29yZUFkYXB0ZXJTZXJ2aWNlID0gY29yZUFkYXB0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlID0gYWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jZWRpdG9yU2VydmljZSA9IGVkaXRvclNlcnZpY2U7XG4gICAgdGhpcy4jc2FuaXRpemF0aW9uU2VydmljZSA9IHNhbml0aXphdGlvblNlcnZpY2U7XG4gICAgdGhpcy4jbmdDb250cm9sID0gbmdDb250cm9sO1xuICAgIHRoaXMuI3pvbmUgPSB6b25lO1xuXG4gICAgdGhpcy4jaWQgPSB0aGlzLiNkZWZhdWx0SWQgPSBpZFN2Yy5nZW5lcmF0ZUlkKCk7XG5cbiAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2luaXRJZnJhbWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5yZW1vdmVPYnNlcnZlcnModGhpcy4jZWRpdG9yU2VydmljZS5lZGl0b3IpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbklmcmFtZUxvYWQoKTogdm9pZCB7XG4gICAgLy8gUmVpbml0aWFsaXplIHRoZSBlZGl0b3IgaWYgaXQgYWxyZWFkeSBleGlzdHMgdG8gY292ZXIgc2l0dWF0aW9ucyB3aGVyZSB0aGUgdGV4dCBlZGl0b3IgbWlnaHQgaGF2ZSBiZWVuIG1vdmVkIGluIHRoZSBET00uXG4gICAgaWYgKHRoaXMuI2VkaXRvclNlcnZpY2UuaXNJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy4jaW5pdElmcmFtZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblxuICAgIC8vIFVwZGF0ZSBIVE1MIGlmIG5lY2Vzc2FyeS5cbiAgICBpZiAodGhpcy4jaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGNvbnN0IGVkaXRvclZhbHVlID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0RWRpdG9ySW5uZXJIdG1sKCk7XG4gICAgICBpZiAoZWRpdG9yVmFsdWUgIT09IHRoaXMuI192YWx1ZSkge1xuICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRFZGl0b3JJbm5lckh0bWwodGhpcy4jX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI19vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gICN1cGRhdGVTdHlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUgPSB7XG4gICAgICAuLi50aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUsXG4gICAgICAuLi50aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTdHlsZVN0YXRlKCksXG4gICAgfTtcbiAgfVxuXG4gICNpbml0SWZyYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmluaXRFZGl0b3IoXG4gICAgICB0aGlzLmlkLFxuICAgICAgKHRoaXMuaWZyYW1lUmVmIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLmluaXRpYWxTdHlsZVN0YXRlLFxuICAgICAgdGhpcy5wbGFjZWhvbGRlclxuICAgICk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuaW5wdXRMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBjaGFuZ2VzIG9yaWdpbmF0aW5nIGluc2lkZSBhbiBpZnJhbWUsXG4gICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gY2FsbCB0aGUgb25DaGFuZ2UoKSBldmVudCBpbnNpZGUgTmdab25lIHRvIGZvcmNlIGNoYW5nZSBwcm9wYWdhdGlvbiB0byBjb25zdW1pbmcgY29tcG9uZW50cy5cbiAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI3ZpZXdUb01vZGVsVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuc2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZVN0eWxlKCk7XG4gICAgICAgIHRoaXMuZWRpdG9yRm9jdXNTdHJlYW0ubmV4dCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuY2xpY2tMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5lZGl0b3JGb2N1c1N0cmVhbS5uZXh0KCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5ibHVyTGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBydW4gY2hhbmdlIGRldGVjdGlvbiBmb3IgY2hhbmdlcyBvcmlnaW5hdGluZyBpbnNpZGUgYW4gaWZyYW1lLFxuICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIHJ1biBtYXJrRm9yQ2hlY2soKSBpbnNpZGUgdGhlIE5nWm9uZSB0byBmb3JjZSBjaGFuZ2UgcHJvcGFnYXRpb24gdG8gY29uc3VtaW5nIGNvbXBvbmVudHMuXG4gICAgICAgIHRoaXMuI3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNfb25Ub3VjaGVkKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuY29tbWFuZENoYW5nZUxpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiN1cGRhdGVTdHlsZSgpO1xuICAgICAgICB0aGlzLiN2aWV3VG9Nb2RlbFVwZGF0ZSgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRFZGl0b3JJbm5lckh0bWwodGhpcy4jX3ZhbHVlKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XG4gICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5mb2N1c0VkaXRvcigpO1xuICAgIH1cblxuICAgIHRoaXMuI2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gICN2aWV3VG9Nb2RlbFVwZGF0ZShlbWl0Q2hhbmdlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRFZGl0b3JJbm5lckh0bWwoKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChlbWl0Q2hhbmdlKSB7XG4gICAgICB0aGlzLiNfb25DaGFuZ2UodGhpcy4jX3ZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAjX29uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIH07XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgI19vbkNoYW5nZTogKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdmFsdWU6IGFueVxuICApID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cInNreS10ZXh0LWVkaXRvclwiPlxuICA8c2t5LXRvb2xiYXJcbiAgICAqbmdJZj1cIlxuICAgICAgKG1lbnVzICYmIG1lbnVzLmxlbmd0aCkgPiAwIHx8XG4gICAgICAodG9vbGJhckFjdGlvbnMgJiYgdG9vbGJhckFjdGlvbnMubGVuZ3RoID4gMClcbiAgICBcIlxuICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLXRvb2xiYXJcIlxuICA+XG4gICAgPHNreS10b29sYmFyLXNlY3Rpb25cbiAgICAgICpuZ0lmPVwibWVudXMgJiYgbWVudXMubGVuZ3RoID4gMFwiXG4gICAgICBhcmlhLWxhYmVsPVwiVGV4dCBmb3JtYXR0aW5nXCJcbiAgICAgIGNsYXNzPVwibWVudWJhclwiXG4gICAgICByb2xlPVwidG9vbGJhclwiXG4gICAgPlxuICAgICAgPHNreS10ZXh0LWVkaXRvci1tZW51YmFyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtlZGl0b3JGb2N1c1N0cmVhbV09XCJlZGl0b3JGb2N1c1N0cmVhbVwiXG4gICAgICAgIFttZW51c109XCJtZW51c1wiXG4gICAgICAgIFttZXJnZUZpZWxkc109XCJtZXJnZUZpZWxkc1wiXG4gICAgICA+XG4gICAgICA8L3NreS10ZXh0LWVkaXRvci1tZW51YmFyPlxuICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICA8c2t5LXRvb2xiYXItc2VjdGlvblxuICAgICAgKm5nSWY9XCJ0b29sYmFyQWN0aW9ucyAmJiB0b29sYmFyQWN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJUZXh0IGZvcm1hdHRpbmdcIlxuICAgICAgY2xhc3M9XCJ0b29sYmFyXCJcbiAgICAgIHJvbGU9XCJ0b29sYmFyXCJcbiAgICA+XG4gICAgICA8c2t5LXRleHQtZWRpdG9yLXRvb2xiYXJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2VkaXRvckZvY3VzU3RyZWFtXT1cImVkaXRvckZvY3VzU3RyZWFtXCJcbiAgICAgICAgW2ZvbnRMaXN0XT1cImZvbnRMaXN0XCJcbiAgICAgICAgW2ZvbnRTaXplTGlzdF09XCJmb250U2l6ZUxpc3RcIlxuICAgICAgICBbdG9vbGJhckFjdGlvbnNdPVwidG9vbGJhckFjdGlvbnNcIlxuICAgICAgICBbc3R5bGVTdGF0ZV09XCJpbml0aWFsU3R5bGVTdGF0ZVwiXG4gICAgICA+XG4gICAgICA8L3NreS10ZXh0LWVkaXRvci10b29sYmFyPlxuICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgPC9za3ktdG9vbGJhcj5cbiAgPGlmcmFtZVxuICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLXdyYXBwZXJcIlxuICAgIHNyYz1cImFib3V0OmJsYW5rXCJcbiAgICB0aXRsZT1cIlRleHQgRWRpdG9yXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LXRleHQtZWRpdG9yLXdyYXBwZXItZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICAgIChsb2FkKT1cIm9uSWZyYW1lTG9hZCgpXCJcbiAgICAjaWZyYW1lXG4gID5cbiAgPC9pZnJhbWU+XG48L2Rpdj5cbiJdfQ==
395
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFHTCxXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXRELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDN0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDckYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1B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Y3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lDb3JlQWRhcHRlclNlcnZpY2UsIFNreUlkU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUlucHV0Qm94SG9zdFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZvcm1zVXRpbGl0eSB9IGZyb20gJy4uL3NoYXJlZC9mb3Jtcy11dGlsaXR5JztcblxuaW1wb3J0IHsgRk9OVF9MSVNUX0RFRkFVTFRTIH0gZnJvbSAnLi9kZWZhdWx0cy9mb250LWxpc3QtZGVmYXVsdHMnO1xuaW1wb3J0IHsgRk9OVF9TSVpFX0xJU1RfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL2ZvbnQtc2l6ZS1saXN0LWRlZmF1bHRzJztcbmltcG9ydCB7IE1FTlVfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL21lbnUtZGVmYXVsdHMnO1xuaW1wb3J0IHsgU1RZTEVfU1RBVEVfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL3N0eWxlLXN0YXRlLWRlZmF1bHRzJztcbmltcG9ydCB7IFRPT0xCQVJfQUNUSU9OX0RFRkFVTFRTIH0gZnJvbSAnLi9kZWZhdWx0cy90b29sYmFyLWFjdGlvbi1kZWZhdWx0cyc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RleHQtZWRpdG9yLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1lZGl0b3Itc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RleHQtZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RleHQtc2FuaXRpemF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvckZvbnQgfSBmcm9tICcuL3R5cGVzL2ZvbnQtc3RhdGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lbnVUeXBlIH0gZnJvbSAnLi90eXBlcy9tZW51LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvclN0eWxlU3RhdGUgfSBmcm9tICcuL3R5cGVzL3N0eWxlLXN0YXRlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkIH0gZnJvbSAnLi90eXBlcy90ZXh0LWVkaXRvci1tZXJnZS1maWVsZCc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzL3Rvb2xiYXItYWN0aW9uLXR5cGUnO1xuXG4vKipcbiAqIFRoZSB0ZXh0IGVkaXRvciBjb21wb25lbnQgbGV0cyB1c2VycyBmb3JtYXQgYW5kIG1hbmlwdWxhdGUgdGV4dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVRleHRFZGl0b3JTZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHB1dCBmb2N1cyBvbiB0aGUgZWRpdG9yIGFmdGVyIGl0IHJlbmRlcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2ZvY3VzOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGV4dCBlZGl0b3Igb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IFNreUZvcm1zVXRpbGl0eS5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmIChjb2VyY2VkVmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuI19kaXNhYmxlZCA9IGNvZXJjZWRWYWx1ZTtcblxuICAgICAgLy8gVXBkYXRlIGZvY3VzYWJsZUNoaWxkcmVuIGluc2lkZSB0aGUgaWZyYW1lLlxuICAgICAgbGV0IGZvY3VzYWJsZUNoaWxkcmVuOiBIVE1MRWxlbWVudFtdO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICh0aGlzLmlmcmFtZVJlZikge1xuICAgICAgICBmb2N1c2FibGVDaGlsZHJlbiA9IHRoaXMuI2NvcmVBZGFwdGVyU2VydmljZS5nZXRGb2N1c2FibGVDaGlsZHJlbihcbiAgICAgICAgICB0aGlzLmlmcmFtZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRlbnREb2N1bWVudC5ib2R5LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlnbm9yZVZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICBpZ25vcmVUYWJJbmRleDogdHJ1ZSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuI19kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmRpc2FibGVFZGl0b3IoXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbixcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmVuYWJsZUVkaXRvcihcbiAgICAgICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuLFxuICAgICAgICAgICAgdGhpcy5pZnJhbWVSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb250cyB0byBpbmNsdWRlIGluIHRoZSBmb250IHBpY2tlci5cbiAgICogQGRlZmF1bHQgW3tuYW1lOiAnQmxhY2tiYXVkIFNhbnMnLCB2YWx1ZTogJ1wiQmxhY2tiYXVkIFNhbnNcIiwgQXJpYWwsIHNhbnMtc2VyaWYnfSwge25hbWU6ICdBcmlhbCcsIHZhbHVlOiAnQXJpYWwnfSwge25hbWU6ICdBcmlhbCBCbGFjaycsIHZhbHVlOiAnXCJBcmlhbCBCbGFja1wiJ30sIHtuYW1lOiAnQ291cmllciBOZXcnLCB2YWx1ZTogJ1wiQ291cmllciBOZXdcIid9LCB7bmFtZTogJ0dlb3JnaWEnLCB2YWx1ZTogJ0dlb3JnaWEsIHNlcmlmJ30sIHtuYW1lOiAnVGFob21hJywgdmFsdWU6ICdUYWhvbWEsIEdlbmV2YSwgc2Fucy1zZXJpZid9LCB7bmFtZTogJ1RpbWVzIE5ldyBSb21hbicsIHZhbHVlOiAnXCJUaW1lcyBOZXcgUm9tYW5cIid9LCB7bmFtZTogJ1RyZWJ1Y2hldCBNUycsIHZhbHVlOiAnXCJUcmVidWNoZXQgTVNcIiwgc2Fucy1zZXJpZid9LCB7bmFtZTogJ1ZlcmRhbmEnLCB2YWx1ZTogJ1ZlcmRhbmEsIEdlbmV2YSwgc2Fucy1zZXJpZid9XVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmb250TGlzdCh2YWx1ZTogU2t5VGV4dEVkaXRvckZvbnRbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19mb250TGlzdCA9IHZhbHVlIHx8IEZPTlRfTElTVF9ERUZBVUxUUztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9udExpc3QoKTogU2t5VGV4dEVkaXRvckZvbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19mb250TGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZm9udCBzaXplcyB0byBpbmNsdWRlIGluIHRoZSBmb250IHNpemUgcGlja2VyLlxuICAgKiBAZGVmYXVsdCBbNiwgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE4LCAyMCwgMjIsIDI0LCAyNiwgMjgsIDM2LCA0OF1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZm9udFNpemVMaXN0KHZhbHVlOiBudW1iZXJbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19mb250U2l6ZUxpc3QgPSB2YWx1ZSB8fCBGT05UX1NJWkVfTElTVF9ERUZBVUxUUztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZm9udFNpemVMaXN0KCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy4jX2ZvbnRTaXplTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIElEIGF0dHJpYnV0ZSBmb3IgdGhlIHRleHQgZWRpdG9yLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29tcG9uZW50IGdlbmVyYXRlcyBhIHJhbmRvbSBJRC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2lkID0gdmFsdWUgfHwgdGhpcy4jZGVmYXVsdElkO1xuICB9XG5cbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCBzdHlsZXMgZm9yIGFsbCBjb250ZW50LCBpbmNsdWRpbmcgYmFja2dyb3VuZCBjb2xvciwgZm9udCBzaXplLCBhbmQgbGluayBzdGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW5pdGlhbFN0eWxlU3RhdGUoc3RhdGU6IFNreVRleHRFZGl0b3JTdHlsZVN0YXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRG8gbm90IHVwZGF0ZSB0aGUgc3RhdGUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gaGFzIHRha2VuIHBsYWNlXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMuI2luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUgPSB7XG4gICAgICAgIC4uLlNUWUxFX1NUQVRFX0RFRkFVTFRTLFxuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpbml0aWFsU3R5bGVTdGF0ZSgpOiBTa3lUZXh0RWRpdG9yU3R5bGVTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuI19pbml0aWFsU3R5bGVTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWVudXMgdG8gaW5jbHVkZSBpbiB0aGUgbWVudSBiYXIuXG4gICAqIEBkZWZhdWx0IFsgJ2VkaXQnLCAnZm9ybWF0JyBdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1lbnVzKHZhbHVlOiBTa3lUZXh0RWRpdG9yTWVudVR5cGVbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tZW51cyA9IHZhbHVlIHx8IE1FTlVfREVGQVVMVFM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVzKCk6IFNreVRleHRFZGl0b3JNZW51VHlwZVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX21lbnVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZXJnZSBmaWVsZHMgdG8gaW5jbHVkZSBpbiB0aGUgbWVyZ2UgZmllbGQgbWVudS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWVyZ2VGaWVsZHModmFsdWU6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWVyZ2VGaWVsZHMgPSB2YWx1ZSB8fCBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVyZ2VGaWVsZHMoKTogU2t5VGV4dEVkaXRvck1lcmdlRmllbGRbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19tZXJnZUZpZWxkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IHRvIGRpc3BsYXkgd2hlbiB0aGUgdGV4dCBlbnRyeSBhcmVhIGlzIGVtcHR5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodmFsdWUgIT09IHRoaXMuI19wbGFjZWhvbGRlcikge1xuICAgICAgdGhpcy4jX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgJyc7XG4gICAgICBpZiAodGhpcy4jaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0UGxhY2Vob2xkZXIodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb25zIHRvIGluY2x1ZGUgaW4gdGhlIHRvb2xiYXIgYW5kIGRldGVybWluZXMgdGhlaXIgb3JkZXIuXG4gICAqIEBkZWZhdWx0IFsgJ2ZvbnQtZmFtaWx5JywgJ2ZvbnQtc2l6ZScsICdmb250LXN0eWxlJywgJ2NvbG9yJywgJ2xpc3QnLCAnbGluayBdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRvb2xiYXJBY3Rpb25zKFxuICAgIHZhbHVlOiBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGVbXSB8IHVuZGVmaW5lZFxuICApIHtcbiAgICB0aGlzLiNfdG9vbGJhckFjdGlvbnMgPSB2YWx1ZSB8fCBUT09MQkFSX0FDVElPTl9ERUZBVUxUUztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9vbGJhckFjdGlvbnMoKTogU2t5VGV4dEVkaXRvclRvb2xiYXJBY3Rpb25UeXBlW10ge1xuICAgIHJldHVybiB0aGlzLiNfdG9vbGJhckFjdGlvbnM7XG4gIH1cblxuICBAVmlld0NoaWxkKCdpZnJhbWUnKVxuICBwdWJsaWMgaWZyYW1lUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgdmFsdWUgb2YgdGhlIGNvbnRyb2wuXG4gICAqL1xuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvLyBOb3JtYWxpemUgdmFsdWUgYW5kIHNldCBhbnkgZW1wdHkgc3RhdGUgdG8gYW4gZW1wdHkgc3RyaW5nLlxuICAgIGxldCBub3JtYWxpemVkVmFsdWU6IHN0cmluZztcbiAgICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZT8udHJpbSgpO1xuXG4gICAgaWYgKFxuICAgICAgIXZhbHVlIHx8XG4gICAgICB2YWx1ZVRyaW1tZWQgPT09ICc8cD48L3A+JyB8fFxuICAgICAgdmFsdWVUcmltbWVkID09PSAnPGJyPicgfHxcbiAgICAgIHZhbHVlVHJpbW1lZCA9PT0gJzxwPjxicj48L3A+J1xuICAgICkge1xuICAgICAgbm9ybWFsaXplZFZhbHVlID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMuI3Nhbml0aXphdGlvblNlcnZpY2VcbiAgICAgIC5zYW5pdGl6ZShub3JtYWxpemVkVmFsdWUpXG4gICAgICAudHJpbSgpO1xuXG4gICAgaWYgKHRoaXMuI192YWx1ZSAhPT0gbm9ybWFsaXplZFZhbHVlKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG5cbiAgICAgIC8vIFVwZGF0ZSBhbmd1bGFyIGZvcm0gY29udHJvbCBpZiBtb2RlbCBoYXMgYmVlbiBub3JtYWxpemVkLlxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy4jbmdDb250cm9sPy5jb250cm9sICYmXG4gICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSAhPT0gdGhpcy4jbmdDb250cm9sLmNvbnRyb2wudmFsdWVcbiAgICAgICkge1xuICAgICAgICB0aGlzLiNuZ0NvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVkVmFsdWUsIHtcbiAgICAgICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gQXV0b2ZvY3VzIGlzbid0IHRlc3RhYmxlIGluIEZpcmVmb3ggYW5kIElFLlxuICAgICAgLy8gRG9uJ3Qgc2V0IGZvY3VzIG9uIHRoZSBlZGl0b3Igbm93IGlmIHRoZSBpZnJhbWUgaXNuJ3QgaW5pdGlhbGl6ZWQuXG4gICAgICAvLyAjaW5pdElmcmFtZSgpIHdpbGwgZG8gYW5vdGhlciBjaGVjayBsYXRlciB0byBzZWUgaWYgdGhlIGVkaXRvciBzaG91bGRcbiAgICAgIC8vIHJlY2VpdmUgZm9jdXMuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKHRoaXMuYXV0b2ZvY3VzICYmIHRoaXMuI2luaXRpYWxpemVkICYmICF0aGlzLiNmb2N1c0luaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmZvY3VzRWRpdG9yKCk7XG4gICAgICAgIHRoaXMuI2ZvY3VzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBpbnB1dFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZWRpdG9yRm9jdXNTdHJlYW0gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2t5LWZvcm0tY29udHJvbCcpXG4gIHB1YmxpYyBmb3JtQ29udHJvbENsYXNzID0gISFpbmplY3QoU2t5SW5wdXRCb3hIb3N0U2VydmljZSwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcblxuICAjZGVmYXVsdElkOiBzdHJpbmc7XG4gICNpZDogc3RyaW5nO1xuICAjZm9jdXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAjaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjY29yZUFkYXB0ZXJTZXJ2aWNlOiBTa3lDb3JlQWRhcHRlclNlcnZpY2U7XG4gICNhZGFwdGVyU2VydmljZTogU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlO1xuICAjZWRpdG9yU2VydmljZTogU2t5VGV4dEVkaXRvclNlcnZpY2U7XG4gICNzYW5pdGl6YXRpb25TZXJ2aWNlOiBTa3lUZXh0U2FuaXRpemF0aW9uU2VydmljZTtcbiAgI25nQ29udHJvbDogTmdDb250cm9sO1xuICAjem9uZTogTmdab25lO1xuXG4gICNfZm9udExpc3QgPSBGT05UX0xJU1RfREVGQVVMVFM7XG4gICNfZm9udFNpemVMaXN0ID0gRk9OVF9TSVpFX0xJU1RfREVGQVVMVFM7XG4gICNfbWVyZ2VGaWVsZHM6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkW10gPSBbXTtcbiAgI19tZW51cyA9IE1FTlVfREVGQVVMVFM7XG4gICNfdG9vbGJhckFjdGlvbnM6IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZVtdID0gVE9PTEJBUl9BQ1RJT05fREVGQVVMVFM7XG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcbiAgI19pbml0aWFsU3R5bGVTdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIFNUWUxFX1NUQVRFX0RFRkFVTFRTKTtcbiAgI19wbGFjZWhvbGRlciA9ICcnO1xuICAjX3ZhbHVlID0gJzxwPjwvcD4nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBjb3JlQWRhcHRlclNlcnZpY2U6IFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgICBhZGFwdGVyU2VydmljZTogU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlLFxuICAgIGVkaXRvclNlcnZpY2U6IFNreVRleHRFZGl0b3JTZXJ2aWNlLFxuICAgIHNhbml0aXphdGlvblNlcnZpY2U6IFNreVRleHRTYW5pdGl6YXRpb25TZXJ2aWNlLFxuICAgIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIHpvbmU6IE5nWm9uZSxcbiAgICBpZFN2YzogU2t5SWRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jY29yZUFkYXB0ZXJTZXJ2aWNlID0gY29yZUFkYXB0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlID0gYWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jZWRpdG9yU2VydmljZSA9IGVkaXRvclNlcnZpY2U7XG4gICAgdGhpcy4jc2FuaXRpemF0aW9uU2VydmljZSA9IHNhbml0aXphdGlvblNlcnZpY2U7XG4gICAgdGhpcy4jbmdDb250cm9sID0gbmdDb250cm9sO1xuICAgIHRoaXMuI3pvbmUgPSB6b25lO1xuXG4gICAgdGhpcy4jaWQgPSB0aGlzLiNkZWZhdWx0SWQgPSBpZFN2Yy5nZW5lcmF0ZUlkKCk7XG5cbiAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2luaXRJZnJhbWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5yZW1vdmVPYnNlcnZlcnModGhpcy4jZWRpdG9yU2VydmljZS5lZGl0b3IpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbklmcmFtZUxvYWQoKTogdm9pZCB7XG4gICAgLy8gUmVpbml0aWFsaXplIHRoZSBlZGl0b3IgaWYgaXQgYWxyZWFkeSBleGlzdHMgdG8gY292ZXIgc2l0dWF0aW9ucyB3aGVyZSB0aGUgdGV4dCBlZGl0b3IgbWlnaHQgaGF2ZSBiZWVuIG1vdmVkIGluIHRoZSBET00uXG4gICAgaWYgKHRoaXMuI2VkaXRvclNlcnZpY2UuaXNJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy4jaW5pdElmcmFtZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblxuICAgIC8vIFVwZGF0ZSBIVE1MIGlmIG5lY2Vzc2FyeS5cbiAgICBpZiAodGhpcy4jaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGNvbnN0IGVkaXRvclZhbHVlID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0RWRpdG9ySW5uZXJIdG1sKCk7XG4gICAgICBpZiAoZWRpdG9yVmFsdWUgIT09IHRoaXMuI192YWx1ZSkge1xuICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRFZGl0b3JJbm5lckh0bWwodGhpcy4jX3ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI19vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gICN1cGRhdGVTdHlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUgPSB7XG4gICAgICAuLi50aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUsXG4gICAgICAuLi50aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTdHlsZVN0YXRlKCksXG4gICAgfTtcbiAgfVxuXG4gICNpbml0SWZyYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmluaXRFZGl0b3IoXG4gICAgICB0aGlzLmlkLFxuICAgICAgKHRoaXMuaWZyYW1lUmVmIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLmluaXRpYWxTdHlsZVN0YXRlLFxuICAgICAgdGhpcy5wbGFjZWhvbGRlclxuICAgICk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuaW5wdXRMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBjaGFuZ2VzIG9yaWdpbmF0aW5nIGluc2lkZSBhbiBpZnJhbWUsXG4gICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gY2FsbCB0aGUgb25DaGFuZ2UoKSBldmVudCBpbnNpZGUgTmdab25lIHRvIGZvcmNlIGNoYW5nZSBwcm9wYWdhdGlvbiB0byBjb25zdW1pbmcgY29tcG9uZW50cy5cbiAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI3ZpZXdUb01vZGVsVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuc2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZVN0eWxlKCk7XG4gICAgICAgIHRoaXMuZWRpdG9yRm9jdXNTdHJlYW0ubmV4dCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuY2xpY2tMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5lZGl0b3JGb2N1c1N0cmVhbS5uZXh0KCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5ibHVyTGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBydW4gY2hhbmdlIGRldGVjdGlvbiBmb3IgY2hhbmdlcyBvcmlnaW5hdGluZyBpbnNpZGUgYW4gaWZyYW1lLFxuICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIHJ1biBtYXJrRm9yQ2hlY2soKSBpbnNpZGUgdGhlIE5nWm9uZSB0byBmb3JjZSBjaGFuZ2UgcHJvcGFnYXRpb24gdG8gY29uc3VtaW5nIGNvbXBvbmVudHMuXG4gICAgICAgIHRoaXMuI3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNfb25Ub3VjaGVkKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuY29tbWFuZENoYW5nZUxpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiN1cGRhdGVTdHlsZSgpO1xuICAgICAgICB0aGlzLiN2aWV3VG9Nb2RlbFVwZGF0ZSgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRFZGl0b3JJbm5lckh0bWwodGhpcy4jX3ZhbHVlKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XG4gICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5mb2N1c0VkaXRvcigpO1xuICAgIH1cblxuICAgIHRoaXMuI2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gICN2aWV3VG9Nb2RlbFVwZGF0ZShlbWl0Q2hhbmdlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRFZGl0b3JJbm5lckh0bWwoKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChlbWl0Q2hhbmdlKSB7XG4gICAgICB0aGlzLiNfb25DaGFuZ2UodGhpcy4jX3ZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAjX29uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIH07XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgI19vbkNoYW5nZTogKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdmFsdWU6IGFueVxuICApID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cInNreS10ZXh0LWVkaXRvclwiPlxuICA8c2t5LXRvb2xiYXJcbiAgICAqbmdJZj1cIlxuICAgICAgKG1lbnVzICYmIG1lbnVzLmxlbmd0aCkgPiAwIHx8XG4gICAgICAodG9vbGJhckFjdGlvbnMgJiYgdG9vbGJhckFjdGlvbnMubGVuZ3RoID4gMClcbiAgICBcIlxuICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLXRvb2xiYXJcIlxuICA+XG4gICAgPHNreS10b29sYmFyLXNlY3Rpb25cbiAgICAgICpuZ0lmPVwibWVudXMgJiYgbWVudXMubGVuZ3RoID4gMFwiXG4gICAgICBhcmlhLWxhYmVsPVwiVGV4dCBmb3JtYXR0aW5nXCJcbiAgICAgIGNsYXNzPVwibWVudWJhclwiXG4gICAgICByb2xlPVwidG9vbGJhclwiXG4gICAgPlxuICAgICAgPHNreS10ZXh0LWVkaXRvci1tZW51YmFyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtlZGl0b3JGb2N1c1N0cmVhbV09XCJlZGl0b3JGb2N1c1N0cmVhbVwiXG4gICAgICAgIFttZW51c109XCJtZW51c1wiXG4gICAgICAgIFttZXJnZUZpZWxkc109XCJtZXJnZUZpZWxkc1wiXG4gICAgICA+XG4gICAgICA8L3NreS10ZXh0LWVkaXRvci1tZW51YmFyPlxuICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgICA8c2t5LXRvb2xiYXItc2VjdGlvblxuICAgICAgKm5nSWY9XCJ0b29sYmFyQWN0aW9ucyAmJiB0b29sYmFyQWN0aW9ucy5sZW5ndGggPiAwXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJUZXh0IGZvcm1hdHRpbmdcIlxuICAgICAgY2xhc3M9XCJ0b29sYmFyXCJcbiAgICAgIHJvbGU9XCJ0b29sYmFyXCJcbiAgICA+XG4gICAgICA8c2t5LXRleHQtZWRpdG9yLXRvb2xiYXJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2VkaXRvckZvY3VzU3RyZWFtXT1cImVkaXRvckZvY3VzU3RyZWFtXCJcbiAgICAgICAgW2ZvbnRMaXN0XT1cImZvbnRMaXN0XCJcbiAgICAgICAgW2ZvbnRTaXplTGlzdF09XCJmb250U2l6ZUxpc3RcIlxuICAgICAgICBbdG9vbGJhckFjdGlvbnNdPVwidG9vbGJhckFjdGlvbnNcIlxuICAgICAgICBbc3R5bGVTdGF0ZV09XCJpbml0aWFsU3R5bGVTdGF0ZVwiXG4gICAgICA+XG4gICAgICA8L3NreS10ZXh0LWVkaXRvci10b29sYmFyPlxuICAgIDwvc2t5LXRvb2xiYXItc2VjdGlvbj5cbiAgPC9za3ktdG9vbGJhcj5cbiAgPGlmcmFtZVxuICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLXdyYXBwZXJcIlxuICAgIHNyYz1cImFib3V0OmJsYW5rXCJcbiAgICB0aXRsZT1cIlRleHQgRWRpdG9yXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LXRleHQtZWRpdG9yLXdyYXBwZXItZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgIH1cIlxuICAgIChsb2FkKT1cIm9uSWZyYW1lTG9hZCgpXCJcbiAgICAjaWZyYW1lXG4gID5cbiAgPC9pZnJhbWU+XG48L2Rpdj5cbiJdfQ==
@@ -16,8 +16,8 @@ import * as i2 from "@skyux/modals";
16
16
  import * as i3 from "@angular/common";
17
17
  import * as i4 from "@angular/forms";
18
18
  import * as i5 from "@skyux/indicators";
19
- import * as i6 from "@skyux/colorpicker";
20
- import * as i7 from "@skyux/forms";
19
+ import * as i6 from "@skyux/forms";
20
+ import * as i7 from "@skyux/colorpicker";
21
21
  import * as i8 from "@skyux/popovers";
22
22
  import * as i9 from "@skyux/theme";
23
23
  import * as i10 from "@skyux/layout";
@@ -184,10 +184,10 @@ _SkyTextEditorToolbarComponent_editorFocusStreamSub = new WeakMap(), _SkyTextEdi
184
184
  return undefined;
185
185
  };
186
186
  SkyTextEditorToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTextEditorToolbarComponent, deps: [{ token: i1.SkyTextEditorAdapterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyModalService }], target: i0.ɵɵFactoryTarget.Component });
187
- SkyTextEditorToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTextEditorToolbarComponent, selector: "sky-text-editor-toolbar", inputs: { editorFocusStream: "editorFocusStream", fontList: "fontList", fontSizeList: "fontSizeList", toolbarActions: "toolbarActions", styleState: "styleState", disabled: "disabled" }, ngImport: i0, template: "<sky-toolbar-item\n *ngFor=\"let action of toolbarActions\"\n class=\"sky-text-editor-toolbar-action\"\n [ngClass]=\"'sky-text-editor-toolbar-action-' + action\"\n>\n <ng-container [ngSwitch]=\"action\">\n <ng-container *ngSwitchCase=\"'font-family'\">\n <sky-dropdown\n class=\"sky-text-editor-font-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font: ' + styleStateFontName\"\n [messageStream]=\"fontPickerStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.font\n }\"\n >\n {{ styleStateFontName }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let fontModel of fontList\">\n <button\n type=\"button\"\n [ngStyle]=\"{\n 'font-family': fontModel.value\n }\"\n (click)=\"execCommand('fontname', fontModel.name)\"\n >\n {{ fontModel.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-size'\">\n <sky-dropdown\n class=\"sky-text-editor-font-size-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font size: ' + styleState.fontSize + 'px'\"\n [messageStream]=\"fontSizeStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.fontSize\n }\"\n >\n {{ styleState.fontSize + 'px' }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let size of fontSizeList\">\n <button type=\"button\" (click)=\"changeFontSize(size)\">\n {{ size + 'px' }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-style'\">\n <div class=\"sky-switch-icon-group sky-text-editor-font-style-picker\">\n <sky-checkbox\n icon=\"bold\"\n label=\"Bold\"\n title=\"Bold\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.boldState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.boldState, $event, 'bold')\n \"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"italic\"\n label=\"Italicized\"\n title=\"Italicized\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.italicState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.italicState, $event, 'italic')\n \"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"underline\"\n label=\"Underline\"\n title=\"Underline\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.underlineState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.underlineState, $event, 'underline')\n \"\n >\n </sky-checkbox>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'color'\">\n <div class=\"sky-text-editor-colorpicker-group\">\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-font-color-picker\"\n label=\"Font color\"\n [messageStream]=\"colorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event)\"\n #colorPicker\n >\n <input\n outputFormat=\"hex\"\n type=\"text\"\n [allowTransparency]=\"false\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.fontColor\"\n [skyColorpickerInput]=\"colorPicker\"\n />\n </sky-colorpicker>\n </div>\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-background-color-picker\"\n label=\"Background color\"\n [messageStream]=\"backColorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event, true)\"\n #backColorPicker\n >\n <input\n outputFormat=\"rgba\"\n type=\"text\"\n [allowTransparency]=\"true\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.backColor\"\n [skyColorpickerInput]=\"backColorPicker\"\n />\n </sky-colorpicker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'list'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Bulleted list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Bulleted list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertUnorderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"list-ul\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"bullet-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Numbered list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Numbered list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertOrderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"list-ol\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"number-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'alignment'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Align left\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align left\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyLeft')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-left\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"align-left-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align center\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align center\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyCenter')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-center\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"center-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align right\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align right\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyRight')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-right\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"align-right-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'indentation'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Outdent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Outdent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('outdent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"outdent\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"outdent-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Indent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Indent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('indent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"indent\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"indent-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'undo-redo'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Undo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Undo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('undo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"undo\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"undo-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Redo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Redo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('redo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"repeat\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"redo-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'link'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Link\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Link\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'icon-btn-active': styleState.linkState\n }\"\n (click)=\"link()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"link\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"link-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Unlink\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Unlink\"\n [disabled]=\"!styleState.linkState || disabled\"\n (click)=\"unlink()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"unlink\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"unlink-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n", styles: [".sky-text-editor-toolbar-action .sky-toolbar-item{margin-right:15px}.sky-text-editor-toolbar-action .sky-text-editor-font-picker ::ng-deep .sky-dropdown-button-content-container{width:140px;height:20px;text-align:left}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group{display:flex}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{position:relative;top:3px;margin:0 10px 0 0}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child{margin-right:0}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn{margin-left:0;margin-right:0;border-radius:0;border-right:none}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:first-of-type{border-top-left-radius:3px;border-bottom-left-radius:3px}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border-top-right-radius:3px;border-bottom-right-radius:3px;border-right:1px solid #cdcfd2}:host-context(.sky-theme-modern) .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{top:-2px;margin:0}:host-context(.sky-theme-modern) .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child ::ng-deep sky-colorpicker .sky-colorpicker-button{margin-right:0}:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn{margin:inherit;border-radius:6px}:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn:first-of-type,:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn:last-of-type{border-radius:6px}:host-context(.sky-theme-modern) .sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border:none}.sky-theme-modern .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{top:-2px;margin:0}.sky-theme-modern .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child ::ng-deep sky-colorpicker .sky-colorpicker-button{margin-right:0}.sky-theme-modern .sky-switch-icon-group .sky-btn{margin:inherit;border-radius:6px}.sky-theme-modern .sky-switch-icon-group .sky-btn:first-of-type,.sky-theme-modern .sky-switch-icon-group .sky-btn:last-of-type{border-radius:6px}.sky-theme-modern .sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border:none}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "component", type: i6.λ1, selector: "sky-colorpicker", inputs: ["pickerButtonIcon", "pickerButtonIconType", "label", "labelledBy", "messageStream", "showResetButton"], outputs: ["selectedColorChanged", "selectedColorApplied"] }, { kind: "directive", type: i6.λ2, selector: "[skyColorpickerInput]", inputs: ["skyColorpickerInput", "initialColor", "returnFormat", "outputFormat", "presetColors", "alphaChannel", "allowTransparency"] }, { kind: "component", type: i7.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "indeterminate", "required"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }, { kind: "component", type: i8.λ2, selector: "sky-dropdown-button" }, { kind: "component", type: i8.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { kind: "component", type: i8.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { kind: "component", type: i8.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { kind: "directive", type: i9.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "component", type: i10.λ39, selector: "sky-toolbar-item" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
187
+ SkyTextEditorToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTextEditorToolbarComponent, selector: "sky-text-editor-toolbar", inputs: { editorFocusStream: "editorFocusStream", fontList: "fontList", fontSizeList: "fontSizeList", toolbarActions: "toolbarActions", styleState: "styleState", disabled: "disabled" }, ngImport: i0, template: "<sky-toolbar-item\n *ngFor=\"let action of toolbarActions\"\n class=\"sky-text-editor-toolbar-action\"\n [ngClass]=\"'sky-text-editor-toolbar-action-' + action\"\n>\n <ng-container [ngSwitch]=\"action\">\n <ng-container *ngSwitchCase=\"'font-family'\">\n <sky-dropdown\n class=\"sky-text-editor-font-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font: ' + styleStateFontName\"\n [messageStream]=\"fontPickerStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.font\n }\"\n >\n {{ styleStateFontName }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let fontModel of fontList\">\n <button\n type=\"button\"\n [ngStyle]=\"{\n 'font-family': fontModel.value\n }\"\n (click)=\"execCommand('fontname', fontModel.name)\"\n >\n {{ fontModel.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-size'\">\n <sky-dropdown\n class=\"sky-text-editor-font-size-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font size: ' + styleState.fontSize + 'px'\"\n [messageStream]=\"fontSizeStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.fontSize\n }\"\n >\n {{ styleState.fontSize + 'px' }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let size of fontSizeList\">\n <button type=\"button\" (click)=\"changeFontSize(size)\">\n {{ size + 'px' }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-style'\">\n <div class=\"sky-switch-icon-group sky-text-editor-font-style-picker\">\n <sky-checkbox\n icon=\"bold\"\n label=\"Bold\"\n title=\"Bold\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.boldState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.boldState, $event, 'bold')\n \"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"italic\"\n label=\"Italicized\"\n title=\"Italicized\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.italicState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.italicState, $event, 'italic')\n \"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"underline\"\n label=\"Underline\"\n title=\"Underline\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.underlineState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.underlineState, $event, 'underline')\n \"\n >\n </sky-checkbox>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'color'\">\n <div class=\"sky-text-editor-colorpicker-group\">\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-font-color-picker\"\n label=\"Font color\"\n [messageStream]=\"colorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event)\"\n pickerButtonIcon=\"highlighter\"\n pickerButtonIconType=\"skyux\"\n #colorPicker\n >\n <input\n outputFormat=\"hex\"\n type=\"text\"\n [allowTransparency]=\"false\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.fontColor\"\n [skyColorpickerInput]=\"colorPicker\"\n />\n </sky-colorpicker>\n </div>\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-background-color-picker\"\n label=\"Background color\"\n [messageStream]=\"backColorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event, true)\"\n #backColorPicker\n pickerButtonIcon=\"text-color\"\n pickerButtonIconType=\"skyux\"\n >\n <input\n outputFormat=\"rgba\"\n type=\"text\"\n [allowTransparency]=\"true\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.backColor\"\n [skyColorpickerInput]=\"backColorPicker\"\n />\n </sky-colorpicker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'list'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Bulleted list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Bulleted list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertUnorderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"list-ul\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"bullet-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Numbered list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Numbered list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertOrderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"list-ol\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"number-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'alignment'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Align left\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align left\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyLeft')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-left\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"align-left-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align center\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align center\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyCenter')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-center\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"center-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align right\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align right\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyRight')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-right\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"align-right-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'indentation'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Outdent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Outdent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('outdent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"outdent\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"outdent-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Indent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Indent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('indent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"indent\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"indent-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'undo-redo'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Undo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Undo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('undo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"undo\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"undo-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Redo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Redo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('redo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"repeat\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"redo-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'link'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Link\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Link\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'icon-btn-active': styleState.linkState\n }\"\n (click)=\"link()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"link\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"link-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Unlink\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Unlink\"\n [disabled]=\"!styleState.linkState || disabled\"\n (click)=\"unlink()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"unlink\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"unlink-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n", styles: [".sky-text-editor-toolbar-action .sky-toolbar-item{margin-right:15px}.sky-text-editor-toolbar-action .sky-text-editor-font-picker ::ng-deep .sky-dropdown-button-content-container{width:140px;height:20px;text-align:left}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group{display:flex}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{position:relative;top:3px;margin:0 10px 0 0}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child{margin-right:0}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn{margin-left:0;margin-right:0;border-radius:0;border-right:none}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:first-of-type{border-top-left-radius:3px;border-bottom-left-radius:3px}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border-top-right-radius:3px;border-bottom-right-radius:3px;border-right:1px solid #cdcfd2}:host-context(.sky-theme-modern) .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{top:-2px;margin:0}:host-context(.sky-theme-modern) .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child ::ng-deep sky-colorpicker .sky-colorpicker-button{margin-right:0}:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn{margin:inherit;border-radius:6px}:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn:first-of-type,:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn:last-of-type{border-radius:6px}:host-context(.sky-theme-modern) .sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border:none}.sky-theme-modern .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{top:-2px;margin:0}.sky-theme-modern .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child ::ng-deep sky-colorpicker .sky-colorpicker-button{margin-right:0}.sky-theme-modern .sky-switch-icon-group .sky-btn{margin:inherit;border-radius:6px}.sky-theme-modern .sky-switch-icon-group .sky-btn:first-of-type,.sky-theme-modern .sky-switch-icon-group .sky-btn:last-of-type{border-radius:6px}.sky-theme-modern .sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border:none}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { kind: "directive", type: i6.λ20, selector: "input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)" }, { kind: "component", type: i7.λ1, selector: "sky-colorpicker", inputs: ["pickerButtonIcon", "pickerButtonIconType", "label", "labelledBy", "messageStream", "showResetButton"], outputs: ["selectedColorChanged", "selectedColorApplied"] }, { kind: "directive", type: i7.λ2, selector: "[skyColorpickerInput]", inputs: ["skyColorpickerInput", "initialColor", "returnFormat", "outputFormat", "presetColors", "alphaChannel", "allowTransparency"] }, { kind: "component", type: i6.λ3, selector: "sky-checkbox", inputs: ["label", "labelledBy", "id", "disabled", "tabindex", "name", "icon", "checkboxType", "checked", "indeterminate", "required"], outputs: ["change", "checkedChange", "disabledChange", "indeterminateChange"] }, { kind: "component", type: i8.λ2, selector: "sky-dropdown-button" }, { kind: "component", type: i8.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { kind: "component", type: i8.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { kind: "component", type: i8.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { kind: "directive", type: i9.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { kind: "component", type: i10.λ39, selector: "sky-toolbar-item" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
188
188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTextEditorToolbarComponent, decorators: [{
189
189
  type: Component,
190
- args: [{ selector: 'sky-text-editor-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-toolbar-item\n *ngFor=\"let action of toolbarActions\"\n class=\"sky-text-editor-toolbar-action\"\n [ngClass]=\"'sky-text-editor-toolbar-action-' + action\"\n>\n <ng-container [ngSwitch]=\"action\">\n <ng-container *ngSwitchCase=\"'font-family'\">\n <sky-dropdown\n class=\"sky-text-editor-font-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font: ' + styleStateFontName\"\n [messageStream]=\"fontPickerStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.font\n }\"\n >\n {{ styleStateFontName }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let fontModel of fontList\">\n <button\n type=\"button\"\n [ngStyle]=\"{\n 'font-family': fontModel.value\n }\"\n (click)=\"execCommand('fontname', fontModel.name)\"\n >\n {{ fontModel.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-size'\">\n <sky-dropdown\n class=\"sky-text-editor-font-size-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font size: ' + styleState.fontSize + 'px'\"\n [messageStream]=\"fontSizeStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.fontSize\n }\"\n >\n {{ styleState.fontSize + 'px' }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let size of fontSizeList\">\n <button type=\"button\" (click)=\"changeFontSize(size)\">\n {{ size + 'px' }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-style'\">\n <div class=\"sky-switch-icon-group sky-text-editor-font-style-picker\">\n <sky-checkbox\n icon=\"bold\"\n label=\"Bold\"\n title=\"Bold\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.boldState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.boldState, $event, 'bold')\n \"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"italic\"\n label=\"Italicized\"\n title=\"Italicized\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.italicState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.italicState, $event, 'italic')\n \"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"underline\"\n label=\"Underline\"\n title=\"Underline\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.underlineState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.underlineState, $event, 'underline')\n \"\n >\n </sky-checkbox>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'color'\">\n <div class=\"sky-text-editor-colorpicker-group\">\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-font-color-picker\"\n label=\"Font color\"\n [messageStream]=\"colorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event)\"\n #colorPicker\n >\n <input\n outputFormat=\"hex\"\n type=\"text\"\n [allowTransparency]=\"false\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.fontColor\"\n [skyColorpickerInput]=\"colorPicker\"\n />\n </sky-colorpicker>\n </div>\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-background-color-picker\"\n label=\"Background color\"\n [messageStream]=\"backColorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event, true)\"\n #backColorPicker\n >\n <input\n outputFormat=\"rgba\"\n type=\"text\"\n [allowTransparency]=\"true\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.backColor\"\n [skyColorpickerInput]=\"backColorPicker\"\n />\n </sky-colorpicker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'list'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Bulleted list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Bulleted list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertUnorderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"list-ul\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"bullet-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Numbered list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Numbered list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertOrderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"list-ol\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"number-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'alignment'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Align left\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align left\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyLeft')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-left\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"align-left-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align center\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align center\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyCenter')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-center\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"center-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align right\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align right\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyRight')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-right\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"align-right-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'indentation'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Outdent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Outdent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('outdent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"outdent\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"outdent-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Indent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Indent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('indent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"indent\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"indent-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'undo-redo'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Undo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Undo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('undo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"undo\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"undo-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Redo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Redo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('redo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"repeat\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"redo-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'link'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Link\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Link\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'icon-btn-active': styleState.linkState\n }\"\n (click)=\"link()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"link\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"link-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Unlink\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Unlink\"\n [disabled]=\"!styleState.linkState || disabled\"\n (click)=\"unlink()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"unlink\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"unlink-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n", styles: [".sky-text-editor-toolbar-action .sky-toolbar-item{margin-right:15px}.sky-text-editor-toolbar-action .sky-text-editor-font-picker ::ng-deep .sky-dropdown-button-content-container{width:140px;height:20px;text-align:left}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group{display:flex}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{position:relative;top:3px;margin:0 10px 0 0}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child{margin-right:0}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn{margin-left:0;margin-right:0;border-radius:0;border-right:none}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:first-of-type{border-top-left-radius:3px;border-bottom-left-radius:3px}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border-top-right-radius:3px;border-bottom-right-radius:3px;border-right:1px solid #cdcfd2}:host-context(.sky-theme-modern) .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{top:-2px;margin:0}:host-context(.sky-theme-modern) .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child ::ng-deep sky-colorpicker .sky-colorpicker-button{margin-right:0}:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn{margin:inherit;border-radius:6px}:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn:first-of-type,:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn:last-of-type{border-radius:6px}:host-context(.sky-theme-modern) .sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border:none}.sky-theme-modern .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{top:-2px;margin:0}.sky-theme-modern .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child ::ng-deep sky-colorpicker .sky-colorpicker-button{margin-right:0}.sky-theme-modern .sky-switch-icon-group .sky-btn{margin:inherit;border-radius:6px}.sky-theme-modern .sky-switch-icon-group .sky-btn:first-of-type,.sky-theme-modern .sky-switch-icon-group .sky-btn:last-of-type{border-radius:6px}.sky-theme-modern .sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border:none}\n"] }]
190
+ args: [{ selector: 'sky-text-editor-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-toolbar-item\n *ngFor=\"let action of toolbarActions\"\n class=\"sky-text-editor-toolbar-action\"\n [ngClass]=\"'sky-text-editor-toolbar-action-' + action\"\n>\n <ng-container [ngSwitch]=\"action\">\n <ng-container *ngSwitchCase=\"'font-family'\">\n <sky-dropdown\n class=\"sky-text-editor-font-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font: ' + styleStateFontName\"\n [messageStream]=\"fontPickerStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.font\n }\"\n >\n {{ styleStateFontName }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let fontModel of fontList\">\n <button\n type=\"button\"\n [ngStyle]=\"{\n 'font-family': fontModel.value\n }\"\n (click)=\"execCommand('fontname', fontModel.name)\"\n >\n {{ fontModel.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-size'\">\n <sky-dropdown\n class=\"sky-text-editor-font-size-picker\"\n [disabled]=\"disabled\"\n [label]=\"'Font size: ' + styleState.fontSize + 'px'\"\n [messageStream]=\"fontSizeStream\"\n >\n <sky-dropdown-button\n [ngStyle]=\"{\n 'font-family': styleState.fontSize\n }\"\n >\n {{ styleState.fontSize + 'px' }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let size of fontSizeList\">\n <button type=\"button\" (click)=\"changeFontSize(size)\">\n {{ size + 'px' }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'font-style'\">\n <div class=\"sky-switch-icon-group sky-text-editor-font-style-picker\">\n <sky-checkbox\n icon=\"bold\"\n label=\"Bold\"\n title=\"Bold\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.boldState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.boldState, $event, 'bold')\n \"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"italic\"\n label=\"Italicized\"\n title=\"Italicized\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.italicState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.italicState, $event, 'italic')\n \"\n >\n </sky-checkbox>\n <sky-checkbox\n icon=\"underline\"\n label=\"Underline\"\n title=\"Underline\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.underlineState\"\n (ngModelChange)=\"\n toggleFontStyle(styleState.underlineState, $event, 'underline')\n \"\n >\n </sky-checkbox>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'color'\">\n <div class=\"sky-text-editor-colorpicker-group\">\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-font-color-picker\"\n label=\"Font color\"\n [messageStream]=\"colorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event)\"\n pickerButtonIcon=\"highlighter\"\n pickerButtonIconType=\"skyux\"\n #colorPicker\n >\n <input\n outputFormat=\"hex\"\n type=\"text\"\n [allowTransparency]=\"false\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.fontColor\"\n [skyColorpickerInput]=\"colorPicker\"\n />\n </sky-colorpicker>\n </div>\n <div class=\"sky-text-editor-colorpicker-container\">\n <sky-colorpicker\n class=\"sky-text-editor-background-color-picker\"\n label=\"Background color\"\n [messageStream]=\"backColorpickerStream\"\n [showResetButton]=\"false\"\n (selectedColorChanged)=\"onColorpickerColorChanged($event, true)\"\n #backColorPicker\n pickerButtonIcon=\"text-color\"\n pickerButtonIconType=\"skyux\"\n >\n <input\n outputFormat=\"rgba\"\n type=\"text\"\n [allowTransparency]=\"true\"\n [disabled]=\"disabled\"\n [ngModel]=\"styleState.backColor\"\n [skyColorpickerInput]=\"backColorPicker\"\n />\n </sky-colorpicker>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'list'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Bulleted list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Bulleted list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertUnorderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"list-ul\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"bullet-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Numbered list\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Numbered list\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('insertOrderedList')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"list-ol\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"number-list-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'alignment'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Align left\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align left\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyLeft')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-left\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"align-left-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align center\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align center\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyCenter')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-center\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"center-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button\n aria-label=\"Align right\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Align right\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('justifyRight')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"align-right\"> </sky-icon>\n <sky-icon\n *skyThemeIf=\"'modern'\"\n icon=\"align-right-text-line\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'indentation'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Outdent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Outdent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('outdent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"outdent\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"outdent-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Indent\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Indent\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('indent')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"indent\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"indent-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'undo-redo'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Undo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Undo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('undo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"undo\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"undo-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Redo\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Redo\"\n [disabled]=\"disabled\"\n (click)=\"execCommand('redo')\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"repeat\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"redo-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'link'\">\n <div class=\"sky-switch-icon-group\">\n <button\n aria-label=\"Link\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Link\"\n [disabled]=\"disabled\"\n [ngClass]=\"{\n 'icon-btn-active': styleState.linkState\n }\"\n (click)=\"link()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"link\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"link-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n <button\n aria-label=\"Unlink\"\n class=\"sky-btn sky-btn-default sky-btn-icon\"\n title=\"Unlink\"\n [disabled]=\"!styleState.linkState || disabled\"\n (click)=\"unlink()\"\n >\n <sky-icon *skyThemeIf=\"'default'\" icon=\"unlink\"> </sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\" icon=\"unlink-line\" iconType=\"skyux\">\n </sky-icon>\n </button>\n </div>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n", styles: [".sky-text-editor-toolbar-action .sky-toolbar-item{margin-right:15px}.sky-text-editor-toolbar-action .sky-text-editor-font-picker ::ng-deep .sky-dropdown-button-content-container{width:140px;height:20px;text-align:left}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group{display:flex}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{position:relative;top:3px;margin:0 10px 0 0}.sky-text-editor-toolbar-action .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child{margin-right:0}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn{margin-left:0;margin-right:0;border-radius:0;border-right:none}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:first-of-type{border-top-left-radius:3px;border-bottom-left-radius:3px}.sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border-top-right-radius:3px;border-bottom-right-radius:3px;border-right:1px solid #cdcfd2}:host-context(.sky-theme-modern) .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{top:-2px;margin:0}:host-context(.sky-theme-modern) .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child ::ng-deep sky-colorpicker .sky-colorpicker-button{margin-right:0}:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn{margin:inherit;border-radius:6px}:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn:first-of-type,:host-context(.sky-theme-modern) .sky-switch-icon-group .sky-btn:last-of-type{border-radius:6px}:host-context(.sky-theme-modern) .sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border:none}.sky-theme-modern .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container{top:-2px;margin:0}.sky-theme-modern .sky-text-editor-colorpicker-group .sky-text-editor-colorpicker-container:last-child ::ng-deep sky-colorpicker .sky-colorpicker-button{margin-right:0}.sky-theme-modern .sky-switch-icon-group .sky-btn{margin:inherit;border-radius:6px}.sky-theme-modern .sky-switch-icon-group .sky-btn:first-of-type,.sky-theme-modern .sky-switch-icon-group .sky-btn:last-of-type{border-radius:6px}.sky-theme-modern .sky-text-editor-toolbar-action .sky-switch-icon-group .sky-btn:last-of-type{border:none}\n"] }]
191
191
  }], ctorParameters: function () { return [{ type: i1.SkyTextEditorAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyModalService }]; }, propDecorators: { editorFocusStream: [{
192
192
  type: Input
193
193
  }], fontList: [{
@@ -201,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
201
201
  }], disabled: [{
202
202
  type: Input
203
203
  }] } });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3Rvb2xiYXIvdGV4dC1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3Rvb2xiYXIvdGV4dC1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwseUJBQXlCLEdBRTFCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFzQixzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFLeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFFaEU7O0dBRUc7QUFPSCxNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDLElBQ1csaUJBQWlCLENBQUMsS0FBb0I7UUFDL0MsdUJBQUEsSUFBSSxxREFBdUIsS0FBSyxNQUFBLENBQUM7UUFDakMsdUJBQUEsSUFBSSxxR0FBc0IsTUFBMUIsSUFBSSxDQUF3QixDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLHVCQUFBLElBQUkseURBQW9CLENBQUM7SUFDbEMsQ0FBQztJQVdELElBQ1csVUFBVSxDQUFDLEtBQThCO1FBQ2xELHVCQUFBLElBQUksOENBQWdCLEtBQUssTUFBQSxDQUFDO1FBQzFCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDMUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLHFDQUFxQyxFQUFFO2dCQUN4RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsdUJBQUEsSUFBSSw0RkFBYSxNQUFqQixJQUFJLEVBQWMsZ0JBQWdCLENBQUMsQ0FBQzthQUMvRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsdUJBQUEsSUFBSSw0RkFBYSxNQUFqQixJQUFJLEVBQWMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3pEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sdUJBQUEsSUFBSSxrREFBYSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUNXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRSxJQUFJLFlBQVksS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xDLHVCQUFBLElBQUksNENBQWMsWUFBWSxNQUFBLENBQUM7WUFDL0IsdUJBQUEsSUFBSSxxREFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyx1QkFBQSxJQUFJLGdEQUFXLENBQUM7SUFDekIsQ0FBQztJQWtCRCxZQUNFLGNBQTJDLEVBQzNDLGNBQWlDLEVBQ2pDLFlBQTZCOztRQXhEeEIsYUFBUSxHQUF3QixFQUFFLENBQUM7UUFHbkMsaUJBQVksR0FBYSxFQUFFLENBQUM7UUFHNUIsbUJBQWMsR0FBcUMsRUFBRSxDQUFDO1FBK0J0RCwwQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBeUIsQ0FBQztRQUM3RCxzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBeUIsQ0FBQztRQUN6RCxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQUNyRCxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBRzFELHNFQUFnRDtRQUNoRCxnRUFBNkM7UUFDN0MsZ0VBQW1DO1FBQ25DLDhEQUErQjtRQUMvQix1REFBaUIsSUFBSSxPQUFPLEVBQVEsRUFBQztRQUVyQyw0REFBc0IsSUFBSSxPQUFPLEVBQVEsRUFBQztRQUMxQyxtREFBYSxLQUFLLEVBQUM7UUFDbkIscURBQWUsb0JBQW9CLEVBQUM7UUFPbEMsdUJBQUEsSUFBSSxpREFBbUIsY0FBYyxNQUFBLENBQUM7UUFDdEMsdUJBQUEsSUFBSSxpREFBbUIsY0FBYyxNQUFBLENBQUM7UUFDdEMsdUJBQUEsSUFBSSwrQ0FBaUIsWUFBWSxNQUFBLENBQUM7SUFDcEMsQ0FBQztJQUVNLFFBQVE7UUFDYix1QkFBQSxJQUFJLHFHQUFzQixNQUExQixJQUFJLENBQXdCLENBQUM7SUFDL0IsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFlLEVBQUUsS0FBSyxHQUFHLEVBQUU7UUFDNUMsdUJBQUEsSUFBSSxxREFBZ0IsQ0FBQyxXQUFXLENBQUM7WUFDL0IsT0FBTyxFQUFFLE9BQU87WUFDaEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLEdBQUcsSUFBSSxDQUFDLFVBQVU7WUFDbEIsR0FBRyx1QkFBQSxJQUFJLHFEQUFnQixDQUFDLGFBQWEsRUFBRTtTQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVNLGVBQWUsQ0FDcEIsWUFBcUIsRUFDckIsUUFBaUIsRUFDakIsT0FBZTtRQUVmLElBQUksWUFBWSxLQUFLLFFBQVEsRUFBRTtZQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNCO1FBRUQsOERBQThEO1FBQzlELHVCQUFBLElBQUkscURBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVNLElBQUk7UUFDVCxNQUFNLGNBQWMsR0FBRyx1QkFBQSxJQUFJLHFEQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzVELE1BQU0sV0FBVyxHQUFHLHVCQUFBLElBQUkscURBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkQsTUFBTSxVQUFVLEdBQUcsdUJBQUEsSUFBSSxtREFBYyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRTtZQUN6RTtnQkFDRSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixRQUFRLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFO2FBQ3JDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUF5QixFQUFFLEVBQUU7WUFDeEQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxjQUFjLEVBQUU7Z0JBQzlDLElBQUksV0FBVyxFQUFFO29CQUNmLE1BQU0sTUFBTSxHQUFHLHVCQUFBLElBQUkscURBQWdCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFFM0QsSUFBSSxNQUFNLEVBQUU7d0JBQ1YsdUJBQUEsSUFBSSxxREFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQzVDO2lCQUNGO2dCQUVELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRTtvQkFDekMsaUJBQWlCO29CQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNqRDtxQkFBTTtvQkFDTCxhQUFhO29CQUNiLE1BQU0sS0FBSyxHQUFHLHVCQUFBLElBQUkscURBQWdCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztvQkFDekQsSUFBSSxDQUFDLFdBQVcsQ0FDZCxZQUFZLEVBQ1osV0FBVzt3QkFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUc7d0JBQ2YsOENBQThDO3dCQUM5QyxLQUFLO3dCQUNMLE1BQU0sQ0FDVCxDQUFDO2lCQUNIO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxNQUFNO1FBQ1gsTUFBTSxxQkFBcUIsR0FBRyx1QkFBQSxJQUFJLHFEQUFnQjthQUMvQyxtQkFBbUIsRUFBRTtZQUN0QixFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLHFCQUFxQixJQUFJLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDekUsTUFBTSxTQUFTLEdBQUcsdUJBQUEsSUFBSSxxREFBZ0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlELElBQUksU0FBUyxFQUFFO2dCQUNiLHVCQUFBLElBQUkscURBQWdCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQy9DO1NBQ0Y7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxjQUFjLENBQUMsSUFBWTtRQUNoQyx1QkFBQSxJQUFJLHFEQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLEdBQUcsSUFBSSxDQUFDLFVBQVU7WUFDbEIsR0FBRyx1QkFBQSxJQUFJLHFEQUFnQixDQUFDLGFBQWEsRUFBRTtTQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVNLHlCQUF5QixDQUM5QixLQUEyQixFQUMzQixZQUFZLEdBQUcsS0FBSztRQUVwQixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7OztJQUdDLHVCQUFBLElBQUksMkRBQXNCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFFMUMsdUJBQUEsSUFBSSx1REFBeUIsSUFBSSxDQUFDLGlCQUFpQjtTQUNoRCxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUFBLElBQUksb0RBQWUsQ0FBQyxDQUFDO1NBQ3BDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLEdBQUcsSUFBSSxDQUFDLFVBQVU7WUFDbEIsR0FBRyx1QkFBQSxJQUFJLHFEQUFnQixDQUFDLGFBQWEsRUFBRTtTQUN4QyxDQUFDO1FBQ0YsdUJBQUEsSUFBSSwrRkFBZ0IsTUFBcEIsSUFBSSxDQUFrQixDQUFDO1FBQ3ZCLHVCQUFBLElBQUkscURBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkMsQ0FBQyxDQUFDLE1BQUEsQ0FBQztBQUNQLENBQUM7SUFHQyxNQUFNLE9BQU8sR0FBMEI7UUFDckMsSUFBSSxFQUFFLHlCQUF5QixDQUFDLEtBQUs7S0FDdEMsQ0FBQztJQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbkUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNuRSxDQUFDLG1HQUVZLFFBQWdCO0lBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUM3QyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO1lBQzVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDOUI7S0FDRjtJQUVELDBCQUEwQjtJQUMxQixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDOzBIQTVNVSw2QkFBNkI7OEdBQTdCLDZCQUE2Qix5UENyQzFDLHc3VUErU0E7MkZEMVFhLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU07Z0xBSXBDLGlCQUFpQjtzQkFEM0IsS0FBSztnQkFXQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBaUJLLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTa3lDb2xvcnBpY2tlck1lc3NhZ2UsXG4gIFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUsXG4gIFNreUNvbG9ycGlja2VyT3V0cHV0LFxufSBmcm9tICdAc2t5dXgvY29sb3JwaWNrZXInO1xuaW1wb3J0IHsgU2t5TW9kYWxDbG9zZUFyZ3MsIFNreU1vZGFsU2VydmljZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25NZXNzYWdlLCBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlIH0gZnJvbSAnQHNreXV4L3BvcG92ZXJzJztcblxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZvcm1zVXRpbGl0eSB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3Jtcy11dGlsaXR5JztcbmltcG9ydCB7IFNUWUxFX1NUQVRFX0RFRkFVTFRTIH0gZnJvbSAnLi4vZGVmYXVsdHMvc3R5bGUtc3RhdGUtZGVmYXVsdHMnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGV4dC1lZGl0b3ItYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JGb250IH0gZnJvbSAnLi4vdHlwZXMvZm9udC1zdGF0ZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yU3R5bGVTdGF0ZSB9IGZyb20gJy4uL3R5cGVzL3N0eWxlLXN0YXRlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZSB9IGZyb20gJy4uL3R5cGVzL3Rvb2xiYXItYWN0aW9uLXR5cGUnO1xuaW1wb3J0IHsgU2t5VXJsTW9kYWxDb250ZXh0IH0gZnJvbSAnLi4vdXJsLW1vZGFsL3RleHQtZWRpdG9yLXVybC1tb2RhbC1jb250ZXh0JztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JVcmxNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3VybC1tb2RhbC90ZXh0LWVkaXRvci11cmwtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFVybFRhcmdldCB9IGZyb20gJy4uL3VybC1tb2RhbC90ZXh0LWVkaXRvci11cmwtdGFyZ2V0JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZWRpdG9yLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHQtZWRpdG9yLXRvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFZGl0b3JUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBlZGl0b3JGb2N1c1N0cmVhbSh2YWx1ZTogU3ViamVjdDx2b2lkPikge1xuICAgIHRoaXMuI19lZGl0b3JGb2N1c1N0cmVhbSA9IHZhbHVlO1xuICAgIHRoaXMuI3N1YnNjcmliZUVkaXRvckZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVkaXRvckZvY3VzU3RyZWFtKCk6IFN1YmplY3Q8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNfZWRpdG9yRm9jdXNTdHJlYW07XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9udExpc3Q6IFNreVRleHRFZGl0b3JGb250W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9udFNpemVMaXN0OiBudW1iZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0b29sYmFyQWN0aW9uczogU2t5VGV4dEVkaXRvclRvb2xiYXJBY3Rpb25UeXBlW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0eWxlU3RhdGUodmFsdWU6IFNreVRleHRFZGl0b3JTdHlsZVN0YXRlKSB7XG4gICAgdGhpcy4jX3N0eWxlU3RhdGUgPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUuZm9udCAhPT0gdGhpcy5zdHlsZVN0YXRlRm9udE5hbWUpIHtcbiAgICAgIGlmICh2YWx1ZS5mb250ID09PSAnXCJCbGFja2JhdWQgU2Fuc1wiLCBBcmlhbCwgc2Fucy1zZXJpZicpIHtcbiAgICAgICAgdGhpcy5zdHlsZVN0YXRlRm9udE5hbWUgPSB0aGlzLiNnZXRGb250TmFtZSgnQmxhY2tiYXVkIFNhbnMnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3R5bGVTdGF0ZUZvbnROYW1lID0gdGhpcy4jZ2V0Rm9udE5hbWUodmFsdWUuZm9udCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzdHlsZVN0YXRlKCk6IFNreVRleHRFZGl0b3JTdHlsZVN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy4jX3N0eWxlU3RhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0gU2t5Rm9ybXNVdGlsaXR5LmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKGNvZXJjZWRWYWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jX2Rpc2FibGVkID0gY29lcmNlZFZhbHVlO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIGJhY2tDb2xvcnBpY2tlclN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreUNvbG9ycGlja2VyTWVzc2FnZT4oKTtcbiAgcHVibGljIGNvbG9ycGlja2VyU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5Q29sb3JwaWNrZXJNZXNzYWdlPigpO1xuICBwdWJsaWMgZm9udFBpY2tlclN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcbiAgcHVibGljIGZvbnRTaXplU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5RHJvcGRvd25NZXNzYWdlPigpO1xuICBwdWJsaWMgc3R5bGVTdGF0ZUZvbnROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI2VkaXRvckZvY3VzU3RyZWFtU3ViOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gICNhZGFwdGVyU2VydmljZTogU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlO1xuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjbW9kYWxTZXJ2aWNlOiBTa3lNb2RhbFNlcnZpY2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX2VkaXRvckZvY3VzU3RyZWFtID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuICAjX3N0eWxlU3RhdGUgPSBTVFlMRV9TVEFURV9ERUZBVUxUUztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhZGFwdGVyU2VydmljZTogU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBtb2RhbFNlcnZpY2U6IFNreU1vZGFsU2VydmljZVxuICApIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZSA9IGFkYXB0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jbW9kYWxTZXJ2aWNlID0gbW9kYWxTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3N1YnNjcmliZUVkaXRvckZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgZXhlY0NvbW1hbmQoY29tbWFuZDogc3RyaW5nLCB2YWx1ZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZXhlY0NvbW1hbmQoe1xuICAgICAgY29tbWFuZDogY29tbWFuZCxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnN0eWxlU3RhdGUgPSB7XG4gICAgICAuLi50aGlzLnN0eWxlU3RhdGUsXG4gICAgICAuLi50aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTdHlsZVN0YXRlKCksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVGb250U3R5bGUoXG4gICAgY3VycmVudFN0YXRlOiBib29sZWFuLFxuICAgIG5ld1N0YXRlOiBib29sZWFuLFxuICAgIGNvbW1hbmQ6IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICBpZiAoY3VycmVudFN0YXRlICE9PSBuZXdTdGF0ZSkge1xuICAgICAgdGhpcy5leGVjQ29tbWFuZChjb21tYW5kKTtcbiAgICB9XG5cbiAgICAvLyBGb3JjZSBza3ktY2hlY2tib3ggdG8gc2hvdyBjaGFuZ2VzIG9uIHVzZXIncyBpbml0aWFsIGNsaWNrLlxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBsaW5rKCk6IHZvaWQge1xuICAgIGNvbnN0IHByaW9yU2VsZWN0aW9uID0gdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2F2ZVNlbGVjdGlvbigpO1xuICAgIGNvbnN0IGN1cnJlbnRMaW5rID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0TGluaygpO1xuICAgIGNvbnN0IGlucHV0TW9kYWwgPSB0aGlzLiNtb2RhbFNlcnZpY2Uub3BlbihTa3lUZXh0RWRpdG9yVXJsTW9kYWxDb21wb25lbnQsIFtcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogU2t5VXJsTW9kYWxDb250ZXh0LFxuICAgICAgICB1c2VWYWx1ZTogeyB1cmxSZXN1bHQ6IGN1cnJlbnRMaW5rIH0sXG4gICAgICB9LFxuICAgIF0pO1xuICAgIGlucHV0TW9kYWwuY2xvc2VkLnN1YnNjcmliZSgocmVzdWx0OiBTa3lNb2RhbENsb3NlQXJncykgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5yZWFzb24gPT09ICdzYXZlJyAmJiBwcmlvclNlbGVjdGlvbikge1xuICAgICAgICBpZiAoY3VycmVudExpbmspIHtcbiAgICAgICAgICBjb25zdCBhbmNob3IgPSB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTZWxlY3RlZEFuY2hvclRhZygpO1xuXG4gICAgICAgICAgaWYgKGFuY2hvcikge1xuICAgICAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2VsZWN0RWxlbWVudChhbmNob3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhlY0NvbW1hbmQoJ3VubGluaycpO1xuICAgICAgICBpZiAocmVzdWx0LmRhdGEudGFyZ2V0ID09PSBVcmxUYXJnZXQuTm9uZSkge1xuICAgICAgICAgIC8vIEN1cnJlbnQgd2luZG93XG4gICAgICAgICAgdGhpcy5leGVjQ29tbWFuZCgnY3JlYXRlTGluaycsIHJlc3VsdC5kYXRhLnVybCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTmV3IFdpbmRvd1xuICAgICAgICAgIGNvbnN0IHNUZXh0ID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0Q3VycmVudFNlbGVjdGlvbigpO1xuICAgICAgICAgIHRoaXMuZXhlY0NvbW1hbmQoXG4gICAgICAgICAgICAnaW5zZXJ0SFRNTCcsXG4gICAgICAgICAgICAnPGEgaHJlZj1cIicgK1xuICAgICAgICAgICAgICByZXN1bHQuZGF0YS51cmwgK1xuICAgICAgICAgICAgICAnXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIHRhcmdldD1cIl9ibGFua1wiPicgK1xuICAgICAgICAgICAgICBzVGV4dCArXG4gICAgICAgICAgICAgICc8L2E+J1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1bmxpbmsoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvblJhbmdlID0gdGhpcy4jYWRhcHRlclNlcnZpY2VcbiAgICAgIC5nZXRDdXJyZW50U2VsZWN0aW9uKClcbiAgICAgID8uZ2V0UmFuZ2VBdCgwKTtcbiAgICBpZiAoY3VycmVudFNlbGVjdGlvblJhbmdlICYmIGN1cnJlbnRTZWxlY3Rpb25SYW5nZS50b1N0cmluZygpLmxlbmd0aCA8PSAwKSB7XG4gICAgICBjb25zdCBhbmNob3JUYWcgPSB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTZWxlY3RlZEFuY2hvclRhZygpO1xuICAgICAgaWYgKGFuY2hvclRhZykge1xuICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZWxlY3RFbGVtZW50KGFuY2hvclRhZyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZXhlY0NvbW1hbmQoJ3VubGluaycpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUZvbnRTaXplKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldEZvbnRTaXplKHNpemUpO1xuICAgIHRoaXMuc3R5bGVTdGF0ZSA9IHtcbiAgICAgIC4uLnRoaXMuc3R5bGVTdGF0ZSxcbiAgICAgIC4uLnRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldFN0eWxlU3RhdGUoKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG9uQ29sb3JwaWNrZXJDb2xvckNoYW5nZWQoXG4gICAgY29sb3I6IFNreUNvbG9ycGlja2VyT3V0cHV0LFxuICAgIGlzQmFja2dyb3VuZCA9IGZhbHNlXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZXhlY0NvbW1hbmQoaXNCYWNrZ3JvdW5kID8gJ2JhY2tDb2xvcicgOiAnZm9yZUNvbG9yJywgY29sb3IuaGV4KTtcbiAgfVxuXG4gICNzdWJzY3JpYmVFZGl0b3JGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLiNlZGl0b3JGb2N1c1N0cmVhbVN1Yj8udW5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuI2VkaXRvckZvY3VzU3RyZWFtU3ViID0gdGhpcy5lZGl0b3JGb2N1c1N0cmVhbVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3R5bGVTdGF0ZSA9IHtcbiAgICAgICAgICAuLi50aGlzLnN0eWxlU3RhdGUsXG4gICAgICAgICAgLi4udGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0U3R5bGVTdGF0ZSgpLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLiNjbG9zZURyb3Bkb3ducygpO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gICNjbG9zZURyb3Bkb3ducygpOiB2b2lkIHtcbiAgICBjb25zdCBtZXNzYWdlOiBTa3lDb2xvcnBpY2tlck1lc3NhZ2UgPSB7XG4gICAgICB0eXBlOiBTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlLkNsb3NlLFxuICAgIH07XG4gICAgdGhpcy5jb2xvcnBpY2tlclN0cmVhbS5uZXh0KG1lc3NhZ2UpO1xuICAgIHRoaXMuYmFja0NvbG9ycGlja2VyU3RyZWFtLm5leHQobWVzc2FnZSk7XG4gICAgdGhpcy5mb250UGlja2VyU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICAgIHRoaXMuZm9udFNpemVTdHJlYW0ubmV4dCh7IHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gIH1cblxuICAjZ2V0Rm9udE5hbWUoZm9udE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZvbnRMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZm9udE5hbWUucmVwbGFjZSgvWydcIl0rL2csICcnKSA9PT0gdGhpcy5mb250TGlzdFtpXS5uYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvbnRMaXN0W2ldLm5hbWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8c2t5LXRvb2xiYXItaXRlbVxuICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRvb2xiYXJBY3Rpb25zXCJcbiAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItdG9vbGJhci1hY3Rpb25cIlxuICBbbmdDbGFzc109XCInc2t5LXRleHQtZWRpdG9yLXRvb2xiYXItYWN0aW9uLScgKyBhY3Rpb25cIlxuPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJhY3Rpb25cIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZm9udC1mYW1pbHknXCI+XG4gICAgICA8c2t5LWRyb3Bkb3duXG4gICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWZvbnQtcGlja2VyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2xhYmVsXT1cIidGb250OiAnICsgc3R5bGVTdGF0ZUZvbnROYW1lXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZm9udFBpY2tlclN0cmVhbVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktZHJvcGRvd24tYnV0dG9uXG4gICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgJ2ZvbnQtZmFtaWx5Jzogc3R5bGVTdGF0ZS5mb250XG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdHlsZVN0YXRlRm9udE5hbWUgfX1cbiAgICAgICAgPC9za3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICAgICAgPHNreS1kcm9wZG93bi1pdGVtICpuZ0Zvcj1cImxldCBmb250TW9kZWwgb2YgZm9udExpc3RcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAnZm9udC1mYW1pbHknOiBmb250TW9kZWwudmFsdWVcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJleGVjQ29tbWFuZCgnZm9udG5hbWUnLCBmb250TW9kZWwubmFtZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBmb250TW9kZWwubmFtZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmb250LXNpemUnXCI+XG4gICAgICA8c2t5LWRyb3Bkb3duXG4gICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWZvbnQtc2l6ZS1waWNrZXJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbbGFiZWxdPVwiJ0ZvbnQgc2l6ZTogJyArIHN0eWxlU3RhdGUuZm9udFNpemUgKyAncHgnXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZm9udFNpemVTdHJlYW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvblxuICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICdmb250LWZhbWlseSc6IHN0eWxlU3RhdGUuZm9udFNpemVcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN0eWxlU3RhdGUuZm9udFNpemUgKyAncHgnIH19XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgIDxza3ktZHJvcGRvd24taXRlbSAqbmdGb3I9XCJsZXQgc2l6ZSBvZiBmb250U2l6ZUxpc3RcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjaGFuZ2VGb250U2l6ZShzaXplKVwiPlxuICAgICAgICAgICAgICB7eyBzaXplICsgJ3B4JyB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmb250LXN0eWxlJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1zd2l0Y2gtaWNvbi1ncm91cCBza3ktdGV4dC1lZGl0b3ItZm9udC1zdHlsZS1waWNrZXJcIj5cbiAgICAgICAgPHNreS1jaGVja2JveFxuICAgICAgICAgIGljb249XCJib2xkXCJcbiAgICAgICAgICBsYWJlbD1cIkJvbGRcIlxuICAgICAgICAgIHRpdGxlPVwiQm9sZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJzdHlsZVN0YXRlLmJvbGRTdGF0ZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICB0b2dnbGVGb250U3R5bGUoc3R5bGVTdGF0ZS5ib2xkU3RhdGUsICRldmVudCwgJ2JvbGQnKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgPC9za3ktY2hlY2tib3g+XG4gICAgICAgIDxza3ktY2hlY2tib3hcbiAgICAgICAgICBpY29uPVwiaXRhbGljXCJcbiAgICAgICAgICBsYWJlbD1cIkl0YWxpY2l6ZWRcIlxuICAgICAgICAgIHRpdGxlPVwiSXRhbGljaXplZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJzdHlsZVN0YXRlLml0YWxpY1N0YXRlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgIHRvZ2dsZUZvbnRTdHlsZShzdHlsZVN0YXRlLml0YWxpY1N0YXRlLCAkZXZlbnQsICdpdGFsaWMnKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgPC9za3ktY2hlY2tib3g+XG4gICAgICAgIDxza3ktY2hlY2tib3hcbiAgICAgICAgICBpY29uPVwidW5kZXJsaW5lXCJcbiAgICAgICAgICBsYWJlbD1cIlVuZGVybGluZVwiXG4gICAgICAgICAgdGl0bGU9XCJVbmRlcmxpbmVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgW25nTW9kZWxdPVwic3R5bGVTdGF0ZS51bmRlcmxpbmVTdGF0ZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICB0b2dnbGVGb250U3R5bGUoc3R5bGVTdGF0ZS51bmRlcmxpbmVTdGF0ZSwgJGV2ZW50LCAndW5kZXJsaW5lJylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2t5LWNoZWNrYm94PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbG9yJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1jb2xvcnBpY2tlci1ncm91cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWNvbG9ycGlja2VyLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxza3ktY29sb3JwaWNrZXJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWZvbnQtY29sb3ItcGlja2VyXCJcbiAgICAgICAgICAgIGxhYmVsPVwiRm9udCBjb2xvclwiXG4gICAgICAgICAgICBbbWVzc2FnZVN0cmVhbV09XCJjb2xvcnBpY2tlclN0cmVhbVwiXG4gICAgICAgICAgICBbc2hvd1Jlc2V0QnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgIChzZWxlY3RlZENvbG9yQ2hhbmdlZCk9XCJvbkNvbG9ycGlja2VyQ29sb3JDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgI2NvbG9yUGlja2VyXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG91dHB1dEZvcm1hdD1cImhleFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgW2FsbG93VHJhbnNwYXJlbmN5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwic3R5bGVTdGF0ZS5mb250Q29sb3JcIlxuICAgICAgICAgICAgICBbc2t5Q29sb3JwaWNrZXJJbnB1dF09XCJjb2xvclBpY2tlclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc2t5LWNvbG9ycGlja2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1jb2xvcnBpY2tlci1jb250YWluZXJcIj5cbiAgICAgICAgICA8c2t5LWNvbG9ycGlja2VyXG4gICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1iYWNrZ3JvdW5kLWNvbG9yLXBpY2tlclwiXG4gICAgICAgICAgICBsYWJlbD1cIkJhY2tncm91bmQgY29sb3JcIlxuICAgICAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiYmFja0NvbG9ycGlja2VyU3RyZWFtXCJcbiAgICAgICAgICAgIFtzaG93UmVzZXRCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgKHNlbGVjdGVkQ29sb3JDaGFuZ2VkKT1cIm9uQ29sb3JwaWNrZXJDb2xvckNoYW5nZWQoJGV2ZW50LCB0cnVlKVwiXG4gICAgICAgICAgICAjYmFja0NvbG9yUGlja2VyXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG91dHB1dEZvcm1hdD1cInJnYmFcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFthbGxvd1RyYW5zcGFyZW5jeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwic3R5bGVTdGF0ZS5iYWNrQ29sb3JcIlxuICAgICAgICAgICAgICBbc2t5Q29sb3JwaWNrZXJJbnB1dF09XCJiYWNrQ29sb3JQaWNrZXJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NreS1jb2xvcnBpY2tlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGlzdCdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktc3dpdGNoLWljb24tZ3JvdXBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJCdWxsZXRlZCBsaXN0XCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4taWNvblwiXG4gICAgICAgICAgdGl0bGU9XCJCdWxsZXRlZCBsaXN0XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJleGVjQ29tbWFuZCgnaW5zZXJ0VW5vcmRlcmVkTGlzdCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJsaXN0LXVsXCI+IDwvc2t5LWljb24+XG4gICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICAgIGljb249XCJidWxsZXQtbGlzdC1saW5lXCJcbiAgICAgICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJOdW1iZXJlZCBsaXN0XCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4taWNvblwiXG4gICAgICAgICAgdGl0bGU9XCJOdW1iZXJlZCBsaXN0XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJleGVjQ29tbWFuZCgnaW5zZXJ0T3JkZXJlZExpc3QnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwibGlzdC1vbFwiPiA8L3NreS1pY29uPlxuICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgICAgICBpY29uPVwibnVtYmVyLWxpc3QtbGluZVwiXG4gICAgICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYWxpZ25tZW50J1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1zd2l0Y2gtaWNvbi1ncm91cFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkFsaWduIGxlZnRcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1pY29uXCJcbiAgICAgICAgICB0aXRsZT1cIkFsaWduIGxlZnRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImV4ZWNDb21tYW5kKCdqdXN0aWZ5TGVmdCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJhbGlnbi1sZWZ0XCI+IDwvc2t5LWljb24+XG4gICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICAgIGljb249XCJhbGlnbi1sZWZ0LXRleHQtbGluZVwiXG4gICAgICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQWxpZ24gY2VudGVyXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4taWNvblwiXG4gICAgICAgICAgdGl0bGU9XCJBbGlnbiBjZW50ZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImV4ZWNDb21tYW5kKCdqdXN0aWZ5Q2VudGVyJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImFsaWduLWNlbnRlclwiPiA8L3NreS1pY29uPlxuICAgICAgICAgIDxza3ktaWNvblxuICAgICAgICAgICAgKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiXG4gICAgICAgICAgICBpY29uPVwiY2VudGVyLXRleHQtbGluZVwiXG4gICAgICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQWxpZ24gcmlnaHRcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1pY29uXCJcbiAgICAgICAgICB0aXRsZT1cIkFsaWduIHJpZ2h0XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJleGVjQ29tbWFuZCgnanVzdGlmeVJpZ2h0JylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImFsaWduLXJpZ2h0XCI+IDwvc2t5LWljb24+XG4gICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICAgIGljb249XCJhbGlnbi1yaWdodC10ZXh0LWxpbmVcIlxuICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc2t5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2luZGVudGF0aW9uJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1zd2l0Y2gtaWNvbi1ncm91cFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIk91dGRlbnRcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1pY29uXCJcbiAgICAgICAgICB0aXRsZT1cIk91dGRlbnRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImV4ZWNDb21tYW5kKCdvdXRkZW50JylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cIm91dGRlbnRcIj4gPC9za3ktaWNvbj5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJvdXRkZW50LWxpbmVcIiBpY29uVHlwZT1cInNreXV4XCI+XG4gICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiSW5kZW50XCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4taWNvblwiXG4gICAgICAgICAgdGl0bGU9XCJJbmRlbnRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImV4ZWNDb21tYW5kKCdpbmRlbnQnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwiaW5kZW50XCI+IDwvc2t5LWljb24+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ21vZGVybidcIiBpY29uPVwiaW5kZW50LWxpbmVcIiBpY29uVHlwZT1cInNreXV4XCI+XG4gICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndW5kby1yZWRvJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1zd2l0Y2gtaWNvbi1ncm91cFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlVuZG9cIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1pY29uXCJcbiAgICAgICAgICB0aXRsZT1cIlVuZG9cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImV4ZWNDb21tYW5kKCd1bmRvJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cInVuZG9cIj4gPC9za3ktaWNvbj5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJ1bmRvLWxpbmVcIiBpY29uVHlwZT1cInNreXV4XCI+XG4gICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiUmVkb1wiXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktYnRuLWljb25cIlxuICAgICAgICAgIHRpdGxlPVwiUmVkb1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiZXhlY0NvbW1hbmQoJ3JlZG8nKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwicmVwZWF0XCI+IDwvc2t5LWljb24+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ21vZGVybidcIiBpY29uPVwicmVkby1saW5lXCIgaWNvblR5cGU9XCJza3l1eFwiPlxuICAgICAgICAgIDwvc2t5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LXN3aXRjaC1pY29uLWdyb3VwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiTGlua1wiXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktYnRuLWljb25cIlxuICAgICAgICAgIHRpdGxlPVwiTGlua1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnaWNvbi1idG4tYWN0aXZlJzogc3R5bGVTdGF0ZS5saW5rU3RhdGVcbiAgICAgICAgICB9XCJcbiAgICAgICAgICAoY2xpY2spPVwibGluaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJsaW5rXCI+IDwvc2t5LWljb24+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ21vZGVybidcIiBpY29uPVwibGluay1saW5lXCIgaWNvblR5cGU9XCJza3l1eFwiPlxuICAgICAgICAgIDwvc2t5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlVubGlua1wiXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktYnRuLWljb25cIlxuICAgICAgICAgIHRpdGxlPVwiVW5saW5rXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXN0eWxlU3RhdGUubGlua1N0YXRlIHx8IGRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwidW5saW5rKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cInVubGlua1wiPiA8L3NreS1pY29uPlxuICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCIgaWNvbj1cInVubGluay1saW5lXCIgaWNvblR5cGU9XCJza3l1eFwiPlxuICAgICAgICAgIDwvc2t5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9za3ktdG9vbGJhci1pdGVtPlxuIl19
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3Rvb2xiYXIvdGV4dC1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3Rvb2xiYXIvdGV4dC1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwseUJBQXlCLEdBRTFCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFzQixzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFLeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFFaEU7O0dBRUc7QUFPSCxNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDLElBQ1csaUJBQWlCLENBQUMsS0FBb0I7UUFD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QUM3QyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO1lBQzVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDOUI7S0FDRjtJQUVELDBCQUEwQjtJQUMxQixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDOzBIQTVNVSw2QkFBNkI7OEdBQTdCLDZCQUE2Qix5UENyQzFDLDJtVkFtVEE7MkZEOVFhLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU07Z0xBSXBDLGlCQUFpQjtzQkFEM0IsS0FBSztnQkFXQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBaUJLLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTa3lDb2xvcnBpY2tlck1lc3NhZ2UsXG4gIFNreUNvbG9ycGlja2VyTWVzc2FnZVR5cGUsXG4gIFNreUNvbG9ycGlja2VyT3V0cHV0LFxufSBmcm9tICdAc2t5dXgvY29sb3JwaWNrZXInO1xuaW1wb3J0IHsgU2t5TW9kYWxDbG9zZUFyZ3MsIFNreU1vZGFsU2VydmljZSB9IGZyb20gJ0Bza3l1eC9tb2RhbHMnO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25NZXNzYWdlLCBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlIH0gZnJvbSAnQHNreXV4L3BvcG92ZXJzJztcblxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZvcm1zVXRpbGl0eSB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3Jtcy11dGlsaXR5JztcbmltcG9ydCB7IFNUWUxFX1NUQVRFX0RFRkFVTFRTIH0gZnJvbSAnLi4vZGVmYXVsdHMvc3R5bGUtc3RhdGUtZGVmYXVsdHMnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGV4dC1lZGl0b3ItYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JGb250IH0gZnJvbSAnLi4vdHlwZXMvZm9udC1zdGF0ZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yU3R5bGVTdGF0ZSB9IGZyb20gJy4uL3R5cGVzL3N0eWxlLXN0YXRlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZSB9IGZyb20gJy4uL3R5cGVzL3Rvb2xiYXItYWN0aW9uLXR5cGUnO1xuaW1wb3J0IHsgU2t5VXJsTW9kYWxDb250ZXh0IH0gZnJvbSAnLi4vdXJsLW1vZGFsL3RleHQtZWRpdG9yLXVybC1tb2RhbC1jb250ZXh0JztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JVcmxNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3VybC1tb2RhbC90ZXh0LWVkaXRvci11cmwtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFVybFRhcmdldCB9IGZyb20gJy4uL3VybC1tb2RhbC90ZXh0LWVkaXRvci11cmwtdGFyZ2V0JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZWRpdG9yLXRvb2xiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHQtZWRpdG9yLXRvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFZGl0b3JUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBlZGl0b3JGb2N1c1N0cmVhbSh2YWx1ZTogU3ViamVjdDx2b2lkPikge1xuICAgIHRoaXMuI19lZGl0b3JGb2N1c1N0cmVhbSA9IHZhbHVlO1xuICAgIHRoaXMuI3N1YnNjcmliZUVkaXRvckZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVkaXRvckZvY3VzU3RyZWFtKCk6IFN1YmplY3Q8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNfZWRpdG9yRm9jdXNTdHJlYW07XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9udExpc3Q6IFNreVRleHRFZGl0b3JGb250W10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9udFNpemVMaXN0OiBudW1iZXJbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0b29sYmFyQWN0aW9uczogU2t5VGV4dEVkaXRvclRvb2xiYXJBY3Rpb25UeXBlW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHN0eWxlU3RhdGUodmFsdWU6IFNreVRleHRFZGl0b3JTdHlsZVN0YXRlKSB7XG4gICAgdGhpcy4jX3N0eWxlU3RhdGUgPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUuZm9udCAhPT0gdGhpcy5zdHlsZVN0YXRlRm9udE5hbWUpIHtcbiAgICAgIGlmICh2YWx1ZS5mb250ID09PSAnXCJCbGFja2JhdWQgU2Fuc1wiLCBBcmlhbCwgc2Fucy1zZXJpZicpIHtcbiAgICAgICAgdGhpcy5zdHlsZVN0YXRlRm9udE5hbWUgPSB0aGlzLiNnZXRGb250TmFtZSgnQmxhY2tiYXVkIFNhbnMnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3R5bGVTdGF0ZUZvbnROYW1lID0gdGhpcy4jZ2V0Rm9udE5hbWUodmFsdWUuZm9udCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzdHlsZVN0YXRlKCk6IFNreVRleHRFZGl0b3JTdHlsZVN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy4jX3N0eWxlU3RhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0gU2t5Rm9ybXNVdGlsaXR5LmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKGNvZXJjZWRWYWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jX2Rpc2FibGVkID0gY29lcmNlZFZhbHVlO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIGJhY2tDb2xvcnBpY2tlclN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreUNvbG9ycGlja2VyTWVzc2FnZT4oKTtcbiAgcHVibGljIGNvbG9ycGlja2VyU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5Q29sb3JwaWNrZXJNZXNzYWdlPigpO1xuICBwdWJsaWMgZm9udFBpY2tlclN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcbiAgcHVibGljIGZvbnRTaXplU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5RHJvcGRvd25NZXNzYWdlPigpO1xuICBwdWJsaWMgc3R5bGVTdGF0ZUZvbnROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI2VkaXRvckZvY3VzU3RyZWFtU3ViOiBTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gICNhZGFwdGVyU2VydmljZTogU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlO1xuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjbW9kYWxTZXJ2aWNlOiBTa3lNb2RhbFNlcnZpY2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX2VkaXRvckZvY3VzU3RyZWFtID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuICAjX3N0eWxlU3RhdGUgPSBTVFlMRV9TVEFURV9ERUZBVUxUUztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhZGFwdGVyU2VydmljZTogU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlLFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBtb2RhbFNlcnZpY2U6IFNreU1vZGFsU2VydmljZVxuICApIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZSA9IGFkYXB0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jbW9kYWxTZXJ2aWNlID0gbW9kYWxTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3N1YnNjcmliZUVkaXRvckZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgZXhlY0NvbW1hbmQoY29tbWFuZDogc3RyaW5nLCB2YWx1ZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZXhlY0NvbW1hbmQoe1xuICAgICAgY29tbWFuZDogY29tbWFuZCxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnN0eWxlU3RhdGUgPSB7XG4gICAgICAuLi50aGlzLnN0eWxlU3RhdGUsXG4gICAgICAuLi50aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTdHlsZVN0YXRlKCksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVGb250U3R5bGUoXG4gICAgY3VycmVudFN0YXRlOiBib29sZWFuLFxuICAgIG5ld1N0YXRlOiBib29sZWFuLFxuICAgIGNvbW1hbmQ6IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICBpZiAoY3VycmVudFN0YXRlICE9PSBuZXdTdGF0ZSkge1xuICAgICAgdGhpcy5leGVjQ29tbWFuZChjb21tYW5kKTtcbiAgICB9XG5cbiAgICAvLyBGb3JjZSBza3ktY2hlY2tib3ggdG8gc2hvdyBjaGFuZ2VzIG9uIHVzZXIncyBpbml0aWFsIGNsaWNrLlxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBsaW5rKCk6IHZvaWQge1xuICAgIGNvbnN0IHByaW9yU2VsZWN0aW9uID0gdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2F2ZVNlbGVjdGlvbigpO1xuICAgIGNvbnN0IGN1cnJlbnRMaW5rID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0TGluaygpO1xuICAgIGNvbnN0IGlucHV0TW9kYWwgPSB0aGlzLiNtb2RhbFNlcnZpY2Uub3BlbihTa3lUZXh0RWRpdG9yVXJsTW9kYWxDb21wb25lbnQsIFtcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogU2t5VXJsTW9kYWxDb250ZXh0LFxuICAgICAgICB1c2VWYWx1ZTogeyB1cmxSZXN1bHQ6IGN1cnJlbnRMaW5rIH0sXG4gICAgICB9LFxuICAgIF0pO1xuICAgIGlucHV0TW9kYWwuY2xvc2VkLnN1YnNjcmliZSgocmVzdWx0OiBTa3lNb2RhbENsb3NlQXJncykgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5yZWFzb24gPT09ICdzYXZlJyAmJiBwcmlvclNlbGVjdGlvbikge1xuICAgICAgICBpZiAoY3VycmVudExpbmspIHtcbiAgICAgICAgICBjb25zdCBhbmNob3IgPSB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTZWxlY3RlZEFuY2hvclRhZygpO1xuXG4gICAgICAgICAgaWYgKGFuY2hvcikge1xuICAgICAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2VsZWN0RWxlbWVudChhbmNob3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhlY0NvbW1hbmQoJ3VubGluaycpO1xuICAgICAgICBpZiAocmVzdWx0LmRhdGEudGFyZ2V0ID09PSBVcmxUYXJnZXQuTm9uZSkge1xuICAgICAgICAgIC8vIEN1cnJlbnQgd2luZG93XG4gICAgICAgICAgdGhpcy5leGVjQ29tbWFuZCgnY3JlYXRlTGluaycsIHJlc3VsdC5kYXRhLnVybCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTmV3IFdpbmRvd1xuICAgICAgICAgIGNvbnN0IHNUZXh0ID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0Q3VycmVudFNlbGVjdGlvbigpO1xuICAgICAgICAgIHRoaXMuZXhlY0NvbW1hbmQoXG4gICAgICAgICAgICAnaW5zZXJ0SFRNTCcsXG4gICAgICAgICAgICAnPGEgaHJlZj1cIicgK1xuICAgICAgICAgICAgICByZXN1bHQuZGF0YS51cmwgK1xuICAgICAgICAgICAgICAnXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIHRhcmdldD1cIl9ibGFua1wiPicgK1xuICAgICAgICAgICAgICBzVGV4dCArXG4gICAgICAgICAgICAgICc8L2E+J1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1bmxpbmsoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvblJhbmdlID0gdGhpcy4jYWRhcHRlclNlcnZpY2VcbiAgICAgIC5nZXRDdXJyZW50U2VsZWN0aW9uKClcbiAgICAgID8uZ2V0UmFuZ2VBdCgwKTtcbiAgICBpZiAoY3VycmVudFNlbGVjdGlvblJhbmdlICYmIGN1cnJlbnRTZWxlY3Rpb25SYW5nZS50b1N0cmluZygpLmxlbmd0aCA8PSAwKSB7XG4gICAgICBjb25zdCBhbmNob3JUYWcgPSB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTZWxlY3RlZEFuY2hvclRhZygpO1xuICAgICAgaWYgKGFuY2hvclRhZykge1xuICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZWxlY3RFbGVtZW50KGFuY2hvclRhZyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZXhlY0NvbW1hbmQoJ3VubGluaycpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZUZvbnRTaXplKHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldEZvbnRTaXplKHNpemUpO1xuICAgIHRoaXMuc3R5bGVTdGF0ZSA9IHtcbiAgICAgIC4uLnRoaXMuc3R5bGVTdGF0ZSxcbiAgICAgIC4uLnRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldFN0eWxlU3RhdGUoKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG9uQ29sb3JwaWNrZXJDb2xvckNoYW5nZWQoXG4gICAgY29sb3I6IFNreUNvbG9ycGlja2VyT3V0cHV0LFxuICAgIGlzQmFja2dyb3VuZCA9IGZhbHNlXG4gICk6IHZvaWQge1xuICAgIHRoaXMuZXhlY0NvbW1hbmQoaXNCYWNrZ3JvdW5kID8gJ2JhY2tDb2xvcicgOiAnZm9yZUNvbG9yJywgY29sb3IuaGV4KTtcbiAgfVxuXG4gICNzdWJzY3JpYmVFZGl0b3JGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLiNlZGl0b3JGb2N1c1N0cmVhbVN1Yj8udW5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuI2VkaXRvckZvY3VzU3RyZWFtU3ViID0gdGhpcy5lZGl0b3JGb2N1c1N0cmVhbVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3R5bGVTdGF0ZSA9IHtcbiAgICAgICAgICAuLi50aGlzLnN0eWxlU3RhdGUsXG4gICAgICAgICAgLi4udGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0U3R5bGVTdGF0ZSgpLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLiNjbG9zZURyb3Bkb3ducygpO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gICNjbG9zZURyb3Bkb3ducygpOiB2b2lkIHtcbiAgICBjb25zdCBtZXNzYWdlOiBTa3lDb2xvcnBpY2tlck1lc3NhZ2UgPSB7XG4gICAgICB0eXBlOiBTa3lDb2xvcnBpY2tlck1lc3NhZ2VUeXBlLkNsb3NlLFxuICAgIH07XG4gICAgdGhpcy5jb2xvcnBpY2tlclN0cmVhbS5uZXh0KG1lc3NhZ2UpO1xuICAgIHRoaXMuYmFja0NvbG9ycGlja2VyU3RyZWFtLm5leHQobWVzc2FnZSk7XG4gICAgdGhpcy5mb250UGlja2VyU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICAgIHRoaXMuZm9udFNpemVTdHJlYW0ubmV4dCh7IHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gIH1cblxuICAjZ2V0Rm9udE5hbWUoZm9udE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZvbnRMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoZm9udE5hbWUucmVwbGFjZSgvWydcIl0rL2csICcnKSA9PT0gdGhpcy5mb250TGlzdFtpXS5uYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvbnRMaXN0W2ldLm5hbWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8c2t5LXRvb2xiYXItaXRlbVxuICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRvb2xiYXJBY3Rpb25zXCJcbiAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItdG9vbGJhci1hY3Rpb25cIlxuICBbbmdDbGFzc109XCInc2t5LXRleHQtZWRpdG9yLXRvb2xiYXItYWN0aW9uLScgKyBhY3Rpb25cIlxuPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJhY3Rpb25cIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZm9udC1mYW1pbHknXCI+XG4gICAgICA8c2t5LWRyb3Bkb3duXG4gICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWZvbnQtcGlja2VyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2xhYmVsXT1cIidGb250OiAnICsgc3R5bGVTdGF0ZUZvbnROYW1lXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZm9udFBpY2tlclN0cmVhbVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktZHJvcGRvd24tYnV0dG9uXG4gICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgJ2ZvbnQtZmFtaWx5Jzogc3R5bGVTdGF0ZS5mb250XG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdHlsZVN0YXRlRm9udE5hbWUgfX1cbiAgICAgICAgPC9za3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICAgICAgPHNreS1kcm9wZG93bi1pdGVtICpuZ0Zvcj1cImxldCBmb250TW9kZWwgb2YgZm9udExpc3RcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAnZm9udC1mYW1pbHknOiBmb250TW9kZWwudmFsdWVcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJleGVjQ29tbWFuZCgnZm9udG5hbWUnLCBmb250TW9kZWwubmFtZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBmb250TW9kZWwubmFtZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmb250LXNpemUnXCI+XG4gICAgICA8c2t5LWRyb3Bkb3duXG4gICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWZvbnQtc2l6ZS1waWNrZXJcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbbGFiZWxdPVwiJ0ZvbnQgc2l6ZTogJyArIHN0eWxlU3RhdGUuZm9udFNpemUgKyAncHgnXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZm9udFNpemVTdHJlYW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvblxuICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICdmb250LWZhbWlseSc6IHN0eWxlU3RhdGUuZm9udFNpemVcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN0eWxlU3RhdGUuZm9udFNpemUgKyAncHgnIH19XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgIDxza3ktZHJvcGRvd24taXRlbSAqbmdGb3I9XCJsZXQgc2l6ZSBvZiBmb250U2l6ZUxpc3RcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjaGFuZ2VGb250U2l6ZShzaXplKVwiPlxuICAgICAgICAgICAgICB7eyBzaXplICsgJ3B4JyB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmb250LXN0eWxlJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1zd2l0Y2gtaWNvbi1ncm91cCBza3ktdGV4dC1lZGl0b3ItZm9udC1zdHlsZS1waWNrZXJcIj5cbiAgICAgICAgPHNreS1jaGVja2JveFxuICAgICAgICAgIGljb249XCJib2xkXCJcbiAgICAgICAgICBsYWJlbD1cIkJvbGRcIlxuICAgICAgICAgIHRpdGxlPVwiQm9sZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJzdHlsZVN0YXRlLmJvbGRTdGF0ZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICB0b2dnbGVGb250U3R5bGUoc3R5bGVTdGF0ZS5ib2xkU3RhdGUsICRldmVudCwgJ2JvbGQnKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgPC9za3ktY2hlY2tib3g+XG4gICAgICAgIDxza3ktY2hlY2tib3hcbiAgICAgICAgICBpY29uPVwiaXRhbGljXCJcbiAgICAgICAgICBsYWJlbD1cIkl0YWxpY2l6ZWRcIlxuICAgICAgICAgIHRpdGxlPVwiSXRhbGljaXplZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJzdHlsZVN0YXRlLml0YWxpY1N0YXRlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcbiAgICAgICAgICAgIHRvZ2dsZUZvbnRTdHlsZShzdHlsZVN0YXRlLml0YWxpY1N0YXRlLCAkZXZlbnQsICdpdGFsaWMnKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgPC9za3ktY2hlY2tib3g+XG4gICAgICAgIDxza3ktY2hlY2tib3hcbiAgICAgICAgICBpY29uPVwidW5kZXJsaW5lXCJcbiAgICAgICAgICBsYWJlbD1cIlVuZGVybGluZVwiXG4gICAgICAgICAgdGl0bGU9XCJVbmRlcmxpbmVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgW25nTW9kZWxdPVwic3R5bGVTdGF0ZS51bmRlcmxpbmVTdGF0ZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiXG4gICAgICAgICAgICB0b2dnbGVGb250U3R5bGUoc3R5bGVTdGF0ZS51bmRlcmxpbmVTdGF0ZSwgJGV2ZW50LCAndW5kZXJsaW5lJylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgIDwvc2t5LWNoZWNrYm94PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbG9yJ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1jb2xvcnBpY2tlci1ncm91cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWNvbG9ycGlja2VyLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxza3ktY29sb3JwaWNrZXJcbiAgICAgICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWZvbnQtY29sb3ItcGlja2VyXCJcbiAgICAgICAgICAgIGxhYmVsPVwiRm9udCBjb2xvclwiXG4gICAgICAgICAgICBbbWVzc2FnZVN0cmVhbV09XCJjb2xvcnBpY2tlclN0cmVhbVwiXG4gICAgICAgICAgICBbc2hvd1Jlc2V0QnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgIChzZWxlY3RlZENvbG9yQ2hhbmdlZCk9XCJvbkNvbG9ycGlja2VyQ29sb3JDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgcGlja2VyQnV0dG9uSWNvbj1cImhpZ2hsaWdodGVyXCJcbiAgICAgICAgICAgIHBpY2tlckJ1dHRvbkljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgICAgI2NvbG9yUGlja2VyXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG91dHB1dEZvcm1hdD1cImhleFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgW2FsbG93VHJhbnNwYXJlbmN5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwic3R5bGVTdGF0ZS5mb250Q29sb3JcIlxuICAgICAgICAgICAgICBbc2t5Q29sb3JwaWNrZXJJbnB1dF09XCJjb2xvclBpY2tlclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc2t5LWNvbG9ycGlja2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1jb2xvcnBpY2tlci1jb250YWluZXJcIj5cbiAgICAgICAgICA8c2t5LWNvbG9ycGlja2VyXG4gICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1iYWNrZ3JvdW5kLWNvbG9yLXBpY2tlclwiXG4gICAgICAgICAgICBsYWJlbD1cIkJhY2tncm91bmQgY29sb3JcIlxuICAgICAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiYmFja0NvbG9ycGlja2VyU3RyZWFtXCJcbiAgICAgICAgICAgIFtzaG93UmVzZXRCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgKHNlbGVjdGVkQ29sb3JDaGFuZ2VkKT1cIm9uQ29sb3JwaWNrZXJDb2xvckNoYW5nZWQoJGV2ZW50LCB0cnVlKVwiXG4gICAgICAgICAgICAjYmFja0NvbG9yUGlja2VyXG4gICAgICAgICAgICBwaWNrZXJCdXR0b25JY29uPVwidGV4dC1jb2xvclwiXG4gICAgICAgICAgICBwaWNrZXJCdXR0b25JY29uVHlwZT1cInNreXV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgb3V0cHV0Rm9ybWF0PVwicmdiYVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgW2FsbG93VHJhbnNwYXJlbmN5XT1cInRydWVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzdHlsZVN0YXRlLmJhY2tDb2xvclwiXG4gICAgICAgICAgICAgIFtza3lDb2xvcnBpY2tlcklucHV0XT1cImJhY2tDb2xvclBpY2tlclwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc2t5LWNvbG9ycGlja2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsaXN0J1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNreS1zd2l0Y2gtaWNvbi1ncm91cFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIkJ1bGxldGVkIGxpc3RcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1pY29uXCJcbiAgICAgICAgICB0aXRsZT1cIkJ1bGxldGVkIGxpc3RcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImV4ZWNDb21tYW5kKCdpbnNlcnRVbm9yZGVyZWRMaXN0JylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImxpc3QtdWxcIj4gPC9za3ktaWNvbj5cbiAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICAgICAgaWNvbj1cImJ1bGxldC1saXN0LWxpbmVcIlxuICAgICAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc2t5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIk51bWJlcmVkIGxpc3RcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1pY29uXCJcbiAgICAgICAgICB0aXRsZT1cIk51bWJlcmVkIGxpc3RcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImV4ZWNDb21tYW5kKCdpbnNlcnRPcmRlcmVkTGlzdCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJsaXN0LW9sXCI+IDwvc2t5LWljb24+XG4gICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICAgIGljb249XCJudW1iZXItbGlzdC1saW5lXCJcbiAgICAgICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhbGlnbm1lbnQnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LXN3aXRjaC1pY29uLWdyb3VwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQWxpZ24gbGVmdFwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktYnRuLWljb25cIlxuICAgICAgICAgIHRpdGxlPVwiQWxpZ24gbGVmdFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiZXhlY0NvbW1hbmQoJ2p1c3RpZnlMZWZ0JylcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImFsaWduLWxlZnRcIj4gPC9za3ktaWNvbj5cbiAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICAgICAgaWNvbj1cImFsaWduLWxlZnQtdGV4dC1saW5lXCJcbiAgICAgICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJBbGlnbiBjZW50ZXJcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1pY29uXCJcbiAgICAgICAgICB0aXRsZT1cIkFsaWduIGNlbnRlclwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiZXhlY0NvbW1hbmQoJ2p1c3RpZnlDZW50ZXInKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwiYWxpZ24tY2VudGVyXCI+IDwvc2t5LWljb24+XG4gICAgICAgICAgPHNreS1pY29uXG4gICAgICAgICAgICAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCJcbiAgICAgICAgICAgIGljb249XCJjZW50ZXItdGV4dC1saW5lXCJcbiAgICAgICAgICAgIGljb25UeXBlPVwic2t5dXhcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJBbGlnbiByaWdodFwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktYnRuLWljb25cIlxuICAgICAgICAgIHRpdGxlPVwiQWxpZ24gcmlnaHRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImV4ZWNDb21tYW5kKCdqdXN0aWZ5UmlnaHQnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwiYWxpZ24tcmlnaHRcIj4gPC9za3ktaWNvbj5cbiAgICAgICAgICA8c2t5LWljb25cbiAgICAgICAgICAgICpza3lUaGVtZUlmPVwiJ21vZGVybidcIlxuICAgICAgICAgICAgaWNvbj1cImFsaWduLXJpZ2h0LXRleHQtbGluZVwiXG4gICAgICAgICAgICBpY29uVHlwZT1cInNreXV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW5kZW50YXRpb24nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LXN3aXRjaC1pY29uLWdyb3VwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiT3V0ZGVudFwiXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktYnRuLWljb25cIlxuICAgICAgICAgIHRpdGxlPVwiT3V0ZGVudFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiZXhlY0NvbW1hbmQoJ291dGRlbnQnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwib3V0ZGVudFwiPiA8L3NreS1pY29uPlxuICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCIgaWNvbj1cIm91dGRlbnQtbGluZVwiIGljb25UeXBlPVwic2t5dXhcIj5cbiAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJJbmRlbnRcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWRlZmF1bHQgc2t5LWJ0bi1pY29uXCJcbiAgICAgICAgICB0aXRsZT1cIkluZGVudFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiZXhlY0NvbW1hbmQoJ2luZGVudCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJpbmRlbnRcIj4gPC9za3ktaWNvbj5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJpbmRlbnQtbGluZVwiIGljb25UeXBlPVwic2t5dXhcIj5cbiAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid1bmRvLXJlZG8nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LXN3aXRjaC1pY29uLWdyb3VwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVW5kb1wiXG4gICAgICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tZGVmYXVsdCBza3ktYnRuLWljb25cIlxuICAgICAgICAgIHRpdGxlPVwiVW5kb1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiZXhlY0NvbW1hbmQoJ3VuZG8nKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwidW5kb1wiPiA8L3NreS1pY29uPlxuICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidtb2Rlcm4nXCIgaWNvbj1cInVuZG8tbGluZVwiIGljb25UeXBlPVwic2t5dXhcIj5cbiAgICAgICAgICA8L3NreS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZWRvXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4taWNvblwiXG4gICAgICAgICAgdGl0bGU9XCJSZWRvXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJleGVjQ29tbWFuZCgncmVkbycpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxza3ktaWNvbiAqc2t5VGhlbWVJZj1cIidkZWZhdWx0J1wiIGljb249XCJyZXBlYXRcIj4gPC9za3ktaWNvbj5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJyZWRvLWxpbmVcIiBpY29uVHlwZT1cInNreXV4XCI+XG4gICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGluaydcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktc3dpdGNoLWljb24tZ3JvdXBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJMaW5rXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4taWNvblwiXG4gICAgICAgICAgdGl0bGU9XCJMaW5rXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdpY29uLWJ0bi1hY3RpdmUnOiBzdHlsZVN0YXRlLmxpbmtTdGF0ZVxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChjbGljayk9XCJsaW5rKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ2RlZmF1bHQnXCIgaWNvbj1cImxpbmtcIj4gPC9za3ktaWNvbj5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInbW9kZXJuJ1wiIGljb249XCJsaW5rLWxpbmVcIiBpY29uVHlwZT1cInNreXV4XCI+XG4gICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVW5saW5rXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1kZWZhdWx0IHNreS1idG4taWNvblwiXG4gICAgICAgICAgdGl0bGU9XCJVbmxpbmtcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhc3R5bGVTdGF0ZS5saW5rU3RhdGUgfHwgZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ1bmxpbmsoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2t5LWljb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIiBpY29uPVwidW5saW5rXCI+IDwvc2t5LWljb24+XG4gICAgICAgICAgPHNreS1pY29uICpza3lUaGVtZUlmPVwiJ21vZGVybidcIiBpY29uPVwidW5saW5rLWxpbmVcIiBpY29uVHlwZT1cInNreXV4XCI+XG4gICAgICAgICAgPC9za3ktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L3NreS10b29sYmFyLWl0ZW0+XG4iXX0=