@skyux/text-editor 10.10.0 → 10.12.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.
- package/documentation.json +377 -328
- package/esm2022/lib/modules/text-editor/text-editor.component.mjs +31 -11
- package/esm2022/lib/modules/text-editor/toolbar/text-editor-toolbar.component.mjs +2 -2
- package/fesm2022/skyux-text-editor.mjs +31 -11
- package/fesm2022/skyux-text-editor.mjs.map +1 -1
- package/lib/modules/text-editor/text-editor.component.d.ts +11 -1
- package/package.json +12 -12
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, NgZone, TemplateRef, ViewChild, ViewEncapsulation, inject, } from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, NgZone, TemplateRef, ViewChild, ViewEncapsulation, booleanAttribute, inject, } from '@angular/core';
|
|
3
3
|
import { NgControl } from '@angular/forms';
|
|
4
4
|
import { SkyCoreAdapterService, SkyFormsUtility, SkyIdModule, SkyIdService, } from '@skyux/core';
|
|
5
|
-
import { SKY_FORM_ERRORS_ENABLED, SkyFormErrorsModule, SkyFormFieldLabelTextRequiredService, SkyInputBoxHostService, } from '@skyux/forms';
|
|
5
|
+
import { SKY_FORM_ERRORS_ENABLED, SkyFormErrorsModule, SkyFormFieldLabelTextRequiredService, SkyInputBoxHostService, SkyRequiredStateDirective, } from '@skyux/forms';
|
|
6
6
|
import { SkyToolbarModule } from '@skyux/layout';
|
|
7
7
|
import { Subject } from 'rxjs';
|
|
8
8
|
import { takeUntil } from 'rxjs/operators';
|
|
@@ -20,10 +20,10 @@ import { SkyTextEditorService } from './services/text-editor.service';
|
|
|
20
20
|
import { SkyTextSanitizationService } from './services/text-sanitization.service';
|
|
21
21
|
import { SkyTextEditorToolbarComponent } from './toolbar/text-editor-toolbar.component';
|
|
22
22
|
import * as i0 from "@angular/core";
|
|
23
|
-
import * as i1 from "@
|
|
24
|
-
import * as i2 from "@
|
|
25
|
-
import * as i3 from "@skyux/
|
|
26
|
-
import * as i4 from "@skyux/
|
|
23
|
+
import * as i1 from "@skyux/forms";
|
|
24
|
+
import * as i2 from "@angular/common";
|
|
25
|
+
import * as i3 from "@skyux/core";
|
|
26
|
+
import * as i4 from "@skyux/layout";
|
|
27
27
|
import * as i5 from "@skyux/i18n";
|
|
28
28
|
/**
|
|
29
29
|
* The text editor component lets users format and manipulate text.
|
|
@@ -236,6 +236,12 @@ export class SkyTextEditorComponent {
|
|
|
236
236
|
* Whether to put focus on the editor after it renders.
|
|
237
237
|
*/
|
|
238
238
|
this.autofocus = false;
|
|
239
|
+
/**
|
|
240
|
+
* Whether the text editor is stacked on another form component. When specified,
|
|
241
|
+
* the appropriate vertical spacing is automatically added to the text editor.
|
|
242
|
+
* @preview
|
|
243
|
+
*/
|
|
244
|
+
this.stacked = false;
|
|
239
245
|
this.editorFocusStream = new Subject();
|
|
240
246
|
this.formControlClass = !!inject(SkyInputBoxHostService, {
|
|
241
247
|
optional: true,
|
|
@@ -266,6 +272,7 @@ export class SkyTextEditorComponent {
|
|
|
266
272
|
});
|
|
267
273
|
this.errorId = this.#idSvc.generateId();
|
|
268
274
|
this.ngControl = inject(NgControl);
|
|
275
|
+
this.requiredState = inject(SkyRequiredStateDirective);
|
|
269
276
|
/* istanbul ignore next */
|
|
270
277
|
this.#_onTouched = () => {
|
|
271
278
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
@@ -350,6 +357,8 @@ export class SkyTextEditorComponent {
|
|
|
350
357
|
?.pipe(takeUntil(this.#ngUnsubscribe))
|
|
351
358
|
.subscribe(() => {
|
|
352
359
|
this.#updateA11yAttributes();
|
|
360
|
+
// Trigger change detection when the field status is modified programmatically.
|
|
361
|
+
this.#changeDetector.markForCheck();
|
|
353
362
|
});
|
|
354
363
|
this.#editorService
|
|
355
364
|
.inputListener()
|
|
@@ -418,7 +427,7 @@ export class SkyTextEditorComponent {
|
|
|
418
427
|
if (this.#editorService.isInitialized) {
|
|
419
428
|
this.#adapterService.setLabelAttribute(this.labelText);
|
|
420
429
|
this.#adapterService.setErrorAttributes(this.labelText ? this.errorId : '', this.ngControl.errors);
|
|
421
|
-
this.#adapterService.setRequiredAttribute(
|
|
430
|
+
this.#adapterService.setRequiredAttribute(this.requiredState.isRequired());
|
|
422
431
|
}
|
|
423
432
|
}
|
|
424
433
|
#viewToModelUpdate(emitChange = true) {
|
|
@@ -433,12 +442,12 @@ export class SkyTextEditorComponent {
|
|
|
433
442
|
/* istanbul ignore next */
|
|
434
443
|
#_onChange;
|
|
435
444
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyTextEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
436
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
445
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.4", type: SkyTextEditorComponent, isStandalone: true, selector: "sky-text-editor", inputs: { autofocus: "autofocus", disabled: "disabled", fontList: "fontList", fontSizeList: "fontSizeList", hintText: "hintText", id: "id", initialStyleState: "initialStyleState", labelText: "labelText", menus: "menus", mergeFields: "mergeFields", placeholder: "placeholder", stacked: ["stacked", "stacked", booleanAttribute], toolbarActions: "toolbarActions", linkWindowOptions: "linkWindowOptions" }, host: { properties: { "class.sky-margin-stacked-lg": "this.stacked", "class.sky-form-control": "this.formControlClass", "style.display": "this.display" } }, providers: [
|
|
437
446
|
SkyTextEditorService,
|
|
438
447
|
SkyTextEditorSelectionService,
|
|
439
448
|
SkyTextEditorAdapterService,
|
|
440
449
|
{ provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
|
|
441
|
-
], 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\n class=\"sky-text-editor\"\n [ngClass]=\"{\n 'sky-text-editor-disabled': disabled,\n 'sky-text-editor-wrapper-focused': editorFocused,\n 'sky-text-editor-invalid'
|
|
450
|
+
], viewQueries: [{ propertyName: "iframeRef", first: true, predicate: ["iframe"], descendants: true }, { propertyName: "inputTemplateRef", first: true, predicate: ["inputTemplateRef"], descendants: true, read: TemplateRef, static: true }], hostDirectives: [{ directive: i1.SkyRequiredStateDirective, inputs: ["required", "required"] }], ngImport: i0, template: "<div\n class=\"sky-text-editor\"\n [ngClass]=\"{\n 'sky-text-editor-disabled': disabled,\n 'sky-text-editor-wrapper-focused': editorFocused,\n 'sky-text-editor-invalid':\n ngControl.errors && (ngControl.touched || ngControl.dirty),\n 'sky-margin-stacked-xs': !!hintText\n }\"\n>\n <div class=\"sky-text-editor-label-wrapper\">\n <label\n *ngIf=\"labelText\"\n class=\"sky-control-label\"\n [ngClass]=\"{\n 'sky-control-label-required': requiredState.isRequired()\n }\"\n >{{ labelText }}</label\n >\n </div>\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 [linkWindowOptions]=\"linkWindowOptions\"\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 [attr.title]=\"\n labelText || ('skyux_text_editor_iframe_title_default' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [ngClass]=\"{\n 'sky-text-editor-wrapper-disabled': disabled\n }\"\n (load)=\"onIframeLoad()\"\n #iframe\n allow=\"clipboard-read *; clipboard-write *\"\n >\n </iframe>\n</div>\n<div\n skyId\n [ngClass]=\"{\n 'sky-font-deemphasized sky-text-editor-hint-text': !!hintText\n }\"\n #hintTextEl=\"skyId\"\n>\n {{ hintText }}\n</div>\n<sky-form-errors\n *ngIf=\"labelText && ngControl?.errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl.errors\"\n [labelText]=\"labelText\"\n [showErrors]=\"ngControl.touched || ngControl.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n", styles: ["sky-text-editor.sky-margin-stacked-lg{display:block}.sky-text-editor.sky-text-editor-disabled .sky-toolbar *,.sky-text-editor.sky-text-editor-disabled .sky-text-editor-wrapper *{color:var(--sky-text-color-deemphasized)!important}.sky-text-editor .sky-text-editor-label-wrapper{display:flex;width:100%}.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 #cdcfd2;border-top:none;overflow-y:auto;outline:none}.sky-text-editor .sky-text-editor-wrapper.sky-text-editor-wrapper-disabled{background-color:var(--sky-background-color-disabled)}.sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}.sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{box-shadow:0 0 8px #00b4f199;border:1px solid var(--sky-highlight-color-info);outline:none}.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;border-right:1px solid #cdcfd2}.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{border:none;box-shadow:inset 0 0 0 1px #d2d2d2;border-radius:6px}.sky-theme-modern .sky-text-editor.sky-text-editor-disabled{background-color:var(--sky-background-color-disabled);cursor:not-allowed}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty){display:flex;padding:10px 10px 0;width:100%;color:#686c73;transition:border-color .15s,box-shadow .15s,color .15s}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty) label{font-size:13px;margin-bottom:0}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-label-wrapper{color:var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-label-wrapper{color:#1870b8}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 3px #0000004d}.sky-theme-modern .sky-text-editor:not(.sky-text-editor-wrapper-focused) .sky-text-editor-wrapper:hover{border:none;box-shadow:inset 0 0 0 1px #1870b8}.sky-theme-modern .sky-text-editor .sky-text-editor-wrapper{transition:border-color .15s,box-shadow .15s,color .15s;box-shadow:inset 0 0 0 1px #d2d2d2;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border:none}.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;border-top:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar sky-toolbar-section:not(:last-of-type) .sky-toolbar-section{padding-bottom:0!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:none!important;border-right:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 0 0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: SkyIdModule }, { kind: "directive", type: i3.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "component", type: SkyTextEditorMenubarComponent, selector: "sky-text-editor-menubar", inputs: ["editorFocusStream", "menus", "mergeFields", "disabled"] }, { kind: "component", type: SkyTextEditorToolbarComponent, selector: "sky-text-editor-toolbar", inputs: ["editorFocusStream", "fontList", "fontSizeList", "toolbarActions", "linkWindowOptions", "styleState", "disabled"] }, { kind: "ngmodule", type: SkyToolbarModule }, { kind: "component", type: i4.λ37, selector: "sky-toolbar", inputs: ["listDescriptor"] }, { kind: "component", type: i4.λ38, selector: "sky-toolbar-section" }, { kind: "ngmodule", type: SkyFormErrorsModule }, { kind: "component", type: i1.λ21, selector: "sky-form-errors", inputs: ["errors", "labelText", "showErrors"] }, { kind: "ngmodule", type: SkyTextEditorResourcesModule }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
442
451
|
}
|
|
443
452
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: SkyTextEditorComponent, decorators: [{
|
|
444
453
|
type: Component,
|
|
@@ -447,6 +456,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
447
456
|
SkyTextEditorSelectionService,
|
|
448
457
|
SkyTextEditorAdapterService,
|
|
449
458
|
{ provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
|
|
459
|
+
], hostDirectives: [
|
|
460
|
+
{
|
|
461
|
+
directive: SkyRequiredStateDirective,
|
|
462
|
+
inputs: ['required'],
|
|
463
|
+
},
|
|
450
464
|
], imports: [
|
|
451
465
|
CommonModule,
|
|
452
466
|
SkyIdModule,
|
|
@@ -455,7 +469,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
455
469
|
SkyToolbarModule,
|
|
456
470
|
SkyFormErrorsModule,
|
|
457
471
|
SkyTextEditorResourcesModule,
|
|
458
|
-
], template: "<div\n class=\"sky-text-editor\"\n [ngClass]=\"{\n 'sky-text-editor-disabled': disabled,\n 'sky-text-editor-wrapper-focused': editorFocused,\n 'sky-text-editor-invalid'
|
|
472
|
+
], template: "<div\n class=\"sky-text-editor\"\n [ngClass]=\"{\n 'sky-text-editor-disabled': disabled,\n 'sky-text-editor-wrapper-focused': editorFocused,\n 'sky-text-editor-invalid':\n ngControl.errors && (ngControl.touched || ngControl.dirty),\n 'sky-margin-stacked-xs': !!hintText\n }\"\n>\n <div class=\"sky-text-editor-label-wrapper\">\n <label\n *ngIf=\"labelText\"\n class=\"sky-control-label\"\n [ngClass]=\"{\n 'sky-control-label-required': requiredState.isRequired()\n }\"\n >{{ labelText }}</label\n >\n </div>\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 [linkWindowOptions]=\"linkWindowOptions\"\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 [attr.title]=\"\n labelText || ('skyux_text_editor_iframe_title_default' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [ngClass]=\"{\n 'sky-text-editor-wrapper-disabled': disabled\n }\"\n (load)=\"onIframeLoad()\"\n #iframe\n allow=\"clipboard-read *; clipboard-write *\"\n >\n </iframe>\n</div>\n<div\n skyId\n [ngClass]=\"{\n 'sky-font-deemphasized sky-text-editor-hint-text': !!hintText\n }\"\n #hintTextEl=\"skyId\"\n>\n {{ hintText }}\n</div>\n<sky-form-errors\n *ngIf=\"labelText && ngControl?.errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl.errors\"\n [labelText]=\"labelText\"\n [showErrors]=\"ngControl.touched || ngControl.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n", styles: ["sky-text-editor.sky-margin-stacked-lg{display:block}.sky-text-editor.sky-text-editor-disabled .sky-toolbar *,.sky-text-editor.sky-text-editor-disabled .sky-text-editor-wrapper *{color:var(--sky-text-color-deemphasized)!important}.sky-text-editor .sky-text-editor-label-wrapper{display:flex;width:100%}.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 #cdcfd2;border-top:none;overflow-y:auto;outline:none}.sky-text-editor .sky-text-editor-wrapper.sky-text-editor-wrapper-disabled{background-color:var(--sky-background-color-disabled)}.sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{box-shadow:0 0 8px #ef404499;border:1px solid var(--sky-highlight-color-danger);outline:none}.sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{box-shadow:0 0 8px #00b4f199;border:1px solid var(--sky-highlight-color-info);outline:none}.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;border-right:1px solid #cdcfd2}.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{border:none;box-shadow:inset 0 0 0 1px #d2d2d2;border-radius:6px}.sky-theme-modern .sky-text-editor.sky-text-editor-disabled{background-color:var(--sky-background-color-disabled);cursor:not-allowed}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty){display:flex;padding:10px 10px 0;width:100%;color:#686c73;transition:border-color .15s,box-shadow .15s,color .15s}.sky-theme-modern .sky-text-editor .sky-text-editor-label-wrapper:not(:empty) label{font-size:13px;margin-bottom:0}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-label-wrapper{color:var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-invalid .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px var(--sky-highlight-color-danger)}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-label-wrapper{color:#1870b8}.sky-theme-modern .sky-text-editor.sky-text-editor-wrapper-focused .sky-text-editor-wrapper{border:none;box-shadow:inset 0 0 0 2px #1870b8,0 1px 3px #0000004d}.sky-theme-modern .sky-text-editor:not(.sky-text-editor-wrapper-focused) .sky-text-editor-wrapper:hover{border:none;box-shadow:inset 0 0 0 1px #1870b8}.sky-theme-modern .sky-text-editor .sky-text-editor-wrapper{transition:border-color .15s,box-shadow .15s,color .15s;box-shadow:inset 0 0 0 1px #d2d2d2;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border:none}.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;border-top:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar sky-toolbar-section:not(:last-of-type) .sky-toolbar-section{padding-bottom:0!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-sectioned{border-left:none!important;border-right:none!important}.sky-theme-modern .sky-text-editor .sky-text-editor-toolbar .sky-toolbar-item{margin:0 20px 0 0!important}\n"] }]
|
|
459
473
|
}], ctorParameters: () => [], propDecorators: { autofocus: [{
|
|
460
474
|
type: Input
|
|
461
475
|
}], disabled: [{
|
|
@@ -478,6 +492,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
478
492
|
type: Input
|
|
479
493
|
}], placeholder: [{
|
|
480
494
|
type: Input
|
|
495
|
+
}], stacked: [{
|
|
496
|
+
type: Input,
|
|
497
|
+
args: [{ transform: booleanAttribute }]
|
|
498
|
+
}, {
|
|
499
|
+
type: HostBinding,
|
|
500
|
+
args: ['class.sky-margin-stacked-lg']
|
|
481
501
|
}], toolbarActions: [{
|
|
482
502
|
type: Input
|
|
483
503
|
}], linkWindowOptions: [{
|
|
@@ -498,4 +518,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
498
518
|
type: HostBinding,
|
|
499
519
|
args: ['style.display']
|
|
500
520
|
}] } });
|
|
501
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBR04sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksR0FDYixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixvQ0FBb0MsRUFDcEMsc0JBQXNCLEdBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFB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QURyQixLQUFLO2dCQW9CSyxjQUFjO3NCQUR4QixLQUFLO2dCQWdCSyxpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBWUMsU0FBUztzQkFEZixTQUFTO3VCQUFDLFFBQVE7Z0JBc0RaLGdCQUFnQjtzQkFKdEIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRTt3QkFDN0IsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQU1NLGdCQUFnQjtzQkFEdEIsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBTTlCLE9BQU87c0JBRGIsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIFNreUNvcmVBZGFwdGVyU2VydmljZSxcbiAgU2t5Rm9ybXNVdGlsaXR5LFxuICBTa3lJZE1vZHVsZSxcbiAgU2t5SWRTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCxcbiAgU2t5Rm9ybUVycm9yc01vZHVsZSxcbiAgU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWRTZXJ2aWNlLFxuICBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvZm9ybXMnO1xuaW1wb3J0IHsgU2t5VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bza3l1eC9sYXlvdXQnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVRleHRFZGl0b3JSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LXRleHQtZWRpdG9yLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBGT05UX0xJU1RfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL2ZvbnQtbGlzdC1kZWZhdWx0cyc7XG5pbXBvcnQgeyBGT05UX1NJWkVfTElTVF9ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvZm9udC1zaXplLWxpc3QtZGVmYXVsdHMnO1xuaW1wb3J0IHsgTElOS19XSU5ET1dfT1BUSU9OU19ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvbGluay13aW5kb3ctb3B0aW9ucy1kZWZhdWx0cyc7XG5pbXBvcnQgeyBNRU5VX0RFRkFVTFRTIH0gZnJvbSAnLi9kZWZhdWx0cy9tZW51LWRlZmF1bHRzJztcbmltcG9ydCB7IFNUWUxFX1NUQVRFX0RFRkFVTFRTIH0gZnJvbSAnLi9kZWZhdWx0cy9zdHlsZS1zdGF0ZS1kZWZhdWx0cyc7XG5pbXBvcnQgeyBUT09MQkFSX0FDVElPTl9ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvdG9vbGJhci1hY3Rpb24tZGVmYXVsdHMnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lbnViYXJDb21wb25lbnQgfSBmcm9tICcuL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90ZXh0LWVkaXRvci1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvclNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3RleHQtZWRpdG9yLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90ZXh0LWVkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRleHRTYW5pdGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90ZXh0LXNhbml0aXphdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi90b29sYmFyL3RleHQtZWRpdG9yLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JGb250IH0gZnJvbSAnLi90eXBlcy9mb250LXN0YXRlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JMaW5rV2luZG93T3B0aW9uc1R5cGUgfSBmcm9tICcuL3R5cGVzL2xpbmstd2luZG93LW9wdGlvbnMtdHlwZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yTWVudVR5cGUgfSBmcm9tICcuL3R5cGVzL21lbnUtdHlwZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yU3R5bGVTdGF0ZSB9IGZyb20gJy4vdHlwZXMvc3R5bGUtc3RhdGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lcmdlRmllbGQgfSBmcm9tICcuL3R5cGVzL3RleHQtZWRpdG9yLW1lcmdlLWZpZWxkJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZSB9IGZyb20gJy4vdHlwZXMvdG9vbGJhci1hY3Rpb24tdHlwZSc7XG5cbi8qKlxuICogVGhlIHRleHQgZWRpdG9yIGNvbXBvbmVudCBsZXRzIHVzZXJzIGZvcm1hdCBhbmQgbWFuaXB1bGF0ZSB0ZXh0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdza3ktdGV4dC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5VGV4dEVkaXRvclNlcnZpY2UsXG4gICAgU2t5VGV4dEVkaXRvclNlbGVjdGlvblNlcnZpY2UsXG4gICAgU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsIHVzZVZhbHVlOiB0cnVlIH0sXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5VGV4dEVkaXRvck1lbnViYXJDb21wb25lbnQsXG4gICAgU2t5VGV4dEVkaXRvclRvb2xiYXJDb21wb25lbnQsXG4gICAgU2t5VG9vbGJhck1vZHVsZSxcbiAgICBTa3lGb3JtRXJyb3JzTW9kdWxlLFxuICAgIFNreVRleHRFZGl0b3JSZXNvdXJjZXNNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFZGl0b3JDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHV0IGZvY3VzIG9uIHRoZSBlZGl0b3IgYWZ0ZXIgaXQgcmVuZGVycy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSB0ZXh0IGVkaXRvciBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0gU2t5Rm9ybXNVdGlsaXR5LmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKGNvZXJjZWRWYWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jX2Rpc2FibGVkID0gY29lcmNlZFZhbHVlO1xuXG4gICAgICAvLyBVcGRhdGUgZm9jdXNhYmxlQ2hpbGRyZW4gaW5zaWRlIHRoZSBpZnJhbWUuXG4gICAgICBsZXQgZm9jdXNhYmxlQ2hpbGRyZW46IEhUTUxFbGVtZW50W107XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRoaXMuaWZyYW1lUmVmKSB7XG4gICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuID0gdGhpcy4jY29yZUFkYXB0ZXJTZXJ2aWNlLmdldEZvY3VzYWJsZUNoaWxkcmVuKFxuICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHksXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWdub3JlVmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZVRhYkluZGV4OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuI19kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmRpc2FibGVFZGl0b3IoXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbixcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5lbmFibGVFZGl0b3IoXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbixcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZvbnRzIHRvIGluY2x1ZGUgaW4gdGhlIGZvbnQgcGlja2VyLlxuICAgKiBAZGVmYXVsdCBbe25hbWU6ICdCbGFja2JhdWQgU2FucycsIHZhbHVlOiAnXCJCbGFja2JhdWQgU2Fuc1wiLCBBcmlhbCwgc2Fucy1zZXJpZid9LCB7bmFtZTogJ0FyaWFsJywgdmFsdWU6ICdBcmlhbCd9LCB7bmFtZTogJ0FyaWFsIEJsYWNrJywgdmFsdWU6ICdcIkFyaWFsIEJsYWNrXCInfSwge25hbWU6ICdDb3VyaWVyIE5ldycsIHZhbHVlOiAnXCJDb3VyaWVyIE5ld1wiJ30sIHtuYW1lOiAnR2VvcmdpYScsIHZhbHVlOiAnR2VvcmdpYSwgc2VyaWYnfSwge25hbWU6ICdUYWhvbWEnLCB2YWx1ZTogJ1RhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmJ30sIHtuYW1lOiAnVGltZXMgTmV3IFJvbWFuJywgdmFsdWU6ICdcIlRpbWVzIE5ldyBSb21hblwiJ30sIHtuYW1lOiAnVHJlYnVjaGV0IE1TJywgdmFsdWU6ICdcIlRyZWJ1Y2hldCBNU1wiLCBzYW5zLXNlcmlmJ30sIHtuYW1lOiAnVmVyZGFuYScsIHZhbHVlOiAnVmVyZGFuYSwgR2VuZXZhLCBzYW5zLXNlcmlmJ31dXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZvbnRMaXN0KHZhbHVlOiBTa3lUZXh0RWRpdG9yRm9udFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2ZvbnRMaXN0ID0gdmFsdWUgfHwgRk9OVF9MSVNUX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBmb250TGlzdCgpOiBTa3lUZXh0RWRpdG9yRm9udFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2ZvbnRMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb250IHNpemVzIHRvIGluY2x1ZGUgaW4gdGhlIGZvbnQgc2l6ZSBwaWNrZXIuXG4gICAqIEBkZWZhdWx0IFs2LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTgsIDIwLCAyMiwgMjQsIDI2LCAyOCwgMzYsIDQ4XVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmb250U2l6ZUxpc3QodmFsdWU6IG51bWJlcltdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2ZvbnRTaXplTGlzdCA9IHZhbHVlIHx8IEZPTlRfU0laRV9MSVNUX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBmb250U2l6ZUxpc3QoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLiNfZm9udFNpemVMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFtQZXJzaXN0ZW50IGlubGluZSBoZWxwIHRleHRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvZGVzaWduL2d1aWRlbGluZXMvdXNlci1hc3Npc3RhbmNlI2lubGluZS1oZWxwKSB0aGF0IHByb3ZpZGVzXG4gICAqIGFkZGl0aW9uYWwgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaW50VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIElEIGF0dHJpYnV0ZSBmb3IgdGhlIHRleHQgZWRpdG9yLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29tcG9uZW50IGdlbmVyYXRlcyBhIHJhbmRvbSBJRC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2lkID0gdmFsdWUgfHwgdGhpcy4jZGVmYXVsdElkO1xuICB9XG5cbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCBzdHlsZXMgZm9yIGFsbCBjb250ZW50LCBpbmNsdWRpbmcgYmFja2dyb3VuZCBjb2xvciwgZm9udCBzaXplLCBhbmQgbGluayBzdGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW5pdGlhbFN0eWxlU3RhdGUoc3RhdGU6IFNreVRleHRFZGl0b3JTdHlsZVN0YXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRG8gbm90IHVwZGF0ZSB0aGUgc3RhdGUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gaGFzIHRha2VuIHBsYWNlXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMuI2luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUgPSB7XG4gICAgICAgIC4uLlNUWUxFX1NUQVRFX0RFRkFVTFRTLFxuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpbml0aWFsU3R5bGVTdGF0ZSgpOiBTa3lUZXh0RWRpdG9yU3R5bGVTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuI19pbml0aWFsU3R5bGVTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSB0ZXh0IGVkaXRvcidzIGxhYmVsLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsYWJlbFRleHQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19sYWJlbFRleHQgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVBMTF5QXR0cmlidXRlcygpO1xuICB9XG5cbiAgcHVibGljIGdldCBsYWJlbFRleHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2xhYmVsVGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWVudXMgdG8gaW5jbHVkZSBpbiB0aGUgbWVudSBiYXIuXG4gICAqIEBkZWZhdWx0IFsgJ2VkaXQnLCAnZm9ybWF0JyBdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1lbnVzKHZhbHVlOiBTa3lUZXh0RWRpdG9yTWVudVR5cGVbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tZW51cyA9IHZhbHVlIHx8IE1FTlVfREVGQVVMVFM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVzKCk6IFNreVRleHRFZGl0b3JNZW51VHlwZVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX21lbnVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZXJnZSBmaWVsZHMgdG8gaW5jbHVkZSBpbiB0aGUgbWVyZ2UgZmllbGQgbWVudS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWVyZ2VGaWVsZHModmFsdWU6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWVyZ2VGaWVsZHMgPSB2YWx1ZSB8fCBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVyZ2VGaWVsZHMoKTogU2t5VGV4dEVkaXRvck1lcmdlRmllbGRbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19tZXJnZUZpZWxkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IHRvIGRpc3BsYXkgd2hlbiB0aGUgdGV4dCBlbnRyeSBhcmVhIGlzIGVtcHR5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodmFsdWUgIT09IHRoaXMuI19wbGFjZWhvbGRlcikge1xuICAgICAgdGhpcy4jX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgJyc7XG4gICAgICBpZiAodGhpcy4jaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0UGxhY2Vob2xkZXIodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb25zIHRvIGluY2x1ZGUgaW4gdGhlIHRvb2xiYXIgaW4gdGhlIHNwZWNpZmllZCBvcmRlci5cbiAgICogQGRlZmF1bHQgWyAnZm9udC1mYW1pbHknLCAnZm9udC1zaXplJywgJ2ZvbnQtc3R5bGUnLCAnY29sb3InLCAnbGlzdCcsICdsaW5rIF1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdG9vbGJhckFjdGlvbnMoXG4gICAgdmFsdWU6IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZVtdIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICB0aGlzLiNfdG9vbGJhckFjdGlvbnMgPSB2YWx1ZSB8fCBUT09MQkFSX0FDVElPTl9ERUZBVUxUUztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9vbGJhckFjdGlvbnMoKTogU2t5VGV4dEVkaXRvclRvb2xiYXJBY3Rpb25UeXBlW10ge1xuICAgIHJldHVybiB0aGlzLiNfdG9vbGJhckFjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRhcmdldCB3aW5kb3cgb3B0aW9ucyBmb3IgYWRkaW5nIGEgaHlwZXJsaW5rLlxuICAgKiBAZGVmYXVsdCBbICduZXcnLCAnZXhpc3RpbmcnIF1cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbGlua1dpbmRvd09wdGlvbnMoXG4gICAgdmFsdWU6IFNreVRleHRFZGl0b3JMaW5rV2luZG93T3B0aW9uc1R5cGVbXSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgdGhpcy4jX2xpbmtXaW5kb3dPcHRpb25zID0gdmFsdWUgPz8gTElOS19XSU5ET1dfT1BUSU9OU19ERUZBVUxUUztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGlua1dpbmRvd09wdGlvbnMoKTogU2t5VGV4dEVkaXRvckxpbmtXaW5kb3dPcHRpb25zVHlwZVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2xpbmtXaW5kb3dPcHRpb25zO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnaWZyYW1lJylcbiAgcHVibGljIGlmcmFtZVJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGludGVybmFsIHZhbHVlIG9mIHRoZSBjb250cm9sLlxuICAgKi9cbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gTm9ybWFsaXplIHZhbHVlIGFuZCBzZXQgYW55IGVtcHR5IHN0YXRlIHRvIGFuIGVtcHR5IHN0cmluZy5cbiAgICBsZXQgbm9ybWFsaXplZFZhbHVlOiBzdHJpbmc7XG4gICAgY29uc3QgdmFsdWVUcmltbWVkID0gdmFsdWU/LnRyaW0oKTtcblxuICAgIGlmIChcbiAgICAgICF2YWx1ZSB8fFxuICAgICAgdmFsdWVUcmltbWVkID09PSAnPHA+PC9wPicgfHxcbiAgICAgIHZhbHVlVHJpbW1lZCA9PT0gJzxicj4nIHx8XG4gICAgICB2YWx1ZVRyaW1tZWQgPT09ICc8cD48YnI+PC9wPidcbiAgICApIHtcbiAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBub3JtYWxpemVkVmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBub3JtYWxpemVkVmFsdWUgPSB0aGlzLiNzYW5pdGl6YXRpb25TZXJ2aWNlXG4gICAgICAuc2FuaXRpemUobm9ybWFsaXplZFZhbHVlKVxuICAgICAgLnRyaW0oKTtcblxuICAgIGlmICh0aGlzLiNfdmFsdWUgIT09IG5vcm1hbGl6ZWRWYWx1ZSkge1xuICAgICAgdGhpcy4jX3ZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xuXG4gICAgICAvLyBVcGRhdGUgYW5ndWxhciBmb3JtIGNvbnRyb2wgaWYgbW9kZWwgaGFzIGJlZW4gbm9ybWFsaXplZC5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sICYmXG4gICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSAhPT0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWx1ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wuc2V0VmFsdWUobm9ybWFsaXplZFZhbHVlLCB7XG4gICAgICAgICAgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vICNpbml0SWZyYW1lKCkgd2lsbCBkbyBhbm90aGVyIGNoZWNrIGxhdGVyIHRvIHNlZSBpZiB0aGUgZWRpdG9yIHNob3VsZFxuICAgICAgLy8gcmVjZWl2ZSBmb2N1cyBpZiBub3QgaW5pdGlhbGl6ZWQgYmVmb3JlIHRoaXMgaXMgY2FsbGVkLlxuICAgICAgdGhpcy4jY2hlY2tBdXRvZm9jdXNBbmRGb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBpbnB1dFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZWRpdG9yRm9jdXNTdHJlYW0gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2t5LWZvcm0tY29udHJvbCcpXG4gIHB1YmxpYyBmb3JtQ29udHJvbENsYXNzID0gISFpbmplY3QoU2t5SW5wdXRCb3hIb3N0U2VydmljZSwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmRpc3BsYXknKVxuICBwdWJsaWMgZGlzcGxheTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBlZGl0b3JGb2N1c2VkID0gZmFsc2U7XG5cbiAgI2RlZmF1bHRJZDogc3RyaW5nO1xuICAjaWQ6IHN0cmluZztcbiAgI2ZvY3VzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgI2luaXRpYWxpemVkID0gZmFsc2U7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX2ZvbnRMaXN0ID0gRk9OVF9MSVNUX0RFRkFVTFRTO1xuICAjX2ZvbnRTaXplTGlzdCA9IEZPTlRfU0laRV9MSVNUX0RFRkFVTFRTO1xuICAjX2xhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX21lcmdlRmllbGRzOiBTa3lUZXh0RWRpdG9yTWVyZ2VGaWVsZFtdID0gW107XG4gICNfbWVudXMgPSBNRU5VX0RFRkFVTFRTO1xuICAjX3Rvb2xiYXJBY3Rpb25zOiBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGVbXSA9IFRPT0xCQVJfQUNUSU9OX0RFRkFVTFRTO1xuICAjX2xpbmtXaW5kb3dPcHRpb25zID0gTElOS19XSU5ET1dfT1BUSU9OU19ERUZBVUxUUztcbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuICAjX2luaXRpYWxTdHlsZVN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgU1RZTEVfU1RBVEVfREVGQVVMVFMpO1xuICAjX3BsYWNlaG9sZGVyID0gJyc7XG4gICNfdmFsdWUgPSAnPHA+PC9wPic7XG5cbiAgcmVhZG9ubHkgI2FkYXB0ZXJTZXJ2aWNlID0gaW5qZWN0KFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSk7XG4gIHJlYWRvbmx5ICNjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHJlYWRvbmx5ICNjb3JlQWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5Q29yZUFkYXB0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2VkaXRvclNlcnZpY2UgPSBpbmplY3QoU2t5VGV4dEVkaXRvclNlcnZpY2UpO1xuICByZWFkb25seSAjaWRTdmMgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3Nhbml0aXphdGlvblNlcnZpY2UgPSBpbmplY3QoU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2UpO1xuICByZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHJlYWRvbmx5ICNsYWJlbFRleHRSZXF1aXJlZCA9IGluamVjdChTa3lGb3JtRmllbGRMYWJlbFRleHRSZXF1aXJlZFNlcnZpY2UsIHtcbiAgICBvcHRpb25hbDogdHJ1ZSxcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVycm9ySWQgPSB0aGlzLiNpZFN2Yy5nZW5lcmF0ZUlkKCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNpZCA9IHRoaXMuI2RlZmF1bHRJZCA9IHRoaXMuI2lkU3ZjLmdlbmVyYXRlSWQoKTtcbiAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jaW5pdElmcmFtZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNsYWJlbFRleHRSZXF1aXJlZCAmJiAhdGhpcy5sYWJlbFRleHQpIHtcbiAgICAgIHRoaXMuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG4gICAgdGhpcy4jbGFiZWxUZXh0UmVxdWlyZWQ/LnZhbGlkYXRlTGFiZWxUZXh0KHRoaXMubGFiZWxUZXh0KTtcbiAgfVxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UucmVtb3ZlT2JzZXJ2ZXJzKHRoaXMuI2VkaXRvclNlcnZpY2UuZWRpdG9yKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25JZnJhbWVMb2FkKCk6IHZvaWQge1xuICAgIC8vIFJlaW5pdGlhbGl6ZSB0aGUgZWRpdG9yIGlmIGl0IGFscmVhZHkgZXhpc3RzIHRvIGNvdmVyIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHRleHQgZWRpdG9yIG1pZ2h0IGhhdmUgYmVlbiBtb3ZlZCBpbiB0aGUgRE9NLlxuICAgIGlmICh0aGlzLiNlZGl0b3JTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI2luaXRJZnJhbWUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAvLyBVcGRhdGUgSFRNTCBpZiBuZWNlc3NhcnkuXG4gICAgaWYgKHRoaXMuI2luaXRpYWxpemVkKSB7XG4gICAgICBjb25zdCBlZGl0b3JWYWx1ZSA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldEVkaXRvcklubmVySHRtbCgpO1xuICAgICAgaWYgKGVkaXRvclZhbHVlICE9PSB0aGlzLiNfdmFsdWUpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0RWRpdG9ySW5uZXJIdG1sKHRoaXMuI192YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAjY2hlY2tBdXRvZm9jdXNBbmRGb2N1cygpOiB2b2lkIHtcbiAgICAvLyBEb24ndCBzZXQgZm9jdXMgb24gdGhlIGVkaXRvciBpZiB0aGUgaWZyYW1lIGlzbid0IGluaXRpYWxpemVkLlxuICAgIC8vIEF1dG9mb2N1cyBpc24ndCB0ZXN0YWJsZSBpbiBGaXJlZm94IGFuZCBJRS5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLmF1dG9mb2N1cyAmJiB0aGlzLiNpbml0aWFsaXplZCAmJiAhdGhpcy4jZm9jdXNJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNFZGl0b3IoKTtcbiAgICAgIHRoaXMuI2ZvY3VzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVTdHlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUgPSB7XG4gICAgICAuLi50aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUsXG4gICAgICAuLi50aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTdHlsZVN0YXRlKCksXG4gICAgfTtcbiAgfVxuXG4gICNpbml0SWZyYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmluaXRFZGl0b3IoXG4gICAgICB0aGlzLmlkLFxuICAgICAgKHRoaXMuaWZyYW1lUmVmIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLmluaXRpYWxTdHlsZVN0YXRlLFxuICAgICAgdGhpcy5wbGFjZWhvbGRlcixcbiAgICApO1xuXG4gICAgdGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiN1cGRhdGVBMTF5QXR0cmlidXRlcygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuaW5wdXRMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBjaGFuZ2VzIG9yaWdpbmF0aW5nIGluc2lkZSBhbiBpZnJhbWUsXG4gICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gY2FsbCB0aGUgb25DaGFuZ2UoKSBldmVudCBpbnNpZGUgTmdab25lIHRvIGZvcmNlIGNoYW5nZSBwcm9wYWdhdGlvbiB0byBjb25zdW1pbmcgY29tcG9uZW50cy5cbiAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI3ZpZXdUb01vZGVsVXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuc2VsZWN0aW9uQ2hhbmdlTGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZVN0eWxlKCk7XG4gICAgICAgIHRoaXMuZWRpdG9yRm9jdXNTdHJlYW0ubmV4dCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuY2xpY2tMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5lZGl0b3JGb2N1c1N0cmVhbS5uZXh0KCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5ibHVyTGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBydW4gY2hhbmdlIGRldGVjdGlvbiBmb3IgY2hhbmdlcyBvcmlnaW5hdGluZyBpbnNpZGUgYW4gaWZyYW1lLFxuICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIHJ1biBtYXJrRm9yQ2hlY2soKSBpbnNpZGUgdGhlIE5nWm9uZSB0byBmb3JjZSBjaGFuZ2UgcHJvcGFnYXRpb24gdG8gY29uc3VtaW5nIGNvbXBvbmVudHMuXG4gICAgICAgIHRoaXMuI3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNfb25Ub3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy5lZGl0b3JGb2N1c2VkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuY29tbWFuZENoYW5nZUxpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiN1cGRhdGVTdHlsZSgpO1xuICAgICAgICB0aGlzLiN2aWV3VG9Nb2RlbFVwZGF0ZSgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNlZGl0b3JTZXJ2aWNlXG4gICAgICAuZm9jdXNMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBjaGFuZ2VzIG9yaWdpbmF0aW5nIGluc2lkZSBhbiBpZnJhbWUsXG4gICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gcnVuIG1hcmtGb3JDaGVjaygpIGluc2lkZSB0aGUgTmdab25lIHRvIGZvcmNlIGNoYW5nZSBwcm9wYWdhdGlvbiB0byBjb25zdW1pbmcgY29tcG9uZW50cy5cbiAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZWRpdG9yRm9jdXNlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRFZGl0b3JJbm5lckh0bWwodGhpcy4jX3ZhbHVlKTtcbiAgICB0aGlzLiN1cGRhdGVBMTF5QXR0cmlidXRlcygpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAodGhpcy5hdXRvZm9jdXMpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmZvY3VzRWRpdG9yKCk7XG4gICAgfVxuXG4gICAgdGhpcy4jaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuI2ZvY3VzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuI2NoZWNrQXV0b2ZvY3VzQW5kRm9jdXMoKTtcbiAgfVxuXG4gICN1cGRhdGVBMTF5QXR0cmlidXRlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jZWRpdG9yU2VydmljZS5pc0luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRMYWJlbEF0dHJpYnV0ZSh0aGlzLmxhYmVsVGV4dCk7XG4gICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRFcnJvckF0dHJpYnV0ZXMoXG4gICAgICAgIHRoaXMubGFiZWxUZXh0ID8gdGhpcy5lcnJvcklkIDogJycsXG4gICAgICAgIHRoaXMubmdDb250cm9sLmVycm9ycyxcbiAgICAgICk7XG4gICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRSZXF1aXJlZEF0dHJpYnV0ZShcbiAgICAgICAgU2t5Rm9ybXNVdGlsaXR5Lmhhc1JlcXVpcmVkVmFsaWRhdGlvbih0aGlzLm5nQ29udHJvbCksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICN2aWV3VG9Nb2RlbFVwZGF0ZShlbWl0Q2hhbmdlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRFZGl0b3JJbm5lckh0bWwoKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChlbWl0Q2hhbmdlKSB7XG4gICAgICB0aGlzLiNfb25DaGFuZ2UodGhpcy4jX3ZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAjX29uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIH07XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgI19vbkNoYW5nZTogKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdmFsdWU6IGFueSxcbiAgKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgfTtcbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3JcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS10ZXh0LWVkaXRvci1kaXNhYmxlZCc6IGRpc2FibGVkLFxuICAgICdza3ktdGV4dC1lZGl0b3Itd3JhcHBlci1mb2N1c2VkJzogZWRpdG9yRm9jdXNlZCxcbiAgICAnc2t5LXRleHQtZWRpdG9yLWludmFsaWQnOiBuZ0NvbnRyb2wuZXJyb3JzLFxuICAgICdza3ktbWFyZ2luLXN0YWNrZWQteHMnOiAhIWhpbnRUZXh0XG4gIH1cIlxuPlxuICA8ZGl2IGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWxhYmVsLXdyYXBwZXJcIj5cbiAgICA8bGFiZWwgKm5nSWY9XCJsYWJlbFRleHRcIiBjbGFzcz1cInNreS1jb250cm9sLWxhYmVsXCI+e3sgbGFiZWxUZXh0IH19PC9sYWJlbD5cbiAgPC9kaXY+XG4gIDxza3ktdG9vbGJhclxuICAgICpuZ0lmPVwiXG4gICAgICAobWVudXMgJiYgbWVudXMubGVuZ3RoKSA+IDAgfHxcbiAgICAgICh0b29sYmFyQWN0aW9ucyAmJiB0b29sYmFyQWN0aW9ucy5sZW5ndGggPiAwKVxuICAgIFwiXG4gICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItdG9vbGJhclwiXG4gID5cbiAgICA8c2t5LXRvb2xiYXItc2VjdGlvblxuICAgICAgKm5nSWY9XCJtZW51cyAmJiBtZW51cy5sZW5ndGggPiAwXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJUZXh0IGZvcm1hdHRpbmdcIlxuICAgICAgY2xhc3M9XCJtZW51YmFyXCJcbiAgICAgIHJvbGU9XCJ0b29sYmFyXCJcbiAgICA+XG4gICAgICA8c2t5LXRleHQtZWRpdG9yLW1lbnViYXJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2VkaXRvckZvY3VzU3RyZWFtXT1cImVkaXRvckZvY3VzU3RyZWFtXCJcbiAgICAgICAgW21lbnVzXT1cIm1lbnVzXCJcbiAgICAgICAgW21lcmdlRmllbGRzXT1cIm1lcmdlRmllbGRzXCJcbiAgICAgID5cbiAgICAgIDwvc2t5LXRleHQtZWRpdG9yLW1lbnViYXI+XG4gICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICAgIDxza3ktdG9vbGJhci1zZWN0aW9uXG4gICAgICAqbmdJZj1cInRvb2xiYXJBY3Rpb25zICYmIHRvb2xiYXJBY3Rpb25zLmxlbmd0aCA+IDBcIlxuICAgICAgYXJpYS1sYWJlbD1cIlRleHQgZm9ybWF0dGluZ1wiXG4gICAgICBjbGFzcz1cInRvb2xiYXJcIlxuICAgICAgcm9sZT1cInRvb2xiYXJcIlxuICAgID5cbiAgICAgIDxza3ktdGV4dC1lZGl0b3ItdG9vbGJhclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbZWRpdG9yRm9jdXNTdHJlYW1dPVwiZWRpdG9yRm9jdXNTdHJlYW1cIlxuICAgICAgICBbZm9udExpc3RdPVwiZm9udExpc3RcIlxuICAgICAgICBbZm9udFNpemVMaXN0XT1cImZvbnRTaXplTGlzdFwiXG4gICAgICAgIFtsaW5rV2luZG93T3B0aW9uc109XCJsaW5rV2luZG93T3B0aW9uc1wiXG4gICAgICAgIFt0b29sYmFyQWN0aW9uc109XCJ0b29sYmFyQWN0aW9uc1wiXG4gICAgICAgIFtzdHlsZVN0YXRlXT1cImluaXRpYWxTdHlsZVN0YXRlXCJcbiAgICAgID5cbiAgICAgIDwvc2t5LXRleHQtZWRpdG9yLXRvb2xiYXI+XG4gICAgPC9za3ktdG9vbGJhci1zZWN0aW9uPlxuICA8L3NreS10b29sYmFyPlxuICA8aWZyYW1lXG4gICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3Itd3JhcHBlclwiXG4gICAgc3JjPVwiYWJvdXQ6YmxhbmtcIlxuICAgIFthdHRyLnRpdGxlXT1cIlxuICAgICAgbGFiZWxUZXh0IHx8ICgnc2t5dXhfdGV4dF9lZGl0b3JfaWZyYW1lX3RpdGxlX2RlZmF1bHQnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgIFwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJoaW50VGV4dCA/IGhpbnRUZXh0RWwuaWQgOiB1bmRlZmluZWRcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktdGV4dC1lZGl0b3Itd3JhcHBlci1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgfVwiXG4gICAgKGxvYWQpPVwib25JZnJhbWVMb2FkKClcIlxuICAgICNpZnJhbWVcbiAgICBhbGxvdz1cImNsaXBib2FyZC1yZWFkICo7IGNsaXBib2FyZC13cml0ZSAqXCJcbiAgPlxuICA8L2lmcmFtZT5cbjwvZGl2PlxuPGRpdlxuICBza3lJZFxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS1mb250LWRlZW1waGFzaXplZCBza3ktdGV4dC1lZGl0b3ItaGludC10ZXh0JzogISFoaW50VGV4dFxuICB9XCJcbiAgI2hpbnRUZXh0RWw9XCJza3lJZFwiXG4+XG4gIHt7IGhpbnRUZXh0IH19XG48L2Rpdj5cbjxza3ktZm9ybS1lcnJvcnNcbiAgKm5nSWY9XCJsYWJlbFRleHQgJiYgbmdDb250cm9sPy5lcnJvcnNcIlxuICBbaWRdPVwiZXJyb3JJZFwiXG4gIFtlcnJvcnNdPVwibmdDb250cm9sLmVycm9yc1wiXG4gIFtsYWJlbFRleHRdPVwibGFiZWxUZXh0XCJcbiAgW3Nob3dFcnJvcnNdPVwibmdDb250cm9sLnRvdWNoZWQgfHwgbmdDb250cm9sLmRpcnR5XCJcbj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWZvcm0tZXJyb3JcIiAvPlxuPC9za3ktZm9ybS1lcnJvcnM+XG4iXX0=
|
|
521
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBR04sV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsZUFBZSxFQUNmLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsb0NBQW9DLEVBQ3BDLHNCQUFzQixFQUN0Qix5QkFBeUIsR0FDMUIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTFG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N0I7d0RBU00sU0FBUztzQkFEZixLQUFLO2dCQVNLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBMkNLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBY0ssWUFBWTtzQkFEdEIsS0FBSztnQkFlQyxRQUFRO3NCQURkLEtBQUs7Z0JBUUssRUFBRTtzQkFEWixLQUFLO2dCQWFLLGlCQUFpQjtzQkFEM0IsS0FBSztnQkFxQkssU0FBUztzQkFEbkIsS0FBSztnQkFlSyxLQUFLO3NCQURmLEtBQUs7Z0JBYUssV0FBVztzQkFEckIsS0FBSztnQkFhSyxXQUFXO3NCQURyQixLQUFLO2dCQXNCQyxPQUFPO3NCQUZiLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQUNyQyxXQUFXO3VCQUFDLDZCQUE2QjtnQkFRL0IsY0FBYztzQkFEeEIsS0FBSztnQkFnQkssaUJBQWlCO3NCQUQzQixLQUFLO2dCQVlDLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxRQUFRO2dCQXNEWixnQkFBZ0I7c0JBSnRCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUU7d0JBQzdCLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFNTSxnQkFBZ0I7c0JBRHRCLFdBQVc7dUJBQUMsd0JBQXdCO2dCQU05QixPQUFPO3NCQURiLFdBQVc7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBTa3lDb3JlQWRhcHRlclNlcnZpY2UsXG4gIFNreUZvcm1zVXRpbGl0eSxcbiAgU2t5SWRNb2R1bGUsXG4gIFNreUlkU2VydmljZSxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHtcbiAgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsXG4gIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIFNreUZvcm1GaWVsZExhYmVsVGV4dFJlcXVpcmVkU2VydmljZSxcbiAgU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgU2t5UmVxdWlyZWRTdGF0ZURpcmVjdGl2ZSxcbn0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreVRvb2xiYXJNb2R1bGUgfSBmcm9tICdAc2t5dXgvbGF5b3V0JztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS10ZXh0LWVkaXRvci1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgRk9OVF9MSVNUX0RFRkFVTFRTIH0gZnJvbSAnLi9kZWZhdWx0cy9mb250LWxpc3QtZGVmYXVsdHMnO1xuaW1wb3J0IHsgRk9OVF9TSVpFX0xJU1RfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL2ZvbnQtc2l6ZS1saXN0LWRlZmF1bHRzJztcbmltcG9ydCB7IExJTktfV0lORE9XX09QVElPTlNfREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL2xpbmstd2luZG93LW9wdGlvbnMtZGVmYXVsdHMnO1xuaW1wb3J0IHsgTUVOVV9ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvbWVudS1kZWZhdWx0cyc7XG5pbXBvcnQgeyBTVFlMRV9TVEFURV9ERUZBVUxUUyB9IGZyb20gJy4vZGVmYXVsdHMvc3R5bGUtc3RhdGUtZGVmYXVsdHMnO1xuaW1wb3J0IHsgVE9PTEJBUl9BQ1RJT05fREVGQVVMVFMgfSBmcm9tICcuL2RlZmF1bHRzL3Rvb2xiYXItYWN0aW9uLWRlZmF1bHRzJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZW51YmFyQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51YmFyL3RleHQtZWRpdG9yLW1lbnViYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1lZGl0b3ItYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90ZXh0LWVkaXRvci1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0U2FuaXRpemF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGV4dC1zYW5pdGl6YXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vdG9vbGJhci90ZXh0LWVkaXRvci10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yRm9udCB9IGZyb20gJy4vdHlwZXMvZm9udC1zdGF0ZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yTGlua1dpbmRvd09wdGlvbnNUeXBlIH0gZnJvbSAnLi90eXBlcy9saW5rLXdpbmRvdy1vcHRpb25zLXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lbnVUeXBlIH0gZnJvbSAnLi90eXBlcy9tZW51LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvclN0eWxlU3RhdGUgfSBmcm9tICcuL3R5cGVzL3N0eWxlLXN0YXRlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkIH0gZnJvbSAnLi90eXBlcy90ZXh0LWVkaXRvci1tZXJnZS1maWVsZCc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzL3Rvb2xiYXItYWN0aW9uLXR5cGUnO1xuXG4vKipcbiAqIFRoZSB0ZXh0IGVkaXRvciBjb21wb25lbnQgbGV0cyB1c2VycyBmb3JtYXQgYW5kIG1hbmlwdWxhdGUgdGV4dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnc2t5LXRleHQtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVRleHRFZGl0b3JTZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVELCB1c2VWYWx1ZTogdHJ1ZSB9LFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW1xuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogU2t5UmVxdWlyZWRTdGF0ZURpcmVjdGl2ZSxcbiAgICAgIGlucHV0czogWydyZXF1aXJlZCddLFxuICAgIH0sXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5VGV4dEVkaXRvck1lbnViYXJDb21wb25lbnQsXG4gICAgU2t5VGV4dEVkaXRvclRvb2xiYXJDb21wb25lbnQsXG4gICAgU2t5VG9vbGJhck1vZHVsZSxcbiAgICBTa3lGb3JtRXJyb3JzTW9kdWxlLFxuICAgIFNreVRleHRFZGl0b3JSZXNvdXJjZXNNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRleHRFZGl0b3JDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcHV0IGZvY3VzIG9uIHRoZSBlZGl0b3IgYWZ0ZXIgaXQgcmVuZGVycy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSB0ZXh0IGVkaXRvciBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZSB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZSB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy5cbiAgICogVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcywgdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0gU2t5Rm9ybXNVdGlsaXR5LmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKGNvZXJjZWRWYWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy4jX2Rpc2FibGVkID0gY29lcmNlZFZhbHVlO1xuXG4gICAgICAvLyBVcGRhdGUgZm9jdXNhYmxlQ2hpbGRyZW4gaW5zaWRlIHRoZSBpZnJhbWUuXG4gICAgICBsZXQgZm9jdXNhYmxlQ2hpbGRyZW46IEhUTUxFbGVtZW50W107XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHRoaXMuaWZyYW1lUmVmKSB7XG4gICAgICAgIGZvY3VzYWJsZUNoaWxkcmVuID0gdGhpcy4jY29yZUFkYXB0ZXJTZXJ2aWNlLmdldEZvY3VzYWJsZUNoaWxkcmVuKFxuICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHksXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWdub3JlVmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZVRhYkluZGV4OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuI19kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmRpc2FibGVFZGl0b3IoXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbixcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5lbmFibGVFZGl0b3IoXG4gICAgICAgICAgICBmb2N1c2FibGVDaGlsZHJlbixcbiAgICAgICAgICAgIHRoaXMuaWZyYW1lUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZvbnRzIHRvIGluY2x1ZGUgaW4gdGhlIGZvbnQgcGlja2VyLlxuICAgKiBAZGVmYXVsdCBbe25hbWU6ICdCbGFja2JhdWQgU2FucycsIHZhbHVlOiAnXCJCbGFja2JhdWQgU2Fuc1wiLCBBcmlhbCwgc2Fucy1zZXJpZid9LCB7bmFtZTogJ0FyaWFsJywgdmFsdWU6ICdBcmlhbCd9LCB7bmFtZTogJ0FyaWFsIEJsYWNrJywgdmFsdWU6ICdcIkFyaWFsIEJsYWNrXCInfSwge25hbWU6ICdDb3VyaWVyIE5ldycsIHZhbHVlOiAnXCJDb3VyaWVyIE5ld1wiJ30sIHtuYW1lOiAnR2VvcmdpYScsIHZhbHVlOiAnR2VvcmdpYSwgc2VyaWYnfSwge25hbWU6ICdUYWhvbWEnLCB2YWx1ZTogJ1RhaG9tYSwgR2VuZXZhLCBzYW5zLXNlcmlmJ30sIHtuYW1lOiAnVGltZXMgTmV3IFJvbWFuJywgdmFsdWU6ICdcIlRpbWVzIE5ldyBSb21hblwiJ30sIHtuYW1lOiAnVHJlYnVjaGV0IE1TJywgdmFsdWU6ICdcIlRyZWJ1Y2hldCBNU1wiLCBzYW5zLXNlcmlmJ30sIHtuYW1lOiAnVmVyZGFuYScsIHZhbHVlOiAnVmVyZGFuYSwgR2VuZXZhLCBzYW5zLXNlcmlmJ31dXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZvbnRMaXN0KHZhbHVlOiBTa3lUZXh0RWRpdG9yRm9udFtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2ZvbnRMaXN0ID0gdmFsdWUgfHwgRk9OVF9MSVNUX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBmb250TGlzdCgpOiBTa3lUZXh0RWRpdG9yRm9udFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2ZvbnRMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmb250IHNpemVzIHRvIGluY2x1ZGUgaW4gdGhlIGZvbnQgc2l6ZSBwaWNrZXIuXG4gICAqIEBkZWZhdWx0IFs2LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTgsIDIwLCAyMiwgMjQsIDI2LCAyOCwgMzYsIDQ4XVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmb250U2l6ZUxpc3QodmFsdWU6IG51bWJlcltdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2ZvbnRTaXplTGlzdCA9IHZhbHVlIHx8IEZPTlRfU0laRV9MSVNUX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBmb250U2l6ZUxpc3QoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLiNfZm9udFNpemVMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFtQZXJzaXN0ZW50IGlubGluZSBoZWxwIHRleHRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvZGVzaWduL2d1aWRlbGluZXMvdXNlci1hc3Npc3RhbmNlI2lubGluZS1oZWxwKSB0aGF0IHByb3ZpZGVzXG4gICAqIGFkZGl0aW9uYWwgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaW50VGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIElEIGF0dHJpYnV0ZSBmb3IgdGhlIHRleHQgZWRpdG9yLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29tcG9uZW50IGdlbmVyYXRlcyBhIHJhbmRvbSBJRC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2lkID0gdmFsdWUgfHwgdGhpcy4jZGVmYXVsdElkO1xuICB9XG5cbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCBzdHlsZXMgZm9yIGFsbCBjb250ZW50LCBpbmNsdWRpbmcgYmFja2dyb3VuZCBjb2xvciwgZm9udCBzaXplLCBhbmQgbGluayBzdGF0ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW5pdGlhbFN0eWxlU3RhdGUoc3RhdGU6IFNreVRleHRFZGl0b3JTdHlsZVN0YXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRG8gbm90IHVwZGF0ZSB0aGUgc3RhdGUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gaGFzIHRha2VuIHBsYWNlXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoIXRoaXMuI2luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUgPSB7XG4gICAgICAgIC4uLlNUWUxFX1NUQVRFX0RFRkFVTFRTLFxuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpbml0aWFsU3R5bGVTdGF0ZSgpOiBTa3lUZXh0RWRpdG9yU3R5bGVTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuI19pbml0aWFsU3R5bGVTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSB0ZXh0IGVkaXRvcidzIGxhYmVsLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsYWJlbFRleHQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19sYWJlbFRleHQgPSB2YWx1ZTtcbiAgICB0aGlzLiN1cGRhdGVBMTF5QXR0cmlidXRlcygpO1xuICB9XG5cbiAgcHVibGljIGdldCBsYWJlbFRleHQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2xhYmVsVGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWVudXMgdG8gaW5jbHVkZSBpbiB0aGUgbWVudSBiYXIuXG4gICAqIEBkZWZhdWx0IFsgJ2VkaXQnLCAnZm9ybWF0JyBdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1lbnVzKHZhbHVlOiBTa3lUZXh0RWRpdG9yTWVudVR5cGVbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19tZW51cyA9IHZhbHVlIHx8IE1FTlVfREVGQVVMVFM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lbnVzKCk6IFNreVRleHRFZGl0b3JNZW51VHlwZVtdIHtcbiAgICByZXR1cm4gdGhpcy4jX21lbnVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBtZXJnZSBmaWVsZHMgdG8gaW5jbHVkZSBpbiB0aGUgbWVyZ2UgZmllbGQgbWVudS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWVyZ2VGaWVsZHModmFsdWU6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWVyZ2VGaWVsZHMgPSB2YWx1ZSB8fCBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWVyZ2VGaWVsZHMoKTogU2t5VGV4dEVkaXRvck1lcmdlRmllbGRbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19tZXJnZUZpZWxkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZWhvbGRlciB0ZXh0IHRvIGRpc3BsYXkgd2hlbiB0aGUgdGV4dCBlbnRyeSBhcmVhIGlzIGVtcHR5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodmFsdWUgIT09IHRoaXMuI19wbGFjZWhvbGRlcikge1xuICAgICAgdGhpcy4jX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgJyc7XG4gICAgICBpZiAodGhpcy4jaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0UGxhY2Vob2xkZXIodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRleHQgZWRpdG9yIGlzIHN0YWNrZWQgb24gYW5vdGhlciBmb3JtIGNvbXBvbmVudC4gV2hlbiBzcGVjaWZpZWQsXG4gICAqIHRoZSBhcHByb3ByaWF0ZSB2ZXJ0aWNhbCBzcGFjaW5nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIHRleHQgZWRpdG9yLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2t5LW1hcmdpbi1zdGFja2VkLWxnJylcbiAgcHVibGljIHN0YWNrZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGFjdGlvbnMgdG8gaW5jbHVkZSBpbiB0aGUgdG9vbGJhciBpbiB0aGUgc3BlY2lmaWVkIG9yZGVyLlxuICAgKiBAZGVmYXVsdCBbICdmb250LWZhbWlseScsICdmb250LXNpemUnLCAnZm9udC1zdHlsZScsICdjb2xvcicsICdsaXN0JywgJ2xpbmsgXVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0b29sYmFyQWN0aW9ucyhcbiAgICB2YWx1ZTogU2t5VGV4dEVkaXRvclRvb2xiYXJBY3Rpb25UeXBlW10gfCB1bmRlZmluZWQsXG4gICkge1xuICAgIHRoaXMuI190b29sYmFyQWN0aW9ucyA9IHZhbHVlIHx8IFRPT0xCQVJfQUNUSU9OX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCB0b29sYmFyQWN0aW9ucygpOiBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuI190b29sYmFyQWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHdpbmRvdyBvcHRpb25zIGZvciBhZGRpbmcgYSBoeXBlcmxpbmsuXG4gICAqIEBkZWZhdWx0IFsgJ25ldycsICdleGlzdGluZycgXVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsaW5rV2luZG93T3B0aW9ucyhcbiAgICB2YWx1ZTogU2t5VGV4dEVkaXRvckxpbmtXaW5kb3dPcHRpb25zVHlwZVtdIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICB0aGlzLiNfbGlua1dpbmRvd09wdGlvbnMgPSB2YWx1ZSA/PyBMSU5LX1dJTkRPV19PUFRJT05TX0RFRkFVTFRTO1xuICB9XG5cbiAgcHVibGljIGdldCBsaW5rV2luZG93T3B0aW9ucygpOiBTa3lUZXh0RWRpdG9yTGlua1dpbmRvd09wdGlvbnNUeXBlW10ge1xuICAgIHJldHVybiB0aGlzLiNfbGlua1dpbmRvd09wdGlvbnM7XG4gIH1cblxuICBAVmlld0NoaWxkKCdpZnJhbWUnKVxuICBwdWJsaWMgaWZyYW1lUmVmOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgdmFsdWUgb2YgdGhlIGNvbnRyb2wuXG4gICAqL1xuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAvLyBOb3JtYWxpemUgdmFsdWUgYW5kIHNldCBhbnkgZW1wdHkgc3RhdGUgdG8gYW4gZW1wdHkgc3RyaW5nLlxuICAgIGxldCBub3JtYWxpemVkVmFsdWU6IHN0cmluZztcbiAgICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZT8udHJpbSgpO1xuXG4gICAgaWYgKFxuICAgICAgIXZhbHVlIHx8XG4gICAgICB2YWx1ZVRyaW1tZWQgPT09ICc8cD48L3A+JyB8fFxuICAgICAgdmFsdWVUcmltbWVkID09PSAnPGJyPicgfHxcbiAgICAgIHZhbHVlVHJpbW1lZCA9PT0gJzxwPjxicj48L3A+J1xuICAgICkge1xuICAgICAgbm9ybWFsaXplZFZhbHVlID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMuI3Nhbml0aXphdGlvblNlcnZpY2VcbiAgICAgIC5zYW5pdGl6ZShub3JtYWxpemVkVmFsdWUpXG4gICAgICAudHJpbSgpO1xuXG4gICAgaWYgKHRoaXMuI192YWx1ZSAhPT0gbm9ybWFsaXplZFZhbHVlKSB7XG4gICAgICB0aGlzLiNfdmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG5cbiAgICAgIC8vIFVwZGF0ZSBhbmd1bGFyIGZvcm0gY29udHJvbCBpZiBtb2RlbCBoYXMgYmVlbiBub3JtYWxpemVkLlxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wgJiZcbiAgICAgICAgbm9ybWFsaXplZFZhbHVlICE9PSB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbHVlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zZXRWYWx1ZShub3JtYWxpemVkVmFsdWUsIHtcbiAgICAgICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gI2luaXRJZnJhbWUoKSB3aWxsIGRvIGFub3RoZXIgY2hlY2sgbGF0ZXIgdG8gc2VlIGlmIHRoZSBlZGl0b3Igc2hvdWxkXG4gICAgICAvLyByZWNlaXZlIGZvY3VzIGlmIG5vdCBpbml0aWFsaXplZCBiZWZvcmUgdGhpcyBpcyBjYWxsZWQuXG4gICAgICB0aGlzLiNjaGVja0F1dG9mb2N1c0FuZEZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfdmFsdWU7XG4gIH1cblxuICBAVmlld0NoaWxkKCdpbnB1dFRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIGlucHV0VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBlZGl0b3JGb2N1c1N0cmVhbSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5za3ktZm9ybS1jb250cm9sJylcbiAgcHVibGljIGZvcm1Db250cm9sQ2xhc3MgPSAhIWluamVjdChTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuZGlzcGxheScpXG4gIHB1YmxpYyBkaXNwbGF5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGVkaXRvckZvY3VzZWQgPSBmYWxzZTtcblxuICAjZGVmYXVsdElkOiBzdHJpbmc7XG4gICNpZDogc3RyaW5nO1xuICAjZm9jdXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAjaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfZm9udExpc3QgPSBGT05UX0xJU1RfREVGQVVMVFM7XG4gICNfZm9udFNpemVMaXN0ID0gRk9OVF9TSVpFX0xJU1RfREVGQVVMVFM7XG4gICNfbGFiZWxUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNfbWVyZ2VGaWVsZHM6IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkW10gPSBbXTtcbiAgI19tZW51cyA9IE1FTlVfREVGQVVMVFM7XG4gICNfdG9vbGJhckFjdGlvbnM6IFNreVRleHRFZGl0b3JUb29sYmFyQWN0aW9uVHlwZVtdID0gVE9PTEJBUl9BQ1RJT05fREVGQVVMVFM7XG4gICNfbGlua1dpbmRvd09wdGlvbnMgPSBMSU5LX1dJTkRPV19PUFRJT05TX0RFRkFVTFRTO1xuICAjX2Rpc2FibGVkID0gZmFsc2U7XG4gICNfaW5pdGlhbFN0eWxlU3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBTVFlMRV9TVEFURV9ERUZBVUxUUyk7XG4gICNfcGxhY2Vob2xkZXIgPSAnJztcbiAgI192YWx1ZSA9ICc8cD48L3A+JztcblxuICByZWFkb25seSAjYWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2NoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcmVhZG9ubHkgI2NvcmVBZGFwdGVyU2VydmljZSA9IGluamVjdChTa3lDb3JlQWRhcHRlclNlcnZpY2UpO1xuICByZWFkb25seSAjZWRpdG9yU2VydmljZSA9IGluamVjdChTa3lUZXh0RWRpdG9yU2VydmljZSk7XG4gIHJlYWRvbmx5ICNpZFN2YyA9IGluamVjdChTa3lJZFNlcnZpY2UpO1xuICByZWFkb25seSAjc2FuaXRpemF0aW9uU2VydmljZSA9IGluamVjdChTa3lUZXh0U2FuaXRpemF0aW9uU2VydmljZSk7XG4gIHJlYWRvbmx5ICN6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgcmVhZG9ubHkgI2xhYmVsVGV4dFJlcXVpcmVkID0gaW5qZWN0KFNreUZvcm1GaWVsZExhYmVsVGV4dFJlcXVpcmVkU2VydmljZSwge1xuICAgIG9wdGlvbmFsOiB0cnVlLFxuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXJyb3JJZCA9IHRoaXMuI2lkU3ZjLmdlbmVyYXRlSWQoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWlyZWRTdGF0ZSA9IGluamVjdChTa3lSZXF1aXJlZFN0YXRlRGlyZWN0aXZlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNpZCA9IHRoaXMuI2RlZmF1bHRJZCA9IHRoaXMuI2lkU3ZjLmdlbmVyYXRlSWQoKTtcbiAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jaW5pdElmcmFtZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNsYWJlbFRleHRSZXF1aXJlZCAmJiAhdGhpcy5sYWJlbFRleHQpIHtcbiAgICAgIHRoaXMuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG4gICAgdGhpcy4jbGFiZWxUZXh0UmVxdWlyZWQ/LnZhbGlkYXRlTGFiZWxUZXh0KHRoaXMubGFiZWxUZXh0KTtcbiAgfVxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UucmVtb3ZlT2JzZXJ2ZXJzKHRoaXMuI2VkaXRvclNlcnZpY2UuZWRpdG9yKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25JZnJhbWVMb2FkKCk6IHZvaWQge1xuICAgIC8vIFJlaW5pdGlhbGl6ZSB0aGUgZWRpdG9yIGlmIGl0IGFscmVhZHkgZXhpc3RzIHRvIGNvdmVyIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHRleHQgZWRpdG9yIG1pZ2h0IGhhdmUgYmVlbiBtb3ZlZCBpbiB0aGUgRE9NLlxuICAgIGlmICh0aGlzLiNlZGl0b3JTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI2luaXRJZnJhbWUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAvLyBVcGRhdGUgSFRNTCBpZiBuZWNlc3NhcnkuXG4gICAgaWYgKHRoaXMuI2luaXRpYWxpemVkKSB7XG4gICAgICBjb25zdCBlZGl0b3JWYWx1ZSA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldEVkaXRvcklubmVySHRtbCgpO1xuICAgICAgaWYgKGVkaXRvclZhbHVlICE9PSB0aGlzLiNfdmFsdWUpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0RWRpdG9ySW5uZXJIdG1sKHRoaXMuI192YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiNfb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jX29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAjY2hlY2tBdXRvZm9jdXNBbmRGb2N1cygpOiB2b2lkIHtcbiAgICAvLyBEb24ndCBzZXQgZm9jdXMgb24gdGhlIGVkaXRvciBpZiB0aGUgaWZyYW1lIGlzbid0IGluaXRpYWxpemVkLlxuICAgIC8vIEF1dG9mb2N1cyBpc24ndCB0ZXN0YWJsZSBpbiBGaXJlZm94IGFuZCBJRS5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLmF1dG9mb2N1cyAmJiB0aGlzLiNpbml0aWFsaXplZCAmJiAhdGhpcy4jZm9jdXNJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNFZGl0b3IoKTtcbiAgICAgIHRoaXMuI2ZvY3VzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVTdHlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUgPSB7XG4gICAgICAuLi50aGlzLiNfaW5pdGlhbFN0eWxlU3RhdGUsXG4gICAgICAuLi50aGlzLiNhZGFwdGVyU2VydmljZS5nZXRTdHlsZVN0YXRlKCksXG4gICAgfTtcbiAgfVxuXG4gICNpbml0SWZyYW1lKCk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmluaXRFZGl0b3IoXG4gICAgICB0aGlzLmlkLFxuICAgICAgKHRoaXMuaWZyYW1lUmVmIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLmluaXRpYWxTdHlsZVN0YXRlLFxuICAgICAgdGhpcy5wbGFjZWhvbGRlcixcbiAgICApO1xuXG4gICAgdGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiN1cGRhdGVBMTF5QXR0cmlidXRlcygpO1xuXG4gICAgICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiB3aGVuIHRoZSBmaWVsZCBzdGF0dXMgaXMgbW9kaWZpZWQgcHJvZ3JhbW1hdGljYWxseS5cbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5pbnB1dExpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBBbmd1bGFyIGRvZXNuJ3QgcnVuIGNoYW5nZSBkZXRlY3Rpb24gZm9yIGNoYW5nZXMgb3JpZ2luYXRpbmcgaW5zaWRlIGFuIGlmcmFtZSxcbiAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBjYWxsIHRoZSBvbkNoYW5nZSgpIGV2ZW50IGluc2lkZSBOZ1pvbmUgdG8gZm9yY2UgY2hhbmdlIHByb3BhZ2F0aW9uIHRvIGNvbnN1bWluZyBjb21wb25lbnRzLlxuICAgICAgICB0aGlzLiN6b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jdmlld1RvTW9kZWxVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5zZWxlY3Rpb25DaGFuZ2VMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jdXBkYXRlU3R5bGUoKTtcbiAgICAgICAgdGhpcy5lZGl0b3JGb2N1c1N0cmVhbS5uZXh0KCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5jbGlja0xpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmVkaXRvckZvY3VzU3RyZWFtLm5leHQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZWRpdG9yU2VydmljZVxuICAgICAgLmJsdXJMaXN0ZW5lcigpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBjaGFuZ2VzIG9yaWdpbmF0aW5nIGluc2lkZSBhbiBpZnJhbWUsXG4gICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gcnVuIG1hcmtGb3JDaGVjaygpIGluc2lkZSB0aGUgTmdab25lIHRvIGZvcmNlIGNoYW5nZSBwcm9wYWdhdGlvbiB0byBjb25zdW1pbmcgY29tcG9uZW50cy5cbiAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI19vblRvdWNoZWQoKTtcbiAgICAgICAgICB0aGlzLmVkaXRvckZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5jb21tYW5kQ2hhbmdlTGlzdGVuZXIoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZVN0eWxlKCk7XG4gICAgICAgIHRoaXMuI3ZpZXdUb01vZGVsVXBkYXRlKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2VkaXRvclNlcnZpY2VcbiAgICAgIC5mb2N1c0xpc3RlbmVyKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBBbmd1bGFyIGRvZXNuJ3QgcnVuIGNoYW5nZSBkZXRlY3Rpb24gZm9yIGNoYW5nZXMgb3JpZ2luYXRpbmcgaW5zaWRlIGFuIGlmcmFtZSxcbiAgICAgICAgLy8gc28gd2UgaGF2ZSB0byBydW4gbWFya0ZvckNoZWNrKCkgaW5zaWRlIHRoZSBOZ1pvbmUgdG8gZm9yY2UgY2hhbmdlIHByb3BhZ2F0aW9uIHRvIGNvbnN1bWluZyBjb21wb25lbnRzLlxuICAgICAgICB0aGlzLiN6b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lZGl0b3JGb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldEVkaXRvcklubmVySHRtbCh0aGlzLiNfdmFsdWUpO1xuICAgIHRoaXMuI3VwZGF0ZUExMXlBdHRyaWJ1dGVzKCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLmF1dG9mb2N1cykge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZm9jdXNFZGl0b3IoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNpbml0aWFsaXplZCA9IHRydWU7XG4gICAgdGhpcy4jZm9jdXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgdGhpcy4jY2hlY2tBdXRvZm9jdXNBbmRGb2N1cygpO1xuICB9XG5cbiAgI3VwZGF0ZUExMXlBdHRyaWJ1dGVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNlZGl0b3JTZXJ2aWNlLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldExhYmVsQXR0cmlidXRlKHRoaXMubGFiZWxUZXh0KTtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldEVycm9yQXR0cmlidXRlcyhcbiAgICAgICAgdGhpcy5sYWJlbFRleHQgPyB0aGlzLmVycm9ySWQgOiAnJyxcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wuZXJyb3JzLFxuICAgICAgKTtcbiAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldFJlcXVpcmVkQXR0cmlidXRlKFxuICAgICAgICB0aGlzLnJlcXVpcmVkU3RhdGUuaXNSZXF1aXJlZCgpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAjdmlld1RvTW9kZWxVcGRhdGUoZW1pdENoYW5nZSA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0RWRpdG9ySW5uZXJIdG1sKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZW1pdENoYW5nZSkge1xuICAgICAgdGhpcy4jX29uQ2hhbmdlKHRoaXMuI192YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgI19vblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICB9O1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICNfb25DaGFuZ2U6IChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHZhbHVlOiBhbnksXG4gICkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIH07XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktdGV4dC1lZGl0b3ItZGlzYWJsZWQnOiBkaXNhYmxlZCxcbiAgICAnc2t5LXRleHQtZWRpdG9yLXdyYXBwZXItZm9jdXNlZCc6IGVkaXRvckZvY3VzZWQsXG4gICAgJ3NreS10ZXh0LWVkaXRvci1pbnZhbGlkJzpcbiAgICAgIG5nQ29udHJvbC5lcnJvcnMgJiYgKG5nQ29udHJvbC50b3VjaGVkIHx8IG5nQ29udHJvbC5kaXJ0eSksXG4gICAgJ3NreS1tYXJnaW4tc3RhY2tlZC14cyc6ICEhaGludFRleHRcbiAgfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItbGFiZWwtd3JhcHBlclwiPlxuICAgIDxsYWJlbFxuICAgICAgKm5nSWY9XCJsYWJlbFRleHRcIlxuICAgICAgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdza3ktY29udHJvbC1sYWJlbC1yZXF1aXJlZCc6IHJlcXVpcmVkU3RhdGUuaXNSZXF1aXJlZCgpXG4gICAgICB9XCJcbiAgICAgID57eyBsYWJlbFRleHQgfX08L2xhYmVsXG4gICAgPlxuICA8L2Rpdj5cbiAgPHNreS10b29sYmFyXG4gICAgKm5nSWY9XCJcbiAgICAgIChtZW51cyAmJiBtZW51cy5sZW5ndGgpID4gMCB8fFxuICAgICAgKHRvb2xiYXJBY3Rpb25zICYmIHRvb2xiYXJBY3Rpb25zLmxlbmd0aCA+IDApXG4gICAgXCJcbiAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci10b29sYmFyXCJcbiAgPlxuICAgIDxza3ktdG9vbGJhci1zZWN0aW9uXG4gICAgICAqbmdJZj1cIm1lbnVzICYmIG1lbnVzLmxlbmd0aCA+IDBcIlxuICAgICAgYXJpYS1sYWJlbD1cIlRleHQgZm9ybWF0dGluZ1wiXG4gICAgICBjbGFzcz1cIm1lbnViYXJcIlxuICAgICAgcm9sZT1cInRvb2xiYXJcIlxuICAgID5cbiAgICAgIDxza3ktdGV4dC1lZGl0b3ItbWVudWJhclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbZWRpdG9yRm9jdXNTdHJlYW1dPVwiZWRpdG9yRm9jdXNTdHJlYW1cIlxuICAgICAgICBbbWVudXNdPVwibWVudXNcIlxuICAgICAgICBbbWVyZ2VGaWVsZHNdPVwibWVyZ2VGaWVsZHNcIlxuICAgICAgPlxuICAgICAgPC9za3ktdGV4dC1lZGl0b3ItbWVudWJhcj5cbiAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gICAgPHNreS10b29sYmFyLXNlY3Rpb25cbiAgICAgICpuZ0lmPVwidG9vbGJhckFjdGlvbnMgJiYgdG9vbGJhckFjdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICBhcmlhLWxhYmVsPVwiVGV4dCBmb3JtYXR0aW5nXCJcbiAgICAgIGNsYXNzPVwidG9vbGJhclwiXG4gICAgICByb2xlPVwidG9vbGJhclwiXG4gICAgPlxuICAgICAgPHNreS10ZXh0LWVkaXRvci10b29sYmFyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtlZGl0b3JGb2N1c1N0cmVhbV09XCJlZGl0b3JGb2N1c1N0cmVhbVwiXG4gICAgICAgIFtmb250TGlzdF09XCJmb250TGlzdFwiXG4gICAgICAgIFtmb250U2l6ZUxpc3RdPVwiZm9udFNpemVMaXN0XCJcbiAgICAgICAgW2xpbmtXaW5kb3dPcHRpb25zXT1cImxpbmtXaW5kb3dPcHRpb25zXCJcbiAgICAgICAgW3Rvb2xiYXJBY3Rpb25zXT1cInRvb2xiYXJBY3Rpb25zXCJcbiAgICAgICAgW3N0eWxlU3RhdGVdPVwiaW5pdGlhbFN0eWxlU3RhdGVcIlxuICAgICAgPlxuICAgICAgPC9za3ktdGV4dC1lZGl0b3ItdG9vbGJhcj5cbiAgICA8L3NreS10b29sYmFyLXNlY3Rpb24+XG4gIDwvc2t5LXRvb2xiYXI+XG4gIDxpZnJhbWVcbiAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci13cmFwcGVyXCJcbiAgICBzcmM9XCJhYm91dDpibGFua1wiXG4gICAgW2F0dHIudGl0bGVdPVwiXG4gICAgICBsYWJlbFRleHQgfHwgKCdza3l1eF90ZXh0X2VkaXRvcl9pZnJhbWVfdGl0bGVfZGVmYXVsdCcgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgXCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImhpbnRUZXh0ID8gaGludFRleHRFbC5pZCA6IHVuZGVmaW5lZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS10ZXh0LWVkaXRvci13cmFwcGVyLWRpc2FibGVkJzogZGlzYWJsZWRcbiAgICB9XCJcbiAgICAobG9hZCk9XCJvbklmcmFtZUxvYWQoKVwiXG4gICAgI2lmcmFtZVxuICAgIGFsbG93PVwiY2xpcGJvYXJkLXJlYWQgKjsgY2xpcGJvYXJkLXdyaXRlICpcIlxuICA+XG4gIDwvaWZyYW1lPlxuPC9kaXY+XG48ZGl2XG4gIHNreUlkXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS10ZXh0LWVkaXRvci1oaW50LXRleHQnOiAhIWhpbnRUZXh0XG4gIH1cIlxuICAjaGludFRleHRFbD1cInNreUlkXCJcbj5cbiAge3sgaGludFRleHQgfX1cbjwvZGl2PlxuPHNreS1mb3JtLWVycm9yc1xuICAqbmdJZj1cImxhYmVsVGV4dCAmJiBuZ0NvbnRyb2w/LmVycm9yc1wiXG4gIFtpZF09XCJlcnJvcklkXCJcbiAgW2Vycm9yc109XCJuZ0NvbnRyb2wuZXJyb3JzXCJcbiAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICBbc2hvd0Vycm9yc109XCJuZ0NvbnRyb2wudG91Y2hlZCB8fCBuZ0NvbnRyb2wuZGlydHlcIlxuPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJza3ktZm9ybS1lcnJvclwiIC8+XG48L3NreS1mb3JtLWVycm9ycz5cbiJdfQ==
|