@worktile/theia 1.2.18 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
- import { Component, ViewChild, Inject, HostListener } from '@angular/core';
1
+ import { Component, ChangeDetectionStrategy, ViewChild, Inject } from '@angular/core';
2
2
  import { Transforms } from 'slate';
3
3
  import { AngularEditor } from 'slate-angular';
4
4
  import { CodeMirrorComponent } from 'ng-codemirror';
5
- import { CODEMIRROR_PADDING_TOP, CODE_MODES, DropdownMode, CodeMode, THE_CODE_MODE_TOKEN, ToolbarItemMode } from '../../constants';
5
+ import { CODEMIRROR_PADDING_TOP, CODE_MODES, DropdownMode, CodeMode, THE_CODE_MODE_TOKEN } from '../../constants';
6
6
  import { TheBaseElementComponent } from '../../interfaces';
7
7
  import { CodeEditor } from './code.editor';
8
8
  import * as TheTransforms from '../../transforms';
@@ -11,15 +11,12 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "ngx-tethys/notify";
12
12
  import * as i2 from "ngx-tethys/nav";
13
13
  import * as i3 from "../../components/toolbar-dropdown/toolbar-dropdown.component";
14
- import * as i4 from "../../components/nav-split-line/nav-split-line.component";
15
- import * as i5 from "ngx-tethys/switch";
16
- import * as i6 from "slate-angular";
17
- import * as i7 from "ng-codemirror";
18
- import * as i8 from "ngx-tethys/resizable";
19
- import * as i9 from "@angular/common";
20
- import * as i10 from "ngx-tethys/tooltip";
21
- import * as i11 from "@angular/forms";
22
- import * as i12 from "../../constants";
14
+ import * as i4 from "slate-angular";
15
+ import * as i5 from "ng-codemirror";
16
+ import * as i6 from "@angular/common";
17
+ import * as i7 from "ngx-tethys/tooltip";
18
+ import * as i8 from "@angular/forms";
19
+ import * as i9 from "../../constants";
23
20
  export class TheCodeComponent extends TheBaseElementComponent {
24
21
  constructor(elementRef, cdr, thyNotifyService, ngZone, config) {
25
22
  super(elementRef, cdr);
@@ -30,15 +27,11 @@ export class TheCodeComponent extends TheBaseElementComponent {
30
27
  this.config = config;
31
28
  this.startRenderCodemirror = false;
32
29
  this.dropdownMode = DropdownMode;
33
- this.codeMirrorFocused = false;
34
30
  this.maxHeight = this.config.mode === CodeMode.default ? 350 - CODEMIRROR_PADDING_TOP * 2 : 0;
31
+ this.codeMirrorFocused = false;
35
32
  this.menus = CODE_MODES.map(item => {
36
33
  return { key: item.value, name: item.showName };
37
34
  });
38
- this.ToolbarItemMode = ToolbarItemMode;
39
- this.isAutoWrap = false;
40
- this.isResizing = false;
41
- this.resizeHeight = null;
42
35
  this.options = {
43
36
  mode: this.menus[0].key,
44
37
  lineNumbers: false,
@@ -52,17 +45,12 @@ export class TheCodeComponent extends TheBaseElementComponent {
52
45
  this.onChangeLangulage = item => {
53
46
  this.options = Object.assign(Object.assign({}, this.options), { mode: item.key });
54
47
  this.actives = item;
55
- CodeEditor.setCodeAttribute(this.editor, this.element, { langulage: item.key });
48
+ CodeEditor.setLanguage(this.editor, item.key, this.element);
56
49
  };
57
50
  }
58
51
  get code() {
59
52
  return this.element.content;
60
53
  }
61
- handleCodeMousedown(event) {
62
- if (!(event.target instanceof HTMLElement && this.elementRef.nativeElement.contains(event.target))) {
63
- this.codeMirrorFocused = false;
64
- }
65
- }
66
54
  onContextChange() {
67
55
  super.onContextChange();
68
56
  if (this.initialized) {
@@ -94,15 +82,9 @@ export class TheCodeComponent extends TheBaseElementComponent {
94
82
  this.ngZone.onStable.pipe(take(1)).subscribe(() => {
95
83
  this.renderCodemirror();
96
84
  this.initializeCodemirrorFocus();
97
- this.useAutoWrap();
98
- this.useHeight();
99
85
  });
100
86
  }
101
87
  }
102
- focusChange(codeMirrorFocused) {
103
- if (codeMirrorFocused)
104
- this.codeMirrorFocused = codeMirrorFocused;
105
- }
106
88
  renderCodemirror() {
107
89
  this.startRenderCodemirror = true;
108
90
  this.useReadonly();
@@ -110,7 +92,7 @@ export class TheCodeComponent extends TheBaseElementComponent {
110
92
  this.cdr.detectChanges();
111
93
  }
112
94
  initializeCodemirrorFocus() {
113
- if (this.isCollapsed && !this.isResizing) {
95
+ if (this.isCollapsed) {
114
96
  setTimeout(() => {
115
97
  if (this.isCollapsed && this.codemirror && this.codemirror.editor && !this.codemirror.editor.hasFocus()) {
116
98
  AngularEditor.blur(this.editor);
@@ -121,11 +103,13 @@ export class TheCodeComponent extends TheBaseElementComponent {
121
103
  }
122
104
  }
123
105
  codeChange($event) {
124
- CodeEditor.setCodeAttribute(this.editor, this.element, { content: $event });
106
+ CodeEditor.setCodeContent(this.editor, $event, this.element);
107
+ }
108
+ focusChange(codeMirrorFocused) {
109
+ this.codeMirrorFocused = codeMirrorFocused;
125
110
  }
126
111
  onDelete(event) {
127
112
  event.preventDefault();
128
- this.codeMirrorFocused = false;
129
113
  TheTransforms.deleteElement(this.editor, this.element);
130
114
  }
131
115
  onCopy(event) {
@@ -136,66 +120,39 @@ export class TheCodeComponent extends TheBaseElementComponent {
136
120
  if (selection.rangeCount > 0) {
137
121
  selection.removeAllRanges();
138
122
  }
139
- AngularEditor.focus(this.editor);
140
- Transforms.select(this.editor, AngularEditor.findPath(this.editor, this.element));
141
- document.execCommand('copy');
142
- this.thyNotifyService.success('复制成功');
143
- AngularEditor.deselect(this.editor);
144
- this.codeMirrorFocused = false;
123
+ // focus the element
124
+ setTimeout(() => {
125
+ AngularEditor.focus(this.editor);
126
+ Transforms.select(this.editor, AngularEditor.findPath(this.editor, this.element));
127
+ });
128
+ // copy the element
129
+ setTimeout(() => {
130
+ document.execCommand('copy');
131
+ this.thyNotifyService.success('复制成功');
132
+ }, 200);
145
133
  }
146
134
  useMode() {
147
135
  this.options = Object.assign(Object.assign({}, this.options), { mode: this.element.language });
148
136
  this.actives = this.menus.find(i => i.key === this.element.language);
149
137
  }
150
- useAutoWrap() {
151
- if (this.element.autoWrap) {
152
- this.isAutoWrap = this.element.autoWrap;
153
- this.codemirror.setOptionIfChanged('lineWrapping', this.element.autoWrap);
154
- }
155
- }
156
- useHeight() {
157
- if (this.element.height) {
158
- this.resizeHeight = this.element.height;
159
- this.maxHeight = this.element.height;
160
- }
161
- }
162
138
  useReadonly() {
163
139
  this.options = Object.assign(Object.assign({}, this.options), { readOnly: this.readonly, cursorBlinkRate: this.readonly ? -1 : 500 });
164
140
  }
165
- onResize({ height }) {
166
- this.resizeHeight = height;
167
- Transforms.select(this.editor, AngularEditor.findPath(this.editor, this.element));
168
- CodeEditor.setCodeAttribute(this.editor, this.element, { height });
169
- this.maxHeight = height;
170
- }
171
- onStartResize() {
172
- this.isResizing = true;
173
- }
174
- onEndResize() {
175
- this.isResizing = false;
176
- }
177
- onChangeWrap(value) {
178
- AngularEditor.deselect(this.editor);
179
- this.codemirror.setOptionIfChanged('lineWrapping', value);
180
- CodeEditor.setCodeAttribute(this.editor, this.element, { autoWrap: value ? value : null });
181
- }
182
141
  }
183
142
  TheCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: TheCodeComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.ThyNotifyService }, { token: i0.NgZone }, { token: THE_CODE_MODE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
184
- TheCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: TheCodeComponent, selector: "div[theCode]", host: { listeners: { "document: mousedown": "handleCodeMousedown($event)" } }, viewQueries: [{ propertyName: "codemirror", first: true, predicate: ["codemirror"], descendants: true, read: CodeMirrorComponent }], usesInheritance: true, ngImport: i0, template: "<div contenteditable=\"false\" class=\"the-block-operation\" *ngIf=\"codeMirrorFocused && !options.readOnly\">\n <thy-icon-nav>\n <the-toolbar-dropdown [menus]=\"menus\" [item]=\"actives\" [itemMousedownHandle]=\"onChangeLangulage\"> </the-toolbar-dropdown>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"trash\"\n thyTooltip=\"\u5220\u9664\"\n class=\"remove-link\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onDelete($event)\"\n ></a>\n <nav-split-line [mode]=\"ToolbarItemMode.vertical\"></nav-split-line>\n <span class=\"auto-wrap d-flex align-items-center\">\n <span>\u81EA\u52A8\u6362\u884C</span>\n <thy-switch\n class=\"auto-wrap-btn d-flex\"\n [(ngModel)]=\"isAutoWrap\"\n (ngModelChange)=\"onChangeWrap($event)\"\n thySize=\"sm\"\n ></thy-switch>\n </span>\n </thy-icon-nav>\n</div>\n\n<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n<div\n thyResizable\n [thyMinHeight]=\"42\"\n [style.height.px]=\"resizeHeight\"\n (thyResize)=\"onResize($event)\"\n (thyResizeStart)=\"onStartResize()\"\n (thyResizeEnd)=\"onEndResize()\"\n class=\"resize-code-container\"\n>\n <ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n >\n </ng-codemirror>\n <thy-resize-handle thyDirection=\"bottom\" class=\"code-resize-icon\" *ngIf=\"codeMirrorFocused && !options.readOnly\"></thy-resize-handle>\n</div>\n", components: [{ type: i2.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }, { type: i3.TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: ["toolbarItem", "menus", "mode", "item", "itemMousedownHandle"] }, { type: i2.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.NavSplitLineComponent, selector: "nav-split-line", inputs: ["mode"] }, { type: i5.ThySwitchComponent, selector: "thy-switch", inputs: ["thyType", "thySize", "thyDisabled"], outputs: ["thyChange"] }, { type: i6.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { type: i7.CodeMirrorComponent, selector: "ng-codemirror, [ngCodeMirror]", inputs: ["autoMaxHeight", "delayRefreshTime", "options"], outputs: ["focusChange"] }, { type: i8.ThyResizeHandleComponent, selector: "thy-resize-handle, [thy-resize-handle]", inputs: ["thyDirection"], outputs: ["thyMouseDown"], exportAs: ["thyResizeHandle"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.ThyResizableDirective, selector: "[thyResizable]", inputs: ["thyBounds", "thyMaxHeight", "thyMaxWidth", "thyMinHeight", "thyMinWidth", "thyGridColumnCount", "thyMaxColumn", "thyMinColumn", "thyLockAspectRatio", "thyPreview", "thyDisabled"], outputs: ["thyResize", "thyResizeEnd", "thyResizeStart"] }, { type: i9.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
143
+ TheCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: TheCodeComponent, selector: "div[theCode]", viewQueries: [{ propertyName: "codemirror", first: true, predicate: ["codemirror"], descendants: true, read: CodeMirrorComponent }], usesInheritance: true, ngImport: i0, template: "<div contenteditable=\"false\" class=\"the-block-operation\" *ngIf=\"codeMirrorFocused && !options.readOnly\">\n <thy-icon-nav>\n <the-toolbar-dropdown [menus]=\"menus\" [item]=\"actives\" [itemMousedownHandle]=\"onChangeLangulage\"></the-toolbar-dropdown>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"trash\"\n thyTooltip=\"\u5220\u9664\"\n class=\"remove-link\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onDelete($event)\"\n ></a>\n </thy-icon-nav>\n</div>\n\n<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n<ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n></ng-codemirror>\n", components: [{ type: i2.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }, { type: i3.TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: ["toolbarItem", "menus", "mode", "item", "itemMousedownHandle"] }, { type: i2.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.SlateChildrenComponent, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { type: i5.CodeMirrorComponent, selector: "ng-codemirror, [ngCodeMirror]", inputs: ["autoMaxHeight", "delayRefreshTime", "options"], outputs: ["focusChange"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
185
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: TheCodeComponent, decorators: [{
186
145
  type: Component,
187
146
  args: [{
188
147
  selector: 'div[theCode]',
189
- templateUrl: './code.component.html'
148
+ templateUrl: './code.component.html',
149
+ changeDetection: ChangeDetectionStrategy.OnPush
190
150
  }]
191
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.ThyNotifyService }, { type: i0.NgZone }, { type: i12.TheCodeConfig, decorators: [{
151
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.ThyNotifyService }, { type: i0.NgZone }, { type: i9.TheCodeMode, decorators: [{
192
152
  type: Inject,
193
153
  args: [THE_CODE_MODE_TOKEN]
194
154
  }] }]; }, propDecorators: { codemirror: [{
195
155
  type: ViewChild,
196
156
  args: ['codemirror', { read: CodeMirrorComponent, static: false }]
197
- }], handleCodeMousedown: [{
198
- type: HostListener,
199
- args: ['document: mousedown', ['$event']]
200
157
  }] } });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBS1QsU0FBUyxFQUdULE1BQU0sRUFDTixZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUNSLG1CQUFtQixFQUVuQixlQUFlLEVBQ2xCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFzQix1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQU83QyxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsdUJBQTRDO0lBc0Q5RSxZQUNXLFVBQXNCLEVBQ3RCLEdBQXNCLEVBQ3JCLGdCQUFrQyxFQUNsQyxNQUFjLEVBRWQsTUFBcUI7UUFFN0IsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQVBoQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3JC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LEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUQsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDOzs2R0F6TFEsZ0JBQWdCLG1JQTJEYixtQkFBbUI7aUdBM0R0QixnQkFBZ0Isd05BNkJRLG1CQUFtQixvRENqRXhELDJ3RUEyREE7MkZEdkJhLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsV0FBVyxFQUFFLHVCQUF1QjtpQkFDdkM7OzBCQTREUSxNQUFNOzJCQUFDLG1CQUFtQjs0Q0E3Qi9CLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJckUsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBPbkluaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgTmdab25lLFxuICAgIEluamVjdCxcbiAgICBIb3N0TGlzdGVuZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlOb3RpZnlTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9ub3RpZnknO1xuaW1wb3J0IHsgRWRpdG9yLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgQ29kZU1pcnJvckNvbXBvbmVudCB9IGZyb20gJ25nLWNvZGVtaXJyb3InO1xuaW1wb3J0IHtcbiAgICBDT0RFTUlSUk9SX1BBRERJTkdfVE9QLFxuICAgIENPREVfTU9ERVMsXG4gICAgRHJvcGRvd25Nb2RlLFxuICAgIENvZGVNb2RlLFxuICAgIFRIRV9DT0RFX01PREVfVE9LRU4sXG4gICAgVGhlQ29kZUNvbmZpZyxcbiAgICBUb29sYmFySXRlbU1vZGVcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IERlZmF1bHRUb29sYmFySXRlbSwgVGhlQmFzZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvZGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IENvZGVFZGl0b3IgfSBmcm9tICcuL2NvZGUuZWRpdG9yJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRoeVJlc2l6ZUV2ZW50IH0gZnJvbSAnbmd4LXRldGh5cy9yZXNpemFibGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Rpdlt0aGVDb2RlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZGUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRoZUNvZGVDb21wb25lbnQgZXh0ZW5kcyBUaGVCYXNlRWxlbWVudENvbXBvbmVudDxDb2RlRWxlbWVudCwgRWRpdG9yPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgc3RhcnRSZW5kZXJDb2RlbWlycm9yID0gZmFsc2U7XG4gICAgZHJvcGRvd25Nb2RlID0gRHJvcGRvd25Nb2RlO1xuICAgIGNvZGVNaXJyb3JGb2N1c2VkID0gZmFsc2U7XG4gICAgbWF4SGVpZ2h0ID0gdGhpcy5jb25maWcubW9kZSA9PT0gQ29kZU1vZGUuZGVmYXVsdCA/IDM1MCAtIENPREVNSVJST1JfUEFERElOR19UT1AgKiAyIDogMDtcbiAgICBtZW51cyA9IENPREVfTU9ERVMubWFwKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyBrZXk6IGl0ZW0udmFsdWUsIG5hbWU6IGl0ZW0uc2hvd05hbWUgfTtcbiAgICB9KTtcbiAgICBUb29sYmFySXRlbU1vZGUgPSBUb29sYmFySXRlbU1vZGU7XG4gICAgaXNBdXRvV3JhcCA9IGZhbHNlO1xuICAgIGlzUmVzaXppbmcgPSBmYWxzZTtcbiAgICByZXNpemVIZWlnaHQ6IG51bWJlciA9IG51bGw7XG5cbiAgICBvcHRpb25zID0ge1xuICAgICAgICBtb2RlOiB0aGlzLm1lbnVzWzBdLmtleSxcbiAgICAgICAgbGluZU51bWJlcnM6IGZhbHNlLFxuICAgICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICAgIGF1dG9mb2N1czogZmFsc2UsXG4gICAgICAgIGxpbmVXaXNlQ29weUN1dDogdHJ1ZSxcbiAgICAgICAgbGluZVdyYXBwaW5nOiB0aGlzLmNvbmZpZy5tb2RlID09PSBDb2RlTW9kZS5kZWZhdWx0ID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICBjdXJzb3JCbGlua1JhdGU6IDUwMFxuICAgIH07XG5cbiAgICBhY3RpdmVzOiBEZWZhdWx0VG9vbGJhckl0ZW0gPSB0aGlzLm1lbnVzWzBdO1xuXG4gICAgZ2V0IGNvZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY29udGVudDtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkKCdjb2RlbWlycm9yJywgeyByZWFkOiBDb2RlTWlycm9yQ29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pXG4gICAgY29kZW1pcnJvcjogQ29kZU1pcnJvckNvbXBvbmVudDtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OiBtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUNvZGVNb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKCEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkpIHtcbiAgICAgICAgICAgIHRoaXMuY29kZU1pcnJvckZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZSgpIHtcbiAgICAgICAgc3VwZXIub25Db250ZXh0Q2hhbmdlKCk7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlYWRPbmx5ICE9PSB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VSZWFkb25seSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlICE9PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZU1vZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5yZWFkb25seSAmJiB0aGlzLmlzQ29sbGFwc2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHRoeU5vdGlmeVNlcnZpY2U6IFRoeU5vdGlmeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoVEhFX0NPREVfTU9ERV9UT0tFTilcbiAgICAgICAgcHJpdmF0ZSBjb25maWc6IFRoZUNvZGVDb25maWdcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndGhlLWNvZGUtY29udGFpbmVyJyk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgLy8gZGVsYXkgMjBtc1xuICAgICAgICAgICAgLy8gY2NvZGVtaXJyb3IgaXMgdG9vIHNsb3dcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSwgZGVsYXkoMjApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBlZGl0IG1vZGUgY2FuIG5vdCBkZWxheVxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvZGVtaXJyb3JGb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMudXNlQXV0b1dyYXAoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUhlaWdodCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb2N1c0NoYW5nZShjb2RlTWlycm9yRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICBpZiAoY29kZU1pcnJvckZvY3VzZWQpIHRoaXMuY29kZU1pcnJvckZvY3VzZWQgPSBjb2RlTWlycm9yRm9jdXNlZDtcbiAgICB9XG5cbiAgICByZW5kZXJDb2RlbWlycm9yKCkge1xuICAgICAgICB0aGlzLnN0YXJ0UmVuZGVyQ29kZW1pcnJvciA9IHRydWU7XG4gICAgICAgIHRoaXMudXNlUmVhZG9ubHkoKTtcbiAgICAgICAgdGhpcy51c2VNb2RlKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCAmJiAhdGhpcy5pc1Jlc2l6aW5nKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCAmJiB0aGlzLmNvZGVtaXJyb3IgJiYgdGhpcy5jb2RlbWlycm9yLmVkaXRvciAmJiAhdGhpcy5jb2RlbWlycm9yLmVkaXRvci5oYXNGb2N1cygpKSB7XG4gICAgICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IuYmx1cih0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29kZW1pcnJvci5lZGl0b3IuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yLmVkaXRvci5yZWZyZXNoKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMjAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvZGVDaGFuZ2UoJGV2ZW50KSB7XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGNvbnRlbnQ6ICRldmVudCB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNvZGVNaXJyb3JGb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIFRoZVRyYW5zZm9ybXMuZGVsZXRlRWxlbWVudCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkNvcHkoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIC8vIHJlbW92ZSBjb2RlbW9ycmlyIHNlbGVjdGlvblxuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBBbmd1bGFyRWRpdG9yLmZvY3VzKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCkpO1xuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICB0aGlzLnRoeU5vdGlmeVNlcnZpY2Uuc3VjY2Vzcygn5aSN5Yi25oiQ5YqfJyk7XG4gICAgICAgIEFuZ3VsYXJFZGl0b3IuZGVzZWxlY3QodGhpcy5lZGl0b3IpO1xuICAgICAgICB0aGlzLmNvZGVNaXJyb3JGb2N1c2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VMYW5ndWxhZ2UgPSBpdGVtID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIG1vZGU6IGl0ZW0ua2V5IH07XG4gICAgICAgIHRoaXMuYWN0aXZlcyA9IGl0ZW07XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0Q29kZUF0dHJpYnV0ZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50LCB7IGxhbmd1bGFnZTogaXRlbS5rZXkgfSk7XG4gICAgfTtcblxuICAgIHVzZU1vZGUoKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zLCBtb2RlOiB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UgfTtcbiAgICAgICAgdGhpcy5hY3RpdmVzID0gdGhpcy5tZW51cy5maW5kKGkgPT4gaS5rZXkgPT09IHRoaXMuZWxlbWVudC5sYW5ndWFnZSk7XG4gICAgfVxuXG4gICAgdXNlQXV0b1dyYXAoKSB7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQuYXV0b1dyYXApIHtcbiAgICAgICAgICAgIHRoaXMuaXNBdXRvV3JhcCA9IHRoaXMuZWxlbWVudC5hdXRvV3JhcDtcbiAgICAgICAgICAgIHRoaXMuY29kZW1pcnJvci5zZXRPcHRpb25JZkNoYW5nZWQoJ2xpbmVXcmFwcGluZycsIHRoaXMuZWxlbWVudC5hdXRvV3JhcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VIZWlnaHQoKSB7XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLm1heEhlaWdodCA9IHRoaXMuZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1c2VSZWFkb25seSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5LCBjdXJzb3JCbGlua1JhdGU6IHRoaXMucmVhZG9ubHkgPyAtMSA6IDUwMCB9O1xuICAgIH1cblxuICAgIG9uUmVzaXplKHsgaGVpZ2h0IH06IFRoeVJlc2l6ZUV2ZW50KSB7XG4gICAgICAgIHRoaXMucmVzaXplSGVpZ2h0ID0gaGVpZ2h0ITtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCkpO1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgeyBoZWlnaHQgfSk7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH1cblxuICAgIG9uU3RhcnRSZXNpemUoKSB7XG4gICAgICAgIHRoaXMuaXNSZXNpemluZyA9IHRydWU7XG4gICAgfVxuXG4gICAgb25FbmRSZXNpemUoKSB7XG4gICAgICAgIHRoaXMuaXNSZXNpemluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlV3JhcCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBBbmd1bGFyRWRpdG9yLmRlc2VsZWN0KHRoaXMuZWRpdG9yKTtcbiAgICAgICAgdGhpcy5jb2RlbWlycm9yLnNldE9wdGlvbklmQ2hhbmdlZCgnbGluZVdyYXBwaW5nJywgdmFsdWUpO1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVBdHRyaWJ1dGUodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCwgeyBhdXRvV3JhcDogdmFsdWUgPyB2YWx1ZSA6IG51bGwgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiIGNsYXNzPVwidGhlLWJsb2NrLW9wZXJhdGlvblwiICpuZ0lmPVwiY29kZU1pcnJvckZvY3VzZWQgJiYgIW9wdGlvbnMucmVhZE9ubHlcIj5cbiAgICA8dGh5LWljb24tbmF2PlxuICAgICAgICA8dGhlLXRvb2xiYXItZHJvcGRvd24gW21lbnVzXT1cIm1lbnVzXCIgW2l0ZW1dPVwiYWN0aXZlc1wiIFtpdGVtTW91c2Vkb3duSGFuZGxlXT1cIm9uQ2hhbmdlTGFuZ3VsYWdlXCI+IDwvdGhlLXRvb2xiYXItZHJvcGRvd24+XG4gICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgIHRoeUljb25OYXZMaW5rXG4gICAgICAgICAgICB0aHlJY29uTmF2TGlua0ljb249XCJjb3B5XCJcbiAgICAgICAgICAgIHRoeVRvb2x0aXA9XCLlpI3liLZcIlxuICAgICAgICAgICAgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uQ29weSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgdGh5SWNvbk5hdkxpbmtcbiAgICAgICAgICAgIHRoeUljb25OYXZMaW5rSWNvbj1cInRyYXNoXCJcbiAgICAgICAgICAgIHRoeVRvb2x0aXA9XCLliKDpmaRcIlxuICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmUtbGlua1wiXG4gICAgICAgICAgICB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25EZWxldGUoJGV2ZW50KVwiXG4gICAgICAgID48L2E+XG4gICAgICAgIDxuYXYtc3BsaXQtbGluZSBbbW9kZV09XCJUb29sYmFySXRlbU1vZGUudmVydGljYWxcIj48L25hdi1zcGxpdC1saW5lPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImF1dG8td3JhcCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3Bhbj7oh6rliqjmjaLooYw8L3NwYW4+XG4gICAgICAgICAgICA8dGh5LXN3aXRjaFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0by13cmFwLWJ0biBkLWZsZXhcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXNBdXRvV3JhcFwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VXcmFwKCRldmVudClcIlxuICAgICAgICAgICAgICAgIHRoeVNpemU9XCJzbVwiXG4gICAgICAgICAgICA+PC90aHktc3dpdGNoPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC90aHktaWNvbi1uYXY+XG48L2Rpdj5cblxuPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPjwvc2xhdGUtY2hpbGRyZW4+XG48ZGl2XG4gICAgdGh5UmVzaXphYmxlXG4gICAgW3RoeU1pbkhlaWdodF09XCI0MlwiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJyZXNpemVIZWlnaHRcIlxuICAgICh0aHlSZXNpemUpPVwib25SZXNpemUoJGV2ZW50KVwiXG4gICAgKHRoeVJlc2l6ZVN0YXJ0KT1cIm9uU3RhcnRSZXNpemUoKVwiXG4gICAgKHRoeVJlc2l6ZUVuZCk9XCJvbkVuZFJlc2l6ZSgpXCJcbiAgICBjbGFzcz1cInJlc2l6ZS1jb2RlLWNvbnRhaW5lclwiXG4+XG4gICAgPG5nLWNvZGVtaXJyb3JcbiAgICAgICAgKm5nSWY9XCJzdGFydFJlbmRlckNvZGVtaXJyb3JcIlxuICAgICAgICAjY29kZW1pcnJvclxuICAgICAgICBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiXG4gICAgICAgIGNsYXNzPVwibmctY29kZW1pcnJvci13cmFwcGVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwieyBtYXhIZWlnaHQ6IG1heEhlaWdodCA+IDAgPyBtYXhIZWlnaHQgKyAncHgnIDogJ2F1dG8nIH1cIlxuICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgICAgW25nTW9kZWxdPVwiY29kZVwiXG4gICAgICAgIFtkZWxheVJlZnJlc2hUaW1lXT1cIjMwMFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNvZGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1c0NoYW5nZSk9XCJmb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2F1dG9NYXhIZWlnaHRdPVwibWF4SGVpZ2h0XCJcbiAgICA+XG4gICAgPC9uZy1jb2RlbWlycm9yPlxuICAgIDx0aHktcmVzaXplLWhhbmRsZSB0aHlEaXJlY3Rpb249XCJib3R0b21cIiBjbGFzcz1cImNvZGUtcmVzaXplLWljb25cIiAqbmdJZj1cImNvZGVNaXJyb3JGb2N1c2VkICYmICFvcHRpb25zLnJlYWRPbmx5XCI+PC90aHktcmVzaXplLWhhbmRsZT5cbjwvZGl2PlxuIl19
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvY29kZS9jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBR1QsdUJBQXVCLEVBRXZCLFNBQVMsRUFHVCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvSCxPQUFPLEVBQXNCLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBTzdDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx1QkFBNEM7SUE0QzlFLFlBQ1csVUFBc0IsRUFDdEIsR0FBc0IsRUFDckIsZ0JBQWtDLEVBQ2xDLE1BQWMsRUFFZCxNQUFtQjtRQUUzQixLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBUGhCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDckIscUJBQWdCLEdBQWhC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LENBQUMsT0FBTyxtQ0FBUSxJQUFJLENBQUMsT0FBTyxLQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsT0FBTyxtQ0FBUSxJQUFJLENBQUMsT0FBTyxLQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFFLENBQUM7SUFDM0csQ0FBQzs7NkdBN0lRLGdCQUFnQixtSUFpRGIsbUJBQW1CO2lHQWpEdEIsZ0JBQWdCLHlJQTBCUSxtQkFBbUIsb0RDckR4RCxrNENBcUNBOzJGRFZhLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsV0FBVyxFQUFFLHVCQUF1QjtvQkFDcEMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEOzswQkFrRFEsTUFBTTsyQkFBQyxtQkFBbUI7NENBdEIvQixVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBOZ1pvbmUsXG4gICAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5Tm90aWZ5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvbm90aWZ5JztcbmltcG9ydCB7IEVkaXRvciwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IENvZGVNaXJyb3JDb21wb25lbnQgfSBmcm9tICduZy1jb2RlbWlycm9yJztcbmltcG9ydCB7IENPREVNSVJST1JfUEFERElOR19UT1AsIENPREVfTU9ERVMsIERyb3Bkb3duTW9kZSwgQ29kZU1vZGUsIFRIRV9DT0RFX01PREVfVE9LRU4sIFRoZUNvZGVNb2RlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IERlZmF1bHRUb29sYmFySXRlbSwgVGhlQmFzZUVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvZGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IENvZGVFZGl0b3IgfSBmcm9tICcuL2NvZGUuZWRpdG9yJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBkZWxheSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkaXZbdGhlQ29kZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2RlLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaGVDb2RlQ29tcG9uZW50IGV4dGVuZHMgVGhlQmFzZUVsZW1lbnRDb21wb25lbnQ8Q29kZUVsZW1lbnQsIEVkaXRvcj4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIHN0YXJ0UmVuZGVyQ29kZW1pcnJvciA9IGZhbHNlO1xuICAgIGRyb3Bkb3duTW9kZSA9IERyb3Bkb3duTW9kZTtcbiAgICBtYXhIZWlnaHQgPSB0aGlzLmNvbmZpZy5tb2RlID09PSBDb2RlTW9kZS5kZWZhdWx0ID8gMzUwIC0gQ09ERU1JUlJPUl9QQURESU5HX1RPUCAqIDIgOiAwO1xuICAgIGNvZGVNaXJyb3JGb2N1c2VkID0gZmFsc2U7XG5cbiAgICBtZW51cyA9IENPREVfTU9ERVMubWFwKGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4geyBrZXk6IGl0ZW0udmFsdWUsIG5hbWU6IGl0ZW0uc2hvd05hbWUgfTtcbiAgICB9KTtcblxuICAgIG9wdGlvbnMgPSB7XG4gICAgICAgIG1vZGU6IHRoaXMubWVudXNbMF0ua2V5LFxuICAgICAgICBsaW5lTnVtYmVyczogZmFsc2UsXG4gICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgYXV0b2ZvY3VzOiBmYWxzZSxcbiAgICAgICAgbGluZVdpc2VDb3B5Q3V0OiB0cnVlLFxuICAgICAgICBsaW5lV3JhcHBpbmc6IHRoaXMuY29uZmlnLm1vZGUgPT09IENvZGVNb2RlLmRlZmF1bHQgPyBmYWxzZSA6IHRydWUsXG4gICAgICAgIGN1cnNvckJsaW5rUmF0ZTogNTAwXG4gICAgfTtcblxuICAgIGFjdGl2ZXM6IERlZmF1bHRUb29sYmFySXRlbSA9IHRoaXMubWVudXNbMF07XG5cbiAgICBnZXQgY29kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jb250ZW50O1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2NvZGVtaXJyb3InLCB7IHJlYWQ6IENvZGVNaXJyb3JDb21wb25lbnQsIHN0YXRpYzogZmFsc2UgfSlcbiAgICBjb2RlbWlycm9yOiBDb2RlTWlycm9yQ29tcG9uZW50O1xuXG4gICAgb25Db250ZXh0Q2hhbmdlKCkge1xuICAgICAgICBzdXBlci5vbkNvbnRleHRDaGFuZ2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVhZE9ubHkgIT09IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVzZVJlYWRvbmx5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1vZGUgIT09IHRoaXMuZWxlbWVudC5sYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlTW9kZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLnJlYWRvbmx5ICYmIHRoaXMuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDb2RlbWlycm9yRm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5Tm90aWZ5U2VydmljZTogVGh5Tm90aWZ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEluamVjdChUSEVfQ09ERV9NT0RFX1RPS0VOKVxuICAgICAgICBwcml2YXRlIGNvbmZpZzogVGhlQ29kZU1vZGVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndGhlLWNvZGUtY29udGFpbmVyJyk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgLy8gZGVsYXkgMjBtc1xuICAgICAgICAgICAgLy8gY2NvZGVtaXJyb3IgaXMgdG9vIHNsb3dcbiAgICAgICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSwgZGVsYXkoMjApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBlZGl0IG1vZGUgY2FuIG5vdCBkZWxheVxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29kZW1pcnJvcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvZGVtaXJyb3JGb2N1cygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXJDb2RlbWlycm9yKCkge1xuICAgICAgICB0aGlzLnN0YXJ0UmVuZGVyQ29kZW1pcnJvciA9IHRydWU7XG4gICAgICAgIHRoaXMudXNlUmVhZG9ubHkoKTtcbiAgICAgICAgdGhpcy51c2VNb2RlKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBpbml0aWFsaXplQ29kZW1pcnJvckZvY3VzKCkge1xuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWQgJiYgdGhpcy5jb2RlbWlycm9yICYmIHRoaXMuY29kZW1pcnJvci5lZGl0b3IgJiYgIXRoaXMuY29kZW1pcnJvci5lZGl0b3IuaGFzRm9jdXMoKSkge1xuICAgICAgICAgICAgICAgICAgICBBbmd1bGFyRWRpdG9yLmJsdXIodGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZGVtaXJyb3IuZWRpdG9yLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29kZW1pcnJvci5lZGl0b3IucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb2RlQ2hhbmdlKCRldmVudCkge1xuICAgICAgICBDb2RlRWRpdG9yLnNldENvZGVDb250ZW50KHRoaXMuZWRpdG9yLCAkZXZlbnQsIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgZm9jdXNDaGFuZ2UoY29kZU1pcnJvckZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jb2RlTWlycm9yRm9jdXNlZCA9IGNvZGVNaXJyb3JGb2N1c2VkO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIFRoZVRyYW5zZm9ybXMuZGVsZXRlRWxlbWVudCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBvbkNvcHkoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIC8vIHJlbW92ZSBjb2RlbW9ycmlyIHNlbGVjdGlvblxuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBmb2N1cyB0aGUgZWxlbWVudFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IuZm9jdXModGhpcy5lZGl0b3IpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gY29weSB0aGUgZWxlbWVudFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgICAgICAgICB0aGlzLnRoeU5vdGlmeVNlcnZpY2Uuc3VjY2Vzcygn5aSN5Yi25oiQ5YqfJyk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VMYW5ndWxhZ2UgPSBpdGVtID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMsIG1vZGU6IGl0ZW0ua2V5IH07XG4gICAgICAgIHRoaXMuYWN0aXZlcyA9IGl0ZW07XG4gICAgICAgIENvZGVFZGl0b3Iuc2V0TGFuZ3VhZ2UodGhpcy5lZGl0b3IsIGl0ZW0ua2V5LCB0aGlzLmVsZW1lbnQpO1xuICAgIH07XG5cbiAgICB1c2VNb2RlKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgbW9kZTogdGhpcy5lbGVtZW50Lmxhbmd1YWdlIH07XG4gICAgICAgIHRoaXMuYWN0aXZlcyA9IHRoaXMubWVudXMuZmluZChpID0+IGkua2V5ID09PSB0aGlzLmVsZW1lbnQubGFuZ3VhZ2UpO1xuICAgIH1cblxuICAgIHVzZVJlYWRvbmx5KCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucywgcmVhZE9ubHk6IHRoaXMucmVhZG9ubHksIGN1cnNvckJsaW5rUmF0ZTogdGhpcy5yZWFkb25seSA/IC0xIDogNTAwIH07XG4gICAgfVxufVxuIiwiPGRpdiBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiIGNsYXNzPVwidGhlLWJsb2NrLW9wZXJhdGlvblwiICpuZ0lmPVwiY29kZU1pcnJvckZvY3VzZWQgJiYgIW9wdGlvbnMucmVhZE9ubHlcIj5cbiAgICA8dGh5LWljb24tbmF2PlxuICAgICAgICA8dGhlLXRvb2xiYXItZHJvcGRvd24gW21lbnVzXT1cIm1lbnVzXCIgW2l0ZW1dPVwiYWN0aXZlc1wiIFtpdGVtTW91c2Vkb3duSGFuZGxlXT1cIm9uQ2hhbmdlTGFuZ3VsYWdlXCI+PC90aGUtdG9vbGJhci1kcm9wZG93bj5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgdGh5SWNvbk5hdkxpbmtcbiAgICAgICAgICAgIHRoeUljb25OYXZMaW5rSWNvbj1cImNvcHlcIlxuICAgICAgICAgICAgdGh5VG9vbHRpcD1cIuWkjeWItlwiXG4gICAgICAgICAgICB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Db3B5KCRldmVudClcIlxuICAgICAgICA+PC9hPlxuICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgICAgICB0aHlJY29uTmF2TGlua1xuICAgICAgICAgICAgdGh5SWNvbk5hdkxpbmtJY29uPVwidHJhc2hcIlxuICAgICAgICAgICAgdGh5VG9vbHRpcD1cIuWIoOmZpFwiXG4gICAgICAgICAgICBjbGFzcz1cInJlbW92ZS1saW5rXCJcbiAgICAgICAgICAgIHRoeVRvb2x0aXBQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvYT5cbiAgICA8L3RoeS1pY29uLW5hdj5cbjwvZGl2PlxuXG48c2xhdGUtY2hpbGRyZW4gW2NoaWxkcmVuXT1cImNoaWxkcmVuXCIgW2NvbnRleHRdPVwiY2hpbGRyZW5Db250ZXh0XCIgW3ZpZXdDb250ZXh0XT1cInZpZXdDb250ZXh0XCI+PC9zbGF0ZS1jaGlsZHJlbj5cbjxuZy1jb2RlbWlycm9yXG4gICAgKm5nSWY9XCJzdGFydFJlbmRlckNvZGVtaXJyb3JcIlxuICAgICNjb2RlbWlycm9yXG4gICAgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIlxuICAgIGNsYXNzPVwibmctY29kZW1pcnJvci13cmFwcGVyXCJcbiAgICBbbmdTdHlsZV09XCJ7IG1heEhlaWdodDogbWF4SGVpZ2h0ID4gMCA/IG1heEhlaWdodCArICdweCcgOiAnYXV0bycgfVwiXG4gICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgW25nTW9kZWxdPVwiY29kZVwiXG4gICAgW2RlbGF5UmVmcmVzaFRpbWVdPVwiMzAwXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJjb2RlQ2hhbmdlKCRldmVudClcIlxuICAgIChmb2N1c0NoYW5nZSk9XCJmb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgICBbYXV0b01heEhlaWdodF09XCJtYXhIZWlnaHRcIlxuPjwvbmctY29kZW1pcnJvcj5cbiJdfQ==
@@ -4,9 +4,15 @@ import { ElementKinds } from '../../constants/node-types';
4
4
  import * as TheTransforms from '../../transforms';
5
5
  import { DEFAULT_LANGUAGE } from '../../constants/code';
6
6
  export const CodeEditor = {
7
- setCodeAttribute(editor, element, value) {
7
+ setLanguage(editor, language, element) {
8
8
  const at = AngularEditor.findPath(editor, element);
9
- Transforms.setNodes(editor, value, {
9
+ Transforms.setNodes(editor, { language }, {
10
+ at
11
+ });
12
+ },
13
+ setCodeContent(editor, content, element) {
14
+ const at = AngularEditor.findPath(editor, element);
15
+ Transforms.setNodes(editor, { content }, {
10
16
  at
11
17
  });
12
18
  },
@@ -56,4 +62,4 @@ export const CodeEditor = {
56
62
  }
57
63
  }
58
64
  };
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCLGdCQUFnQixDQUFDLE1BQWMsRUFBRSxPQUFvQixFQUFFLEtBQWlDO1FBQ3BGLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUMvQixFQUFFO1NBQ0wsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELFVBQVUsQ0FBQyxNQUFjO1FBQ3JCLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRSxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDL0MsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1lBQ3JCLEVBQUUsRUFBRSxRQUFRLENBQUMsSUFBSTtZQUNqQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO2dCQUNuQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hDLENBQUM7U0FDSixDQUFDLENBQUM7UUFDSCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkQsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVGLElBQUksZUFBZSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLGNBQWMsRUFBRTtZQUNoRixJQUFJLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNuRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNsQyxPQUFPLE9BQU8sR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ3BGLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNQLE1BQU0sV0FBVyxHQUFnQjtnQkFDN0IsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJO2dCQUN2QixPQUFPO2dCQUNQLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO2dCQUNoQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQzthQUMzQixDQUFDO1lBQ0YsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7Z0JBQ25DLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pFLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDL0MsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7b0JBQzNCLEVBQUUsRUFBRTt3QkFDQSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNqRCxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO3FCQUN0QztpQkFDSixDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxNQUFNLFdBQVcsR0FBZ0I7Z0JBQzdCLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTtnQkFDdkIsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLGdCQUFnQixDQUFDLEtBQUs7Z0JBQ2hDLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO2FBQzNCLENBQUM7WUFDRixhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztTQUNwRDtJQUNMLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBOb2RlLCBSYW5nZSwgUGF0aCwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IENvZGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IEVsZW1lbnRLaW5kcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXR5cGVzJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBERUZBVUxUX0xBTkdVQUdFIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvZGUnO1xuXG5leHBvcnQgY29uc3QgQ29kZUVkaXRvciA9IHtcbiAgICBzZXRDb2RlQXR0cmlidXRlKGVkaXRvcjogRWRpdG9yLCBlbGVtZW50OiBDb2RlRWxlbWVudCwgdmFsdWU6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9KSB7XG4gICAgICAgIGNvbnN0IGF0ID0gQW5ndWxhckVkaXRvci5maW5kUGF0aChlZGl0b3IsIGVsZW1lbnQpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKGVkaXRvciwgdmFsdWUsIHtcbiAgICAgICAgICAgIGF0XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgaW5zZXJ0Q29kZShlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICBjb25zdCBpc1NlbGVjdENvbnRlbnQgPSBFZGl0b3Iuc3RyaW5nKGVkaXRvciwgZWRpdG9yLnNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IFtzdGFydFBvaW50LCBlbmRQb2ludF0gPSBSYW5nZS5lZGdlcyhlZGl0b3Iuc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3QgZWxlbWVudEVudHJ5SXRlcmF0b3IgPSBOb2RlLmVsZW1lbnRzKGVkaXRvciwge1xuICAgICAgICAgICAgZnJvbTogc3RhcnRQb2ludC5wYXRoLFxuICAgICAgICAgICAgdG86IGVuZFBvaW50LnBhdGgsXG4gICAgICAgICAgICBwYXNzOiAoW25vZGUsIHBhdGhdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEVkaXRvci5pc0Jsb2NrKGVkaXRvciwgbm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbGVtZW50RW50cnlzID0gQXJyYXkuZnJvbShlbGVtZW50RW50cnlJdGVyYXRvcik7XG4gICAgICAgIGNvbnN0IGlzQWxsUGFyYWdyYXBoID0gZWxlbWVudEVudHJ5cy5ldmVyeShpdGVtID0+IGl0ZW1bMF0udHlwZSA9PT0gRWxlbWVudEtpbmRzLnBhcmFncmFwaCk7XG4gICAgICAgIGlmIChpc1NlbGVjdENvbnRlbnQgJiYgZWRpdG9yLnNlbGVjdGlvbi5hbmNob3IucGF0aC5sZW5ndGggPT09IDIgJiYgaXNBbGxQYXJhZ3JhcGgpIHtcbiAgICAgICAgICAgIGxldCBjb250ZW50ID0gZWxlbWVudEVudHJ5cy5yZWR1Y2UoKGNvbnRlbnQsIFtlbGVtZW50LCBwYXRoXSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gTm9kZS5zdHJpbmcoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQgKyAoZWxlbWVudEVudHJ5cy5sZW5ndGggLSAxID09PSBpbmRleCA/IGAke3RleHR9YCA6IGAke3RleHR9XFxuYCk7XG4gICAgICAgICAgICB9LCAnJyk7XG4gICAgICAgICAgICBjb25zdCBjb2RlRWxlbWVudDogQ29kZUVsZW1lbnQgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogRWxlbWVudEtpbmRzLmNvZGUsXG4gICAgICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgICAgICBsYW5ndWFnZTogREVGQVVMVF9MQU5HVUFHRS52YWx1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW3sgdGV4dDogJycgfV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RQYXRoID0gZWxlbWVudEVudHJ5c1tlbGVtZW50RW50cnlzLmxlbmd0aCAtIDFdWzFdO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZXMoZWRpdG9yLCBjb2RlRWxlbWVudCwgeyBhdDogUGF0aC5uZXh0KGxhc3RQYXRoKSB9KTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIFBhdGgubmV4dChsYXN0UGF0aCkpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMucmVtb3ZlTm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmNob3I6IEVkaXRvci5zdGFydChlZGl0b3IsIGVsZW1lbnRFbnRyeXNbMF1bMV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXM6IEVkaXRvci5lbmQoZWRpdG9yLCBsYXN0UGF0aClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb2RlRWxlbWVudDogQ29kZUVsZW1lbnQgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogRWxlbWVudEtpbmRzLmNvZGUsXG4gICAgICAgICAgICAgICAgY29udGVudDogJycsXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2U6IERFRkFVTFRfTEFOR1VBR0UudmFsdWUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFt7IHRleHQ6ICcnIH1dXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5pbnNlcnRFbGVtZW50KGVkaXRvciwgY29kZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufTtcbiJdfQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9jb2RlL2NvZGUuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCLFdBQVcsQ0FBQyxNQUFjLEVBQUUsUUFBZ0IsRUFBRSxPQUFvQjtRQUM5RCxNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRCxVQUFVLENBQUMsUUFBUSxDQUNmLE1BQU0sRUFDTixFQUFFLFFBQVEsRUFBRSxFQUNaO1lBQ0ksRUFBRTtTQUNMLENBQ0osQ0FBQztJQUNOLENBQUM7SUFDRCxjQUFjLENBQUMsTUFBYyxFQUFFLE9BQWUsRUFBRSxPQUFvQjtRQUNoRSxNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRCxVQUFVLENBQUMsUUFBUSxDQUNmLE1BQU0sRUFDTixFQUFFLE9BQU8sRUFBRSxFQUNYO1lBQ0ksRUFBRTtTQUNMLENBQ0osQ0FBQztJQUNOLENBQUM7SUFDRCxVQUFVLENBQUMsTUFBYztRQUNyQixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENB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QyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQzthQUMzQixDQUFDO1lBQ0YsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvciwgTm9kZSwgUmFuZ2UsIFBhdGgsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBDb2RlRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbm9kZS10eXBlcyc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uLy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgREVGQVVMVF9MQU5HVUFHRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb2RlJztcblxuZXhwb3J0IGNvbnN0IENvZGVFZGl0b3IgPSB7XG4gICAgc2V0TGFuZ3VhZ2UoZWRpdG9yOiBFZGl0b3IsIGxhbmd1YWdlOiBzdHJpbmcsIGVsZW1lbnQ6IENvZGVFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGF0ID0gQW5ndWxhckVkaXRvci5maW5kUGF0aChlZGl0b3IsIGVsZW1lbnQpO1xuICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKFxuICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgeyBsYW5ndWFnZSB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGF0XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSxcbiAgICBzZXRDb2RlQ29udGVudChlZGl0b3I6IEVkaXRvciwgY29udGVudDogc3RyaW5nLCBlbGVtZW50OiBDb2RlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBhdCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgoZWRpdG9yLCBlbGVtZW50KTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhcbiAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgIHsgY29udGVudCB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGF0XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSxcbiAgICBpbnNlcnRDb2RlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IGlzU2VsZWN0Q29udGVudCA9IEVkaXRvci5zdHJpbmcoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3QgW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSA9IFJhbmdlLmVkZ2VzKGVkaXRvci5zZWxlY3Rpb24pO1xuICAgICAgICBjb25zdCBlbGVtZW50RW50cnlJdGVyYXRvciA9IE5vZGUuZWxlbWVudHMoZWRpdG9yLCB7XG4gICAgICAgICAgICBmcm9tOiBzdGFydFBvaW50LnBhdGgsXG4gICAgICAgICAgICB0bzogZW5kUG9pbnQucGF0aCxcbiAgICAgICAgICAgIHBhc3M6IChbbm9kZSwgcGF0aF0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRWRpdG9yLmlzQmxvY2soZWRpdG9yLCBub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRFbnRyeXMgPSBBcnJheS5mcm9tKGVsZW1lbnRFbnRyeUl0ZXJhdG9yKTtcbiAgICAgICAgY29uc3QgaXNBbGxQYXJhZ3JhcGggPSBlbGVtZW50RW50cnlzLmV2ZXJ5KGl0ZW0gPT4gaXRlbVswXS50eXBlID09PSBFbGVtZW50S2luZHMucGFyYWdyYXBoKTtcbiAgICAgICAgaWYgKGlzU2VsZWN0Q29udGVudCAmJiBlZGl0b3Iuc2VsZWN0aW9uLmFuY2hvci5wYXRoLmxlbmd0aCA9PT0gMiAmJiBpc0FsbFBhcmFncmFwaCkge1xuICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBlbGVtZW50RW50cnlzLnJlZHVjZSgoY29udGVudCwgW2VsZW1lbnQsIHBhdGhdLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSBOb2RlLnN0cmluZyhlbGVtZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudCArIChlbGVtZW50RW50cnlzLmxlbmd0aCAtIDEgPT09IGluZGV4ID8gYCR7dGV4dH1gIDogYCR7dGV4dH1cXG5gKTtcbiAgICAgICAgICAgIH0sICcnKTtcbiAgICAgICAgICAgIGNvbnN0IGNvZGVFbGVtZW50OiBDb2RlRWxlbWVudCA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBFbGVtZW50S2luZHMuY29kZSxcbiAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlOiBERUZBVUxUX0xBTkdVQUdFLnZhbHVlLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbeyB0ZXh0OiAnJyB9XVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIEVkaXRvci53aXRob3V0Tm9ybWFsaXppbmcoZWRpdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdFBhdGggPSBlbGVtZW50RW50cnlzW2VsZW1lbnRFbnRyeXMubGVuZ3RoIC0gMV1bMV07XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5pbnNlcnROb2RlcyhlZGl0b3IsIGNvZGVFbGVtZW50LCB7IGF0OiBQYXRoLm5leHQobGFzdFBhdGgpIH0pO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KGVkaXRvciwgUGF0aC5uZXh0KGxhc3RQYXRoKSk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgICAgICAgICAgYXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcjogRWRpdG9yLnN0YXJ0KGVkaXRvciwgZWxlbWVudEVudHJ5c1swXVsxXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1czogRWRpdG9yLmVuZChlZGl0b3IsIGxhc3RQYXRoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvZGVFbGVtZW50OiBDb2RlRWxlbWVudCA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBFbGVtZW50S2luZHMuY29kZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJyxcbiAgICAgICAgICAgICAgICBsYW5ndWFnZTogREVGQVVMVF9MQU5HVUFHRS52YWx1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW3sgdGV4dDogJycgfV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmluc2VydEVsZW1lbnQoZWRpdG9yLCBjb2RlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
@@ -45,7 +45,6 @@ import { PaintFormatOptions } from './paint-format/options';
45
45
  import * as TheTransforms from '../transforms';
46
46
  import { withQuickInsert } from './quick-insert/quick-insert.plugint';
47
47
  import { withSoftBreak } from './soft-break/soft-break.plugin';
48
- import { FontSizeOptions } from './font-size/options';
49
48
  const internalPlugins = [
50
49
  withTheHistory,
51
50
  withAutoInsertData(),
@@ -92,7 +91,6 @@ const internalToolbarItems = [
92
91
  ...MarkOptions,
93
92
  ...ColorOptions,
94
93
  ...HeadingOptions,
95
- ...FontSizeOptions,
96
94
  ...TodoItemOptions,
97
95
  ...ListOptions,
98
96
  ...ImageOptions,
@@ -119,4 +117,4 @@ export const withTheEditor = (plugins, editor) => {
119
117
  pluginList.reduce((prevEditor, nextEditor) => nextEditor(prevEditor), e);
120
118
  return e;
121
119
  };
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFj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QVksRUFBRSxDQUFDLElBQUksQ0FBQztJQUN2RCxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBVSxFQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDOUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUMsQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFbkIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLGVBQWUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBRXBELFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFekUsT0FBTyxDQUFDLENBQUM7QUFDYixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQsIFRleHQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBWaWV3VHlwZSB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0ICogYXMgVHlwZXMgZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgVGhlRWRpdG9yLCBUaGVQbHVnaW4sIFRvb2xiYXJJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBFbGVtZW50S2luZHMsIEVMRU1FTlRfVU5JUVVFX0lELCBIRUFESU5HX1RZUEVTIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGlkQ3JlYXRvciB9IGZyb20gJy4uL3V0aWxzL2lkLWNyZWF0b3InO1xuaW1wb3J0IHsgYXV0b0Zvcm1hdFJ1bGVzIH0gZnJvbSAnLi4vY29uc3RhbnRzL2F1dG8tZm9ybWF0LXJ1bGVzJztcbmltcG9ydCB7IHdpdGhUaGVIaXN0b3J5IH0gZnJvbSAnLi9jb21tb24vaGlzdG9yeS5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aERlc2VyaWFsaXplTWQgfSBmcm9tICcuL2Rlc2VyaWFsaXplcnMvZGVzZXJpYWxpemUtbWQucGx1Z2luJztcbmltcG9ydCB7IHdpdGhBdXRvSW5zZXJ0RGF0YSB9IGZyb20gJy4vY29tbW9uL2F1dG8taW5zZXJ0LWRhdGEuJztcbmltcG9ydCB7IHdpdGhSZW1vdmVFbXB0eSB9IGZyb20gJy4vY29tbW9uL3JlbW92ZS1lbXB0eS5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aFJlc2V0VHlwZSB9IGZyb20gJy4vY29tbW9uL3Jlc2V0LXR5cGUucGx1Z2luJztcbmltcG9ydCB7IHdpdGhJbWFnZSB9IGZyb20gJy4vaW1hZ2UvaW1hZ2UucGx1Z2luJztcbmltcG9ydCB7IHdpdGhJbmRlbnQgfSBmcm9tICcuL2luZGVudC9pbmRlbnQucGx1Z2luJztcbmltcG9ydCB7IHdpdGhMaXN0IH0gZnJvbSAnLi9saXN0L2xpc3QucGx1Z2luJztcbmltcG9ydCB7IHdpdGhUb2RvSXRlbSB9IGZyb20gJy4vdG9kby1pdGVtL3RvZG8taXRlbS5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aEhyIH0gZnJvbSAnLi9oci9oci5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aEFsaWduIH0gZnJvbSAnLi9hbGlnbi9hbGlnbi5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aEhlYWRpbmcgfSBmcm9tICcuL2hlYWRpbmcvaGVhZGluZy5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aE1hcmsgfSBmcm9tICcuL21hcmsvbWFyay5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aE5vZGVJRCB9IGZyb20gJy4vbm9kZS1pZC9ub2RlLWlkLnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoQXV0b0Zvcm1hdCB9IGZyb20gJy4vYXV0b2Zvcm1hdC9hdXRvZm9ybWF0LnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoVHJhbnNmb3JtcyB9IGZyb20gJy4vY29tbW9uL3RyYW5zZm9ybXMucGx1Z2luJztcbmltcG9ydCB7IHdpdGhUcmFpbGluZ05vZGUgfSBmcm9tICcuL25vcm1hbGl6ZXJzL3RyYWlsaW5nLW5vZGUucGx1Z2luJztcbmltcG9ydCB7IHdpdGhCbG9ja0NhcmQgfSBmcm9tICcuL2NvbW1vbi9ibG9jay1jYXJkLnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoTW92ZVNlbGVjdGlvbiB9IGZyb20gJy4vY29tbW9uL21vdmUtc2VsZWN0aW9uLnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoR2V0RnJhZ21lbnQgfSBmcm9tICcuL2NvbW1vbi9nZXQtZnJhZ21lbnQucGx1Z2luJztcbmltcG9ydCB7IFRvZG9JdGVtT3B0aW9ucyB9IGZyb20gJy4vdG9kby1pdGVtL29wdGlvbnMnO1xuaW1wb3J0IHsgTWFya09wdGlvbnMgfSBmcm9tICcuL21hcmsvb3B0aW9ucyc7XG5pbXBvcnQgeyBMaXN0T3B0aW9ucyB9IGZyb20gJy4vbGlzdC9vcHRpb25zJztcbmltcG9ydCB7IEltYWdlT3B0aW9ucyB9IGZyb20gJy4vaW1hZ2Uvb3B0aW9ucyc7XG5pbXBvcnQgeyBIck9wdGlvbnMgfSBmcm9tICcuL2hyL29wdGlvbnMnO1xuaW1wb3J0IHsgSGVhZGluZ09wdGlvbnMgfSBmcm9tICcuL2hlYWRpbmcvb3B0aW9ucyc7XG5pbXBvcnQgeyBCbG9ja3F1b3RlT3B0aW9ucyB9IGZyb20gJy4vYmxvY2txdW90ZS9vcHRpb25zJztcbmltcG9ydCB7IEFsaWduT3B0aW9ucyB9IGZyb20gJy4vYWxpZ24vb3B0aW9ucyc7XG5pbXBvcnQgeyB3aXRoQmxvY2txdW90ZSB9IGZyb20gJy4vYmxvY2txdW90ZS9ibG9ja3F1b3RlLnBsdWdpbic7XG5pbXBvcnQgeyBIaXN0b3J5RWRpdG9yIH0gZnJvbSAnc2xhdGUtaGlzdG9yeSc7XG5pbXBvcnQgeyBDb2xvck9wdGlvbnMgfSBmcm9tICcuL2NvbG9yL29wdGlvbnMnO1xuaW1wb3J0IHsgd2l0aFJlbW92ZVZvaWQgfSBmcm9tICcuL2NvbW1vbi9yZW1vdmUtdm9pZC5wbHVnaW4nO1xuaW1wb3J0IHsgQ29kZU9wdGlvbnMgfSBmcm9tICcuL2NvZGUvb3B0aW9ucyc7XG5pbXBvcnQgeyB3aXRoQ29kZSB9IGZyb20gJy4vY29kZS9jb2RlLnBsdWdpbic7XG5pbXBvcnQgeyBMaW5rT3B0aW9ucyB9IGZyb20gJy4vbGluay9vcHRpb25zJztcbmltcG9ydCB7IHdpdGhMaW5rIH0gZnJvbSAnLi9saW5rL2xpbmsucGx1Z2luJztcbmltcG9ydCB7IFRhYmxlT3B0aW9ucyB9IGZyb20gJy4vdGFibGUvb3B0aW9ucyc7XG5pbXBvcnQgeyB3aXRoVGFibGUgfSBmcm9tICcuL3RhYmxlL3RhYmxlLnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoSW5zZXJ0UGFyYWdyYXBoTm9kZXMgfSBmcm9tICcuL25vcm1hbGl6ZXJzL2luc2VydC1wYXJhZ3JhcGgtbm9kZXMnO1xuaW1wb3J0IHsgd2l0aERlc2VyaWFsaXplSE1UTCB9IGZyb20gJy4vZGVzZXJpYWxpemVycy9kZXNlcmlhbGl6ZS1odG1sLnBsdWdpbic7XG5pbXBvcnQgeyBWZXJ0aWNhbEFsaWduT3B0aW9ucyB9IGZyb20gJy4vdmVydGljYWwtYWxpZ24vb3B0aW9ucyc7XG5pbXBvcnQgeyBQYWludEZvcm1hdE9wdGlvbnMgfSBmcm9tICcuL3BhaW50LWZvcm1hdC9vcHRpb25zJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyB3aXRoUXVpY2tJbnNlcnQgfSBmcm9tICcuL3F1aWNrLWluc2VydC9xdWljay1pbnNlcnQucGx1Z2ludCc7XG5pbXBvcnQgeyB3aXRoU29mdEJyZWFrIH0gZnJvbSAnLi9zb2Z0LWJyZWFrL3NvZnQtYnJlYWsucGx1Z2luJztcbmltcG9ydCB7IEZvbnRTaXplT3B0aW9ucyB9IGZyb20gJy4vZm9udC1zaXplL29wdGlvbnMnO1xuXG5jb25zdCBpbnRlcm5hbFBsdWdpbnM6ICgoZWRpdG9yOiBFZGl0b3IpID0+IEVkaXRvcilbXSA9IFtcbiAgICB3aXRoVGhlSGlzdG9yeSxcbiAgICB3aXRoQXV0b0luc2VydERhdGEoKSxcbiAgICB3aXRoUmVtb3ZlRW1wdHksXG4gICAgd2l0aFJlbW92ZVZvaWQsXG4gICAgd2l0aEJsb2NrQ2FyZCwgLy8gc2hvdWxkIGluIHRoZSBmcm9udCBvZiBsaXN044CBcmVzZXR0eXBl44CBdG9kb+OAgWRlc2VyaWFsaXplLWh0bWxcbiAgICB3aXRoUmVzZXRUeXBlLFxuICAgIHdpdGhJbmRlbnQoW0VsZW1lbnRLaW5kcy5jaGVja0l0ZW0sIEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3QsIEVsZW1lbnRLaW5kcy5idWxsZXRlZExpc3QsIEVsZW1lbnRLaW5kcy5wYXJhZ3JhcGgsIC4uLkhFQURJTkdfVFlQRVNdKSwgLy8gc2hvdWxkIGluIHRoZSBmcm9udCBvZiBsaXN0XG4gICAgd2l0aExpc3QoeyB2YWxpZExpQ2hpbGRyZW5UeXBlczogW0VsZW1lbnRLaW5kcy5pbWFnZV0gfSksXG4gICAgd2l0aExpbmssXG4gICAgd2l0aFRhYmxlLFxuICAgIHdpdGhUb2RvSXRlbSxcbiAgICB3aXRoSHIsXG4gICAgd2l0aEFsaWduLFxuICAgIHdpdGhDb2RlLFxuICAgIHdpdGhIZWFkaW5nLFxuICAgIHdpdGhNYXJrKCksXG4gICAgd2l0aFNvZnRCcmVhayh7XG4gICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICB7IGhvdGtleTogJ3NoaWZ0K2VudGVyJyB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGhvdGtleTogJ2VudGVyJyxcbiAgICAgICAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgICAgICAgICBhbGxvdzogW0VsZW1lbnRLaW5kcy5ibG9ja3F1b3RlXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgIH0pLFxuICAgIHdpdGhCbG9ja3F1b3RlLFxuICAgIHdpdGhOb2RlSUQoeyBpZEtleTogRUxFTUVOVF9VTklRVUVfSUQsIGlkQ3JlYXRvciB9KSxcbiAgICB3aXRoQXV0b0Zvcm1hdCh7IHJ1bGVzOiBhdXRvRm9ybWF0UnVsZXMgfSksXG4gICAgd2l0aFRyYW5zZm9ybXMoKSxcbiAgICB3aXRoVHJhaWxpbmdOb2RlKHsgdHlwZTogRWxlbWVudEtpbmRzLnBhcmFncmFwaCwgbGV2ZWw6IDAgfSksXG4gICAgd2l0aE1vdmVTZWxlY3Rpb24sXG4gICAgd2l0aEluc2VydFBhcmFncmFwaE5vZGVzKCksXG4gICAgd2l0aEdldEZyYWdtZW50KCksXG4gICAgd2l0aEltYWdlLCAvLyAgbXVzdCBiZSBiZWZvcmUgd2l0aERlc2VyaWFsaXplSE1UTFxuICAgIHdpdGhEZXNlcmlhbGl6ZUhNVEwsXG4gICAgd2l0aERlc2VyaWFsaXplTWQoKSxcbiAgICB3aXRoUXVpY2tJbnNlcnRcbl07XG5cbmNvbnN0IGludGVybmFsVG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbVtdID0gW1xuICAgIC4uLkFsaWduT3B0aW9ucyxcbiAgICAuLi5NYXJrT3B0aW9ucyxcbiAgICAuLi5Db2xvck9wdGlvbnMsXG4gICAgLi4uSGVhZGluZ09wdGlvbnMsXG4gICAgLi4uRm9udFNpemVPcHRpb25zLFxuICAgIC4uLlRvZG9JdGVtT3B0aW9ucyxcbiAgICAuLi5MaXN0T3B0aW9ucyxcbiAgICAuLi5JbWFnZU9wdGlvbnMsXG4gICAgLi4uSHJPcHRpb25zLFxuICAgIC4uLkJsb2NrcXVvdGVPcHRpb25zLFxuICAgIC4uLkNvZGVPcHRpb25zLFxuICAgIC4uLkxpbmtPcHRpb25zLFxuICAgIC4uLlRhYmxlT3B0aW9ucyxcbiAgICAuLi5WZXJ0aWNhbEFsaWduT3B0aW9ucyxcbiAgICAuLi5QYWludEZvcm1hdE9wdGlvbnNcbl07XG5cbmV4cG9ydCBjb25zdCB0b29sYmFyQ29tcG9zZSA9ICh0b29sYmFySXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXSkgPT4ge1xuICAgIHJldHVybiBbLi4uaW50ZXJuYWxUb29sYmFySXRlbXMsIC4uLnRvb2xiYXJJdGVtc107XG59O1xuXG5leHBvcnQgY29uc3Qgd2l0aFRoZUVkaXRvciA9IDxUIGV4dGVuZHMgQW5ndWxhckVkaXRvciAmIEhpc3RvcnlFZGl0b3I+KHBsdWdpbnM6IFRoZVBsdWdpbltdLCBlZGl0b3I6IFQpID0+IHtcbiAgICBjb25zdCBlID0gZWRpdG9yIGFzIFQgJiBUaGVFZGl0b3I7XG5cbiAgICBlLnJlbmRlckVsZW1lbnQgPSAoZWxlbWVudDogRWxlbWVudCk6IFZpZXdUeXBlID0+IG51bGw7XG4gICAgZS5yZW5kZXJMZWFmID0gKHRleHQ6IFRleHQpOiBWaWV3VHlwZSA9PiBudWxsO1xuICAgIGUuaW5zZXJ0RWxlbWVudCA9IChlbGVtZW50OiBFbGVtZW50KSA9PiBUaGVUcmFuc2Zvcm1zLmluc2VydEVsZW1lbnROZXh0KGUsIGVsZW1lbnQpO1xuICAgIGUuaXNDb250YWluZXIgPSAodmFsdWU6IEVsZW1lbnQpID0+IGZhbHNlO1xuICAgIGUuZXh0cmFFbGVtZW50T3B0aW9ucyA9IFtdO1xuICAgIGUuZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IHBsdWdpbkxpc3QgPSBbLi4uaW50ZXJuYWxQbHVnaW5zLCAuLi5wbHVnaW5zXTtcblxuICAgIHBsdWdpbkxpc3QucmVkdWNlKChwcmV2RWRpdG9yLCBuZXh0RWRpdG9yKSA9PiBuZXh0RWRpdG9yKHByZXZFZGl0b3IpLCBlKTtcblxuICAgIHJldHVybiBlO1xufTtcbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFj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RUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BGLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUMxQyxDQUFDLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRW5CLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUVwRCxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXpFLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBUZXh0IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgVmlld1R5cGUgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCAqIGFzIFR5cGVzIGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFRoZUVkaXRvciwgVGhlUGx1Z2luLCBUb29sYmFySXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzLCBFTEVNRU5UX1VOSVFVRV9JRCwgSEVBRElOR19UWVBFUyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpZENyZWF0b3IgfSBmcm9tICcuLi91dGlscy9pZC1jcmVhdG9yJztcbmltcG9ydCB7IGF1dG9Gb3JtYXRSdWxlcyB9IGZyb20gJy4uL2NvbnN0YW50cy9hdXRvLWZvcm1hdC1ydWxlcyc7XG5pbXBvcnQgeyB3aXRoVGhlSGlzdG9yeSB9IGZyb20gJy4vY29tbW9uL2hpc3RvcnkucGx1Z2luJztcbmltcG9ydCB7IHdpdGhEZXNlcmlhbGl6ZU1kIH0gZnJvbSAnLi9kZXNlcmlhbGl6ZXJzL2Rlc2VyaWFsaXplLW1kLnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoQXV0b0luc2VydERhdGEgfSBmcm9tICcuL2NvbW1vbi9hdXRvLWluc2VydC1kYXRhLic7XG5pbXBvcnQgeyB3aXRoUmVtb3ZlRW1wdHkgfSBmcm9tICcuL2NvbW1vbi9yZW1vdmUtZW1wdHkucGx1Z2luJztcbmltcG9ydCB7IHdpdGhSZXNldFR5cGUgfSBmcm9tICcuL2NvbW1vbi9yZXNldC10eXBlLnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoSW1hZ2UgfSBmcm9tICcuL2ltYWdlL2ltYWdlLnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoSW5kZW50IH0gZnJvbSAnLi9pbmRlbnQvaW5kZW50LnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoTGlzdCB9IGZyb20gJy4vbGlzdC9saXN0LnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoVG9kb0l0ZW0gfSBmcm9tICcuL3RvZG8taXRlbS90b2RvLWl0ZW0ucGx1Z2luJztcbmltcG9ydCB7IHdpdGhIciB9IGZyb20gJy4vaHIvaHIucGx1Z2luJztcbmltcG9ydCB7IHdpdGhBbGlnbiB9IGZyb20gJy4vYWxpZ24vYWxpZ24ucGx1Z2luJztcbmltcG9ydCB7IHdpdGhIZWFkaW5nIH0gZnJvbSAnLi9oZWFkaW5nL2hlYWRpbmcucGx1Z2luJztcbmltcG9ydCB7IHdpdGhNYXJrIH0gZnJvbSAnLi9tYXJrL21hcmsucGx1Z2luJztcbmltcG9ydCB7IHdpdGhOb2RlSUQgfSBmcm9tICcuL25vZGUtaWQvbm9kZS1pZC5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aEF1dG9Gb3JtYXQgfSBmcm9tICcuL2F1dG9mb3JtYXQvYXV0b2Zvcm1hdC5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aFRyYW5zZm9ybXMgfSBmcm9tICcuL2NvbW1vbi90cmFuc2Zvcm1zLnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoVHJhaWxpbmdOb2RlIH0gZnJvbSAnLi9ub3JtYWxpemVycy90cmFpbGluZy1ub2RlLnBsdWdpbic7XG5pbXBvcnQgeyB3aXRoQmxvY2tDYXJkIH0gZnJvbSAnLi9jb21tb24vYmxvY2stY2FyZC5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aE1vdmVTZWxlY3Rpb24gfSBmcm9tICcuL2NvbW1vbi9tb3ZlLXNlbGVjdGlvbi5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aEdldEZyYWdtZW50IH0gZnJvbSAnLi9jb21tb24vZ2V0LWZyYWdtZW50LnBsdWdpbic7XG5pbXBvcnQgeyBUb2RvSXRlbU9wdGlvbnMgfSBmcm9tICcuL3RvZG8taXRlbS9vcHRpb25zJztcbmltcG9ydCB7IE1hcmtPcHRpb25zIH0gZnJvbSAnLi9tYXJrL29wdGlvbnMnO1xuaW1wb3J0IHsgTGlzdE9wdGlvbnMgfSBmcm9tICcuL2xpc3Qvb3B0aW9ucyc7XG5pbXBvcnQgeyBJbWFnZU9wdGlvbnMgfSBmcm9tICcuL2ltYWdlL29wdGlvbnMnO1xuaW1wb3J0IHsgSHJPcHRpb25zIH0gZnJvbSAnLi9oci9vcHRpb25zJztcbmltcG9ydCB7IEhlYWRpbmdPcHRpb25zIH0gZnJvbSAnLi9oZWFkaW5nL29wdGlvbnMnO1xuaW1wb3J0IHsgQmxvY2txdW90ZU9wdGlvbnMgfSBmcm9tICcuL2Jsb2NrcXVvdGUvb3B0aW9ucyc7XG5pbXBvcnQgeyBBbGlnbk9wdGlvbnMgfSBmcm9tICcuL2FsaWduL29wdGlvbnMnO1xuaW1wb3J0IHsgd2l0aEJsb2NrcXVvdGUgfSBmcm9tICcuL2Jsb2NrcXVvdGUvYmxvY2txdW90ZS5wbHVnaW4nO1xuaW1wb3J0IHsgSGlzdG9yeUVkaXRvciB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgQ29sb3JPcHRpb25zIH0gZnJvbSAnLi9jb2xvci9vcHRpb25zJztcbmltcG9ydCB7IHdpdGhSZW1vdmVWb2lkIH0gZnJvbSAnLi9jb21tb24vcmVtb3ZlLXZvaWQucGx1Z2luJztcbmltcG9ydCB7IENvZGVPcHRpb25zIH0gZnJvbSAnLi9jb2RlL29wdGlvbnMnO1xuaW1wb3J0IHsgd2l0aENvZGUgfSBmcm9tICcuL2NvZGUvY29kZS5wbHVnaW4nO1xuaW1wb3J0IHsgTGlua09wdGlvbnMgfSBmcm9tICcuL2xpbmsvb3B0aW9ucyc7XG5pbXBvcnQgeyB3aXRoTGluayB9IGZyb20gJy4vbGluay9saW5rLnBsdWdpbic7XG5pbXBvcnQgeyBUYWJsZU9wdGlvbnMgfSBmcm9tICcuL3RhYmxlL29wdGlvbnMnO1xuaW1wb3J0IHsgd2l0aFRhYmxlIH0gZnJvbSAnLi90YWJsZS90YWJsZS5wbHVnaW4nO1xuaW1wb3J0IHsgd2l0aEluc2VydFBhcmFncmFwaE5vZGVzIH0gZnJvbSAnLi9ub3JtYWxpemVycy9pbnNlcnQtcGFyYWdyYXBoLW5vZGVzJztcbmltcG9ydCB7IHdpdGhEZXNlcmlhbGl6ZUhNVEwgfSBmcm9tICcuL2Rlc2VyaWFsaXplcnMvZGVzZXJpYWxpemUtaHRtbC5wbHVnaW4nO1xuaW1wb3J0IHsgVmVydGljYWxBbGlnbk9wdGlvbnMgfSBmcm9tICcuL3ZlcnRpY2FsLWFsaWduL29wdGlvbnMnO1xuaW1wb3J0IHsgUGFpbnRGb3JtYXRPcHRpb25zIH0gZnJvbSAnLi9wYWludC1mb3JtYXQvb3B0aW9ucyc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgd2l0aFF1aWNrSW5zZXJ0IH0gZnJvbSAnLi9xdWljay1pbnNlcnQvcXVpY2staW5zZXJ0LnBsdWdpbnQnO1xuaW1wb3J0IHsgd2l0aFNvZnRCcmVhayB9IGZyb20gJy4vc29mdC1icmVhay9zb2Z0LWJyZWFrLnBsdWdpbic7XG5cbmNvbnN0IGludGVybmFsUGx1Z2luczogKChlZGl0b3I6IEVkaXRvcikgPT4gRWRpdG9yKVtdID0gW1xuICAgIHdpdGhUaGVIaXN0b3J5LFxuICAgIHdpdGhBdXRvSW5zZXJ0RGF0YSgpLFxuICAgIHdpdGhSZW1vdmVFbXB0eSxcbiAgICB3aXRoUmVtb3ZlVm9pZCxcbiAgICB3aXRoQmxvY2tDYXJkLCAvLyBzaG91bGQgaW4gdGhlIGZyb250IG9mIGxpc3TjgIFyZXNldHR5cGXjgIF0b2Rv44CBZGVzZXJpYWxpemUtaHRtbFxuICAgIHdpdGhSZXNldFR5cGUsXG4gICAgd2l0aEluZGVudChbRWxlbWVudEtpbmRzLmNoZWNrSXRlbSwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdCwgRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCwgRWxlbWVudEtpbmRzLnBhcmFncmFwaCwgLi4uSEVBRElOR19UWVBFU10pLCAvLyBzaG91bGQgaW4gdGhlIGZyb250IG9mIGxpc3RcbiAgICB3aXRoTGlzdCh7IHZhbGlkTGlDaGlsZHJlblR5cGVzOiBbRWxlbWVudEtpbmRzLmltYWdlXSB9KSxcbiAgICB3aXRoTGluayxcbiAgICB3aXRoVGFibGUsXG4gICAgd2l0aFRvZG9JdGVtLFxuICAgIHdpdGhIcixcbiAgICB3aXRoQWxpZ24sXG4gICAgd2l0aENvZGUsXG4gICAgd2l0aEhlYWRpbmcsXG4gICAgd2l0aE1hcmsoKSxcbiAgICB3aXRoU29mdEJyZWFrKHtcbiAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgIHsgaG90a2V5OiAnc2hpZnQrZW50ZXInIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaG90a2V5OiAnZW50ZXInLFxuICAgICAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgICAgICAgIGFsbG93OiBbRWxlbWVudEtpbmRzLmJsb2NrcXVvdGVdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfSksXG4gICAgd2l0aEJsb2NrcXVvdGUsXG4gICAgd2l0aE5vZGVJRCh7IGlkS2V5OiBFTEVNRU5UX1VOSVFVRV9JRCwgaWRDcmVhdG9yIH0pLFxuICAgIHdpdGhBdXRvRm9ybWF0KHsgcnVsZXM6IGF1dG9Gb3JtYXRSdWxlcyB9KSxcbiAgICB3aXRoVHJhbnNmb3JtcygpLFxuICAgIHdpdGhUcmFpbGluZ05vZGUoeyB0eXBlOiBFbGVtZW50S2luZHMucGFyYWdyYXBoLCBsZXZlbDogMCB9KSxcbiAgICB3aXRoTW92ZVNlbGVjdGlvbixcbiAgICB3aXRoSW5zZXJ0UGFyYWdyYXBoTm9kZXMoKSxcbiAgICB3aXRoR2V0RnJhZ21lbnQoKSxcbiAgICB3aXRoSW1hZ2UsIC8vICBtdXN0IGJlIGJlZm9yZSB3aXRoRGVzZXJpYWxpemVITVRMXG4gICAgd2l0aERlc2VyaWFsaXplSE1UTCxcbiAgICB3aXRoRGVzZXJpYWxpemVNZCgpLFxuICAgIHdpdGhRdWlja0luc2VydFxuXTtcblxuY29uc3QgaW50ZXJuYWxUb29sYmFySXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXG4gICAgLi4uQWxpZ25PcHRpb25zLFxuICAgIC4uLk1hcmtPcHRpb25zLFxuICAgIC4uLkNvbG9yT3B0aW9ucyxcbiAgICAuLi5IZWFkaW5nT3B0aW9ucyxcbiAgICAuLi5Ub2RvSXRlbU9wdGlvbnMsXG4gICAgLi4uTGlzdE9wdGlvbnMsXG4gICAgLi4uSW1hZ2VPcHRpb25zLFxuICAgIC4uLkhyT3B0aW9ucyxcbiAgICAuLi5CbG9ja3F1b3RlT3B0aW9ucyxcbiAgICAuLi5Db2RlT3B0aW9ucyxcbiAgICAuLi5MaW5rT3B0aW9ucyxcbiAgICAuLi5UYWJsZU9wdGlvbnMsXG4gICAgLi4uVmVydGljYWxBbGlnbk9wdGlvbnMsXG4gICAgLi4uUGFpbnRGb3JtYXRPcHRpb25zXG5dO1xuXG5leHBvcnQgY29uc3QgdG9vbGJhckNvbXBvc2UgPSAodG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbVtdID0gW10pID0+IHtcbiAgICByZXR1cm4gWy4uLmludGVybmFsVG9vbGJhckl0ZW1zLCAuLi50b29sYmFySXRlbXNdO1xufTtcblxuZXhwb3J0IGNvbnN0IHdpdGhUaGVFZGl0b3IgPSA8VCBleHRlbmRzIEFuZ3VsYXJFZGl0b3IgJiBIaXN0b3J5RWRpdG9yPihwbHVnaW5zOiBUaGVQbHVnaW5bXSwgZWRpdG9yOiBUKSA9PiB7XG4gICAgY29uc3QgZSA9IGVkaXRvciBhcyBUICYgVGhlRWRpdG9yO1xuXG4gICAgZS5yZW5kZXJFbGVtZW50ID0gKGVsZW1lbnQ6IEVsZW1lbnQpOiBWaWV3VHlwZSA9PiBudWxsO1xuICAgIGUucmVuZGVyTGVhZiA9ICh0ZXh0OiBUZXh0KTogVmlld1R5cGUgPT4gbnVsbDtcbiAgICBlLmluc2VydEVsZW1lbnQgPSAoZWxlbWVudDogRWxlbWVudCkgPT4gVGhlVHJhbnNmb3Jtcy5pbnNlcnRFbGVtZW50TmV4dChlLCBlbGVtZW50KTtcbiAgICBlLmlzQ29udGFpbmVyID0gKHZhbHVlOiBFbGVtZW50KSA9PiBmYWxzZTtcbiAgICBlLmV4dHJhRWxlbWVudE9wdGlvbnMgPSBbXTtcbiAgICBlLmRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBwbHVnaW5MaXN0ID0gWy4uLmludGVybmFsUGx1Z2lucywgLi4ucGx1Z2luc107XG5cbiAgICBwbHVnaW5MaXN0LnJlZHVjZSgocHJldkVkaXRvciwgbmV4dEVkaXRvcikgPT4gbmV4dEVkaXRvcihwcmV2RWRpdG9yKSwgZSk7XG5cbiAgICByZXR1cm4gZTtcbn07XG4iXX0=