@worktile/theia 1.2.9 → 1.2.13

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.
Files changed (92) hide show
  1. package/bundles/worktile-theia.umd.js +886 -225
  2. package/bundles/worktile-theia.umd.js.map +1 -1
  3. package/components/column-resize/column-resize.directive.d.ts +3 -3
  4. package/components/inline-toolbar/inline-toolbar.component.d.ts +26 -0
  5. package/components/inline-toolbar/inline-toolbar.component.scss +19 -0
  6. package/components/nav-split-line/nav-split-line.component.d.ts +6 -1
  7. package/components/toolbar/toolbar.component.d.ts +2 -1
  8. package/components/toolbar-dropdown/toolbar-dropdown.component.scss +3 -0
  9. package/components/toolbar-item/toolbar-item.component.d.ts +14 -5
  10. package/constants/node-types.d.ts +0 -1
  11. package/constants/toolbar.d.ts +6 -2
  12. package/custom-types.d.ts +3 -0
  13. package/editor.component.d.ts +8 -4
  14. package/editor.module.d.ts +59 -52
  15. package/esm2015/components/color-select/color-select.component.js +3 -2
  16. package/esm2015/components/column-resize/column-resize.directive.js +1 -1
  17. package/esm2015/components/inline-toolbar/inline-toolbar.component.js +139 -0
  18. package/esm2015/components/nav-split-line/nav-split-line.component.js +26 -5
  19. package/esm2015/components/toolbar/toolbar.component.js +7 -6
  20. package/esm2015/components/toolbar-base-item/toolbar-base-item.component.js +3 -2
  21. package/esm2015/components/toolbar-group/toolbar-group.component.js +1 -1
  22. package/esm2015/components/toolbar-item/toolbar-item.component.js +70 -24
  23. package/esm2015/constants/node-types.js +1 -2
  24. package/esm2015/constants/toolbar.js +37 -5
  25. package/esm2015/custom-types.js +1 -1
  26. package/esm2015/editor.component.js +40 -23
  27. package/esm2015/editor.module.js +15 -6
  28. package/esm2015/interfaces/toolbar.js +1 -1
  29. package/esm2015/plugins/deserializers/deserialize-html.plugin.js +12 -3
  30. package/esm2015/plugins/deserializers/deserialize-md.plugin.js +2 -2
  31. package/esm2015/plugins/image/image.plugin.js +1 -2
  32. package/esm2015/plugins/index.js +8 -4
  33. package/esm2015/plugins/link/link.plugin.js +7 -2
  34. package/esm2015/plugins/list/list.plugin.js +7 -7
  35. package/esm2015/plugins/list/queries/get-start-list-item.js +9 -2
  36. package/esm2015/plugins/list/queries/is-selection-in-same-list-item.js +17 -0
  37. package/esm2015/plugins/paint-format/options.js +54 -0
  38. package/esm2015/plugins/paint-format/paint-format.editor.js +67 -0
  39. package/esm2015/plugins/placeholder/placeholder.component.js +79 -0
  40. package/esm2015/plugins/public-api.js +2 -1
  41. package/esm2015/plugins/quick-insert/components/quick-insert.component.js +77 -0
  42. package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +75 -0
  43. package/esm2015/plugins/quick-insert/quick-insert.editor.js +61 -0
  44. package/esm2015/plugins/quick-insert/quick-insert.plugint.js +38 -0
  45. package/esm2015/plugins/table/components/row/row.component.js +3 -1
  46. package/esm2015/plugins/table/components/table.component.js +6 -3
  47. package/esm2015/plugins/table/components/td/td.component.js +2 -1
  48. package/esm2015/plugins/table/components/toolbar/table-toolbar.component.js +1 -1
  49. package/esm2015/plugins/table/table.plugin.js +34 -55
  50. package/esm2015/plugins/table/table.types.js +1 -1
  51. package/esm2015/plugins/table/utils/normalize-table.js +31 -0
  52. package/esm2015/public-api.js +2 -1
  53. package/esm2015/queries/is-container-type.js +2 -2
  54. package/esm2015/services/context.service.js +10 -2
  55. package/esm2015/services/toolbar.service.js +5 -5
  56. package/esm2015/transforms/index.js +2 -3
  57. package/esm2015/utils/auto-focus.js +3 -3
  58. package/esm2015/utils/fragment.js +24 -2
  59. package/esm2015/utils/is-clean-empty-paragraph.js +32 -0
  60. package/esm2015/utils/weak-maps.js +2 -1
  61. package/fesm2015/worktile-theia.js +865 -223
  62. package/fesm2015/worktile-theia.js.map +1 -1
  63. package/interfaces/toolbar.d.ts +3 -2
  64. package/package.json +1 -1
  65. package/plugins/list/queries/get-start-list-item.d.ts +8 -2
  66. package/plugins/list/queries/is-selection-in-same-list-item.d.ts +5 -0
  67. package/plugins/paint-format/options.d.ts +2 -0
  68. package/plugins/paint-format/paint-format.editor.d.ts +7 -0
  69. package/{components → plugins}/placeholder/placeholder.component.d.ts +6 -6
  70. package/{components → plugins}/placeholder/placeholder.component.scss +0 -0
  71. package/plugins/public-api.d.ts +1 -0
  72. package/plugins/quick-insert/components/quick-insert.component.d.ts +25 -0
  73. package/plugins/quick-insert/components/quick-insert.component.scss +21 -0
  74. package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.d.ts +29 -0
  75. package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.scss +21 -0
  76. package/plugins/quick-insert/quick-insert.editor.d.ts +8 -0
  77. package/plugins/quick-insert/quick-insert.plugint.d.ts +2 -0
  78. package/plugins/table/components/table.component.d.ts +1 -0
  79. package/plugins/table/table.types.d.ts +7 -0
  80. package/plugins/table/utils/normalize-table.d.ts +2 -0
  81. package/public-api.d.ts +1 -0
  82. package/services/context.service.d.ts +2 -0
  83. package/services/toolbar.service.d.ts +1 -1
  84. package/styles/editor.scss +33 -11
  85. package/styles/index.scss +5 -2
  86. package/transforms/index.d.ts +1 -2
  87. package/utils/fragment.d.ts +5 -0
  88. package/utils/is-clean-empty-paragraph.d.ts +8 -0
  89. package/utils/weak-maps.d.ts +1 -0
  90. package/esm2015/components/placeholder/placeholder.component.js +0 -88
  91. package/esm2015/transforms/insert-elements.js +0 -22
  92. package/transforms/insert-elements.d.ts +0 -2
@@ -2,7 +2,7 @@ import { OnDestroy, AfterViewInit, ElementRef, ViewContainerRef, ChangeDetectorR
2
2
  import { ReplaySubject } from 'rxjs';
3
3
  import { TableCellEventDispatcher } from './event-dispatcher';
4
4
  import { ColumnResizeNotifierSource } from './column-resize-notifier';
5
- import type { TheTableComponent } from '../../plugins/table/components/table.component';
5
+ import { TheTableComponentBase } from '../../plugins/table/table.types';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class TheColumnResizeDirective implements AfterViewInit, OnDestroy {
8
8
  elementRef: ElementRef;
@@ -11,10 +11,10 @@ export declare class TheColumnResizeDirective implements AfterViewInit, OnDestro
11
11
  ngZone: NgZone;
12
12
  eventDispatcher: TableCellEventDispatcher;
13
13
  resizeNotifier: ColumnResizeNotifierSource;
14
- theTableComponent: TheTableComponent;
14
+ theTableComponent: TheTableComponentBase;
15
15
  protected readonly destroyed: ReplaySubject<void>;
16
16
  protected isXAxis: boolean;
17
- constructor(elementRef: ElementRef, viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef, ngZone: NgZone, eventDispatcher: TableCellEventDispatcher, resizeNotifier: ColumnResizeNotifierSource, theTableComponent: TheTableComponent);
17
+ constructor(elementRef: ElementRef, viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef, ngZone: NgZone, eventDispatcher: TableCellEventDispatcher, resizeNotifier: ColumnResizeNotifierSource, theTableComponent: TheTableComponentBase);
18
18
  ngAfterViewInit(): void;
19
19
  _listenForCellEdgeHoverEvents(): void;
20
20
  _listenStartDrag(): void;
@@ -0,0 +1,26 @@
1
+ import { OnInit, OnDestroy, ChangeDetectorRef, ElementRef, NgZone } from '@angular/core';
2
+ import { ScrollDispatcher } from '@angular/cdk/overlay';
3
+ import { Subject } from 'rxjs';
4
+ import { Editor } from 'slate';
5
+ import { ToolbarItem } from '../../interfaces';
6
+ import { TheToolbarComponent } from '../toolbar/toolbar.component';
7
+ import { TheContextService } from '../../services/context.service';
8
+ import * as i0 from "@angular/core";
9
+ export declare class TheInlineToolbarComponent implements OnInit, OnDestroy {
10
+ private elementRef;
11
+ private scrollDispatcher;
12
+ private cdr;
13
+ private ngZone;
14
+ private contextService;
15
+ editor: Editor;
16
+ toolbarItems: ToolbarItem[];
17
+ inlineToolbar: TheToolbarComponent;
18
+ destroy$: Subject<unknown>;
19
+ constructor(elementRef: ElementRef<any>, scrollDispatcher: ScrollDispatcher, cdr: ChangeDetectorRef, ngZone: NgZone, contextService: TheContextService);
20
+ ngOnInit(): void;
21
+ updateInlineToolbar(): void;
22
+ updatePosition(toolbarElement: HTMLElement, range: any): void;
23
+ ngOnDestroy(): void;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<TheInlineToolbarComponent, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<TheInlineToolbarComponent, "the-inline-toolbar", never, { "editor": "editor"; "toolbarItems": "toolbarItems"; }, {}, never, never>;
26
+ }
@@ -0,0 +1,19 @@
1
+ .the-editable-container .the-inline-toolbar {
2
+ position: fixed;
3
+ top: -10000px;
4
+ left: -10000px;
5
+ width: auto;
6
+ margin-top: -6px;
7
+ border-radius: 4px;
8
+ background: $white;
9
+ box-shadow: $box-shadow;
10
+ opacity: 0;
11
+ z-index: 9;
12
+ transition: opacity 0.75s;
13
+
14
+ &.hide {
15
+ display: none;
16
+ }
17
+
18
+ @include thy-icon-nav-disabled();
19
+ }
@@ -1,8 +1,13 @@
1
1
  import { OnInit } from '@angular/core';
2
+ import { ToolbarItemMode } from '../../constants/toolbar';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class NavSplitLineComponent implements OnInit {
5
+ mode: ToolbarItemMode;
6
+ theNavSplitLine: boolean;
7
+ get horizontal(): boolean;
8
+ get vertical(): boolean;
4
9
  constructor();
5
10
  ngOnInit(): void;
6
11
  static ɵfac: i0.ɵɵFactoryDeclaration<NavSplitLineComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<NavSplitLineComponent, "nav-split-line", never, {}, {}, never, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavSplitLineComponent, "nav-split-line", never, { "mode": "mode"; }, {}, never, never>;
8
13
  }
@@ -12,6 +12,7 @@ export declare class TheToolbarComponent implements OnInit, OnChanges, OnDestroy
12
12
  editor: Editor;
13
13
  toolbarItems: ToolbarItem[];
14
14
  align: ToolbarAlignment;
15
+ containerClass: string[];
15
16
  isMore: boolean;
16
17
  afterTemplate: TemplateRef<any>;
17
18
  toolbarContainer: ViewContainerRef;
@@ -59,5 +60,5 @@ export declare class TheToolbarComponent implements OnInit, OnChanges, OnDestroy
59
60
  private createMoreGroup;
60
61
  private viewComponentType;
61
62
  static ɵfac: i0.ɵɵFactoryDeclaration<TheToolbarComponent, never>;
62
- static ɵcmp: i0.ɵɵComponentDeclaration<TheToolbarComponent, "the-toolbar", never, { "editor": "editor"; "toolbarItems": "toolbarItems"; "align": "align"; "isMore": "isMore"; "afterTemplate": "afterTemplate"; }, {}, never, ["*"]>;
63
+ static ɵcmp: i0.ɵɵComponentDeclaration<TheToolbarComponent, "the-toolbar", never, { "editor": "editor"; "toolbarItems": "toolbarItems"; "align": "align"; "containerClass": "containerClass"; "isMore": "isMore"; "afterTemplate": "afterTemplate"; }, {}, never, ["*"]>;
63
64
  }
@@ -36,6 +36,9 @@
36
36
  color: initial;
37
37
  position: relative;
38
38
  }
39
+ .table-down-icon {
40
+ left: 2px;
41
+ }
39
42
  }
40
43
  }
41
44
 
@@ -1,15 +1,24 @@
1
+ import { ComponentFactoryResolver, NgZone, OnInit, ViewContainerRef } from '@angular/core';
1
2
  import { Editor } from 'slate';
2
- import { DefaultToolbarItem } from '../../interfaces';
3
+ import { ToolbarItem } from '../../interfaces';
3
4
  import { CustomEditor } from '../../custom-types';
4
5
  import { TheToolbarBaseItemComponent } from '../toolbar-base-item/toolbar-base-item.component';
6
+ import { ToolbarItemMode } from '../../constants/toolbar';
5
7
  import * as i0 from "@angular/core";
6
- export declare class TheToolbarItemComponent extends TheToolbarBaseItemComponent {
7
- item: DefaultToolbarItem;
8
+ export declare class TheToolbarItemComponent extends TheToolbarBaseItemComponent implements OnInit {
9
+ private ngZone;
10
+ private cfr;
11
+ item: ToolbarItem;
8
12
  editor: CustomEditor;
13
+ itemMode: ToolbarItemMode;
14
+ ToolbarItemMode: typeof ToolbarItemMode;
9
15
  active: string | boolean;
10
- constructor();
16
+ toolbarContainer: ViewContainerRef;
17
+ constructor(ngZone: NgZone, cfr: ComponentFactoryResolver);
18
+ ngOnInit(): void;
11
19
  statusChange(editor: Editor): void;
12
20
  execute(event: MouseEvent): void;
21
+ renderToolbarItem(): void;
13
22
  static ɵfac: i0.ɵɵFactoryDeclaration<TheToolbarItemComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<TheToolbarItemComponent, "the-toolbar-item", never, { "item": "item"; "editor": "editor"; }, {}, never, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<TheToolbarItemComponent, "the-toolbar-item", never, { "item": "item"; "editor": "editor"; "itemMode": "itemMode"; }, {}, never, never>;
15
24
  }
@@ -44,7 +44,6 @@ export declare enum MarkTypes {
44
44
  }
45
45
  export declare enum ToolbarActionTypes {
46
46
  split = "split",
47
- save = "save",
48
47
  undo = "undo",
49
48
  redo = "redo",
50
49
  paintformat = "paintformat",
@@ -3,12 +3,16 @@ import { InjectionToken } from '@angular/core';
3
3
  import { ToolbarItem, ToolbarKey } from '../interfaces';
4
4
  import type { TheToolbarGroupComponent } from '../components/toolbar-group/toolbar-group.component';
5
5
  export declare const TheToolbarGroupToken: InjectionToken<ComponentType<TheToolbarGroupComponent>>;
6
- export declare const BLOCK_TOOLBAR_HOTKEY = "/";
6
+ export declare const QUICK_TOOLBAR_HOTKEY = "/";
7
7
  export declare enum DropdownMode {
8
8
  icon = "icon-mode",
9
9
  text = "text-mode"
10
10
  }
11
+ export declare enum ToolbarItemMode {
12
+ horizontal = 0,
13
+ vertical = 1
14
+ }
11
15
  export declare const DefaultGlobalToolbarDefinition: ToolbarKey[];
12
16
  export declare const DefaultInlineToolbarDefinition: ToolbarKey[];
13
- export declare const DefaultBlockToolbarDefinition: ToolbarKey[];
17
+ export declare const DefaultQuickToolbarDefinition: ToolbarKey[];
14
18
  export declare const ToolbarMoreGroup: ToolbarItem;
package/custom-types.d.ts CHANGED
@@ -30,6 +30,7 @@ export interface NumberedListElement extends TheElement {
30
30
  export interface ListItemElement extends TheElement {
31
31
  type: ElementKinds.listItem;
32
32
  start?: number;
33
+ children: Element[];
33
34
  }
34
35
  export interface LinkElement extends TheElement {
35
36
  type: ElementKinds.link;
@@ -109,6 +110,8 @@ export declare type CustomText = {
109
110
  code?: boolean;
110
111
  text: string;
111
112
  underlined?: boolean;
113
+ color?: string;
114
+ [`background-color`]?: string;
112
115
  };
113
116
  export declare type EmptyText = {
114
117
  text: string;
@@ -2,13 +2,14 @@ import { OnInit, OnDestroy, ViewContainerRef, ElementRef, EventEmitter, OnChange
2
2
  import { MixinBase } from 'ngx-tethys/core';
3
3
  import { Editor, Text, Element, Descendant, Range, NodeEntry } from 'slate';
4
4
  import { SlateError } from 'slate-angular';
5
- import { ThePlugin, TheOptions, ToolbarItem, DomEventDataInfo, TheEditor } from './interfaces';
5
+ import { ThePlugin, TheOptions, DomEventDataInfo, TheEditor, ToolbarEntity } from './interfaces';
6
6
  import { TheTemplateComponent } from './components/template/template.component';
7
7
  import { TheToolbarComponent } from './components/toolbar/toolbar.component';
8
8
  import { TheToolbarService } from './services/toolbar.service';
9
9
  import { TheContextService } from './services/context.service';
10
10
  import { TheTextComponent } from './components/text/text.component';
11
- import { ThePlaceholderComponent } from './components/placeholder/placeholder.component';
11
+ import { TheQuickInsertComponent } from './plugins/quick-insert/components/quick-insert.component';
12
+ import { ThePlaceholderComponent } from './plugins/placeholder/placeholder.component';
12
13
  import * as i0 from "@angular/core";
13
14
  declare const TheEditorComponent_base: import("ngx-tethys/core").Constructor<import("ngx-tethys/core").ThyUnsubscribe> & typeof MixinBase;
14
15
  export declare class TheEditorComponent extends TheEditorComponent_base implements OnInit, OnChanges, OnDestroy {
@@ -30,14 +31,17 @@ export declare class TheEditorComponent extends TheEditorComponent_base implemen
30
31
  theEditorCreated: EventEmitter<Editor>;
31
32
  templateInstance: TheTemplateComponent;
32
33
  globalToolbarInstance: TheToolbarComponent;
34
+ quickInsertInstance: TheQuickInsertComponent;
33
35
  placeholderInstance: ThePlaceholderComponent;
34
36
  _plugins: ThePlugin[];
35
- globalToolbarItems: ToolbarItem[];
37
+ toolbarEntity: ToolbarEntity;
36
38
  editor: TheEditor;
37
39
  editorValue: Descendant[];
40
+ globalToolbarClass: string[];
38
41
  decorate: (nodeEntry: NodeEntry) => Range[];
39
42
  get theGlobalToolbarInstance(): TheToolbarComponent;
40
43
  get maxHeight(): string;
44
+ get quickToolbarItems(): import("./interfaces").ToolbarItem[];
41
45
  autoScrollView: any;
42
46
  elementToHtml: WeakMap<Element, string>;
43
47
  private onChangeCallback;
@@ -78,7 +82,7 @@ export declare class TheEditorComponent extends TheEditorComponent_base implemen
78
82
  onSlaCompositionEnd: (event: CompositionEvent) => void;
79
83
  onSlaDragStart: (event: DragEvent) => void;
80
84
  onSlaDragOver: (event: DragEvent) => void;
81
- trackBy: (element: Element) => string;
85
+ onDrop: (event: Event) => void;
82
86
  getTextAndJSON(data: DataTransfer): {
83
87
  json: any[];
84
88
  text: string;
@@ -9,7 +9,6 @@ import { TheTemplateComponent } from './components/template/template.component';
9
9
  import { TheListItemComponent } from './plugins/list/components/list-item.component';
10
10
  import { TheBulletedListComponent } from './plugins/list/components/bulleted-list.component';
11
11
  import { TheNumberedListComponent } from './plugins/list/components/numbered-list.component';
12
- import { ThePlaceholderComponent } from './components/placeholder/placeholder.component';
13
12
  import { TheColorSelectComponent } from './components/color-select/color-select.component';
14
13
  import { TheColorToolbarItemComponent } from './plugins/color/toolbar-item.component';
15
14
  import { TheCodeComponent } from './plugins/code/code.component';
@@ -24,7 +23,12 @@ import { TheInsertMarkComponent } from './plugins/table/components/insert-mark/i
24
23
  import { TheToolbarGroupComponent } from './components/toolbar-group/toolbar-group.component';
25
24
  import { TheTableSelectComponent } from './components/table-select/table-select.component';
26
25
  import { TheTableToolbarItemComponent } from './plugins/table/toolbar-item.component';
26
+ import { TheConversionHintComponent } from './components/conversion-hint/conversion-hint.component';
27
27
  import { TheVerticalToolbarItemComponent } from './plugins/vertical-align/toolbar-item.component';
28
+ import { TheInlineToolbarComponent } from './components/inline-toolbar/inline-toolbar.component';
29
+ import { TheQuickToolbarComponent } from './plugins/quick-insert/components/quick-toolbar/quick-toolbar.component';
30
+ import { TheQuickInsertComponent } from './plugins/quick-insert/components/quick-insert.component';
31
+ import { ThePlaceholderComponent } from './plugins/placeholder/placeholder.component';
28
32
  import * as i0 from "@angular/core";
29
33
  import * as i1 from "./editor.component";
30
34
  import * as i2 from "./pipes";
@@ -32,58 +36,61 @@ import * as i3 from "./components/toolbar/toolbar.component";
32
36
  import * as i4 from "./components/toolbar-dropdown/toolbar-dropdown.component";
33
37
  import * as i5 from "./components/toolbar-group/toolbar-group.component";
34
38
  import * as i6 from "./components/toolbar-item/toolbar-item.component";
35
- import * as i7 from "./components/nav-split-line/nav-split-line.component";
36
- import * as i8 from "./components/text/text.component";
37
- import * as i9 from "./components/element/element.component";
38
- import * as i10 from "./components/placeholder/placeholder.component";
39
- import * as i11 from "./components/color-select/color-select.component";
40
- import * as i12 from "./plugins/color/toolbar-item.component";
41
- import * as i13 from "./components/contextmenu/contextmenu.component";
42
- import * as i14 from "./plugins/table/components/insert-mark/insert-mark.component";
43
- import * as i15 from "./components/table-select/table-select.component";
44
- import * as i16 from "./plugins/table/toolbar-item.component";
45
- import * as i17 from "./components/conversion-hint/conversion-hint.component";
46
- import * as i18 from "./plugins/vertical-align/toolbar-item.component";
47
- import * as i19 from "./plugins/image/image.component";
48
- import * as i20 from "./components/template/template.component";
49
- import * as i21 from "./plugins/hr/hr.component";
50
- import * as i22 from "./plugins/blockquote/blockquote.component";
51
- import * as i23 from "./plugins/todo-item/todo-item.component";
52
- import * as i24 from "./plugins/list/components/list-item.component";
53
- import * as i25 from "./plugins/list/components/bulleted-list.component";
54
- import * as i26 from "./plugins/list/components/numbered-list.component";
55
- import * as i27 from "./plugins/code/code.component";
56
- import * as i28 from "./plugins/link/link.component";
57
- import * as i29 from "./plugins/link/edit/link-edit.component";
58
- import * as i30 from "./plugins/link/hover/link-hover.component";
59
- import * as i31 from "./plugins/table/components/toolbar/table-toolbar.component";
60
- import * as i32 from "./plugins/table/components/table.component";
61
- import * as i33 from "./plugins/table/components/row/row.component";
62
- import * as i34 from "./plugins/table/components/td/td.component";
63
- import * as i35 from "@angular/common";
64
- import * as i36 from "slate-angular";
65
- import * as i37 from "@angular/forms";
66
- import * as i38 from "ngx-tethys/icon";
67
- import * as i39 from "ngx-tethys/avatar";
68
- import * as i40 from "ngx-tethys/nav";
69
- import * as i41 from "ngx-tethys/form";
70
- import * as i42 from "ngx-tethys/shared";
71
- import * as i43 from "ngx-tethys/list";
72
- import * as i44 from "ngx-tethys/tooltip";
73
- import * as i45 from "ngx-tethys/progress";
74
- import * as i46 from "ngx-tethys/autocomplete";
75
- import * as i47 from "ngx-tethys/action-menu";
76
- import * as i48 from "ngx-tethys/input";
77
- import * as i49 from "ngx-tethys/select";
78
- import * as i50 from "ngx-tethys/button";
79
- import * as i51 from "ngx-tethys/notify";
80
- import * as i52 from "ngx-tethys/alert";
81
- import * as i53 from "ng-codemirror";
82
- import * as i54 from "./components/column-resize/column-resize.module";
83
- export declare const COMPONENTS: (typeof TheColorSelectComponent | typeof TheContextMenuComponent | typeof TheToolbarGroupComponent | typeof TheTextComponent | typeof TheDefaultElementComponent | typeof TheColorToolbarItemComponent | typeof TheTableSelectComponent | typeof TheTableToolbarItemComponent | typeof TheVerticalToolbarItemComponent | typeof TheToolbarItemComponent | typeof NavSplitLineComponent | typeof TheToolbarDropdownComponent | typeof TheToolbarComponent | typeof ThePlaceholderComponent | typeof TheInsertMarkComponent)[];
84
- export declare const PLUGIN_COMPONENTS: (typeof TheTableToolbarComponent | typeof TheTableComponent | typeof TheImageComponent | typeof TheNumberedListComponent | typeof TheBulletedListComponent | typeof TheListItemComponent | typeof TheCodeComponent | typeof TheLinkHoverComponent | typeof TheLinkEditComponent | typeof TheLinkComponent | typeof TheTdComponent | typeof TheTemplateComponent)[];
39
+ import * as i7 from "./components/inline-toolbar/inline-toolbar.component";
40
+ import * as i8 from "./components/nav-split-line/nav-split-line.component";
41
+ import * as i9 from "./components/text/text.component";
42
+ import * as i10 from "./components/element/element.component";
43
+ import * as i11 from "./plugins/quick-insert/components/quick-insert.component";
44
+ import * as i12 from "./plugins/quick-insert/components/quick-toolbar/quick-toolbar.component";
45
+ import * as i13 from "./components/color-select/color-select.component";
46
+ import * as i14 from "./plugins/color/toolbar-item.component";
47
+ import * as i15 from "./components/contextmenu/contextmenu.component";
48
+ import * as i16 from "./plugins/table/components/insert-mark/insert-mark.component";
49
+ import * as i17 from "./components/table-select/table-select.component";
50
+ import * as i18 from "./plugins/table/toolbar-item.component";
51
+ import * as i19 from "./components/conversion-hint/conversion-hint.component";
52
+ import * as i20 from "./plugins/vertical-align/toolbar-item.component";
53
+ import * as i21 from "./plugins/image/image.component";
54
+ import * as i22 from "./components/template/template.component";
55
+ import * as i23 from "./plugins/hr/hr.component";
56
+ import * as i24 from "./plugins/blockquote/blockquote.component";
57
+ import * as i25 from "./plugins/todo-item/todo-item.component";
58
+ import * as i26 from "./plugins/list/components/list-item.component";
59
+ import * as i27 from "./plugins/list/components/bulleted-list.component";
60
+ import * as i28 from "./plugins/list/components/numbered-list.component";
61
+ import * as i29 from "./plugins/code/code.component";
62
+ import * as i30 from "./plugins/link/link.component";
63
+ import * as i31 from "./plugins/link/edit/link-edit.component";
64
+ import * as i32 from "./plugins/link/hover/link-hover.component";
65
+ import * as i33 from "./plugins/table/components/toolbar/table-toolbar.component";
66
+ import * as i34 from "./plugins/table/components/table.component";
67
+ import * as i35 from "./plugins/table/components/row/row.component";
68
+ import * as i36 from "./plugins/table/components/td/td.component";
69
+ import * as i37 from "./plugins/placeholder/placeholder.component";
70
+ import * as i38 from "@angular/common";
71
+ import * as i39 from "slate-angular";
72
+ import * as i40 from "@angular/forms";
73
+ import * as i41 from "ngx-tethys/icon";
74
+ import * as i42 from "ngx-tethys/avatar";
75
+ import * as i43 from "ngx-tethys/nav";
76
+ import * as i44 from "ngx-tethys/form";
77
+ import * as i45 from "ngx-tethys/shared";
78
+ import * as i46 from "ngx-tethys/list";
79
+ import * as i47 from "ngx-tethys/tooltip";
80
+ import * as i48 from "ngx-tethys/progress";
81
+ import * as i49 from "ngx-tethys/autocomplete";
82
+ import * as i50 from "ngx-tethys/action-menu";
83
+ import * as i51 from "ngx-tethys/input";
84
+ import * as i52 from "ngx-tethys/select";
85
+ import * as i53 from "ngx-tethys/button";
86
+ import * as i54 from "ngx-tethys/notify";
87
+ import * as i55 from "ngx-tethys/alert";
88
+ import * as i56 from "ng-codemirror";
89
+ import * as i57 from "./components/column-resize/column-resize.module";
90
+ export declare const COMPONENTS: (typeof TheColorSelectComponent | typeof TheContextMenuComponent | typeof TheToolbarGroupComponent | typeof TheTextComponent | typeof TheDefaultElementComponent | typeof TheConversionHintComponent | typeof TheColorToolbarItemComponent | typeof TheTableSelectComponent | typeof TheTableToolbarItemComponent | typeof TheVerticalToolbarItemComponent | typeof TheQuickToolbarComponent | typeof TheToolbarItemComponent | typeof NavSplitLineComponent | typeof TheToolbarDropdownComponent | typeof TheToolbarComponent | typeof TheQuickInsertComponent | typeof TheInsertMarkComponent | typeof TheInlineToolbarComponent)[];
91
+ export declare const PLUGIN_COMPONENTS: (typeof TheTableToolbarComponent | typeof TheTableComponent | typeof TheImageComponent | typeof TheNumberedListComponent | typeof TheBulletedListComponent | typeof TheListItemComponent | typeof TheCodeComponent | typeof TheLinkHoverComponent | typeof TheLinkEditComponent | typeof TheLinkComponent | typeof TheTdComponent | typeof TheTemplateComponent | typeof ThePlaceholderComponent)[];
85
92
  export declare class TheEditorModule {
86
93
  static ɵfac: i0.ɵɵFactoryDeclaration<TheEditorModule, never>;
87
- static ɵmod: i0.ɵɵNgModuleDeclaration<TheEditorModule, [typeof i1.TheEditorComponent, typeof i2.ElementStylePipe, typeof i2.ElementClassPipe, typeof i3.TheToolbarComponent, typeof i4.TheToolbarDropdownComponent, typeof i5.TheToolbarGroupComponent, typeof i6.TheToolbarItemComponent, typeof i7.NavSplitLineComponent, typeof i8.TheTextComponent, typeof i9.TheDefaultElementComponent, typeof i10.ThePlaceholderComponent, typeof i11.TheColorSelectComponent, typeof i12.TheColorToolbarItemComponent, typeof i13.TheContextMenuComponent, typeof i14.TheInsertMarkComponent, typeof i15.TheTableSelectComponent, typeof i16.TheTableToolbarItemComponent, typeof i17.TheConversionHintComponent, typeof i18.TheVerticalToolbarItemComponent, typeof i19.TheImageComponent, typeof i20.TheTemplateComponent, typeof i21.TheHrComponent, typeof i22.TheBlockquoteComponent, typeof i23.TheTodoItemComponent, typeof i24.TheListItemComponent, typeof i25.TheBulletedListComponent, typeof i26.TheNumberedListComponent, typeof i27.TheCodeComponent, typeof i28.TheLinkComponent, typeof i28.TheReadonlyLinkComponent, typeof i29.TheLinkEditComponent, typeof i30.TheLinkHoverComponent, typeof i31.TheTableToolbarComponent, typeof i32.TheTableComponent, typeof i33.TheTableRowComponent, typeof i34.TheTdComponent], [typeof i35.CommonModule, typeof i36.SlateModule, typeof i37.FormsModule, typeof i38.ThyIconModule, typeof i39.ThyAvatarModule, typeof i40.ThyNavModule, typeof i41.ThyFormModule, typeof i42.ThySharedModule, typeof i43.ThyListModule, typeof i44.ThyTooltipModule, typeof i45.ThyProgressModule, typeof i46.ThyAutocompleteModule, typeof i47.ThyActionMenuModule, typeof i48.ThyInputModule, typeof i49.ThySelectModule, typeof i50.ThyButtonModule, typeof i51.ThyNotifyModule, typeof i52.ThyAlertModule, typeof i53.CodemirrorModule, typeof i54.TheColumnSizeModule], [typeof i1.TheEditorComponent, typeof i3.TheToolbarComponent, typeof i4.TheToolbarDropdownComponent, typeof i6.TheToolbarItemComponent, typeof i9.TheDefaultElementComponent]>;
94
+ static ɵmod: i0.ɵɵNgModuleDeclaration<TheEditorModule, [typeof i1.TheEditorComponent, typeof i2.ElementStylePipe, typeof i2.ElementClassPipe, typeof i3.TheToolbarComponent, typeof i4.TheToolbarDropdownComponent, typeof i5.TheToolbarGroupComponent, typeof i6.TheToolbarItemComponent, typeof i7.TheInlineToolbarComponent, typeof i8.NavSplitLineComponent, typeof i9.TheTextComponent, typeof i10.TheDefaultElementComponent, typeof i11.TheQuickInsertComponent, typeof i12.TheQuickToolbarComponent, typeof i13.TheColorSelectComponent, typeof i14.TheColorToolbarItemComponent, typeof i15.TheContextMenuComponent, typeof i16.TheInsertMarkComponent, typeof i17.TheTableSelectComponent, typeof i18.TheTableToolbarItemComponent, typeof i19.TheConversionHintComponent, typeof i20.TheVerticalToolbarItemComponent, typeof i21.TheImageComponent, typeof i22.TheTemplateComponent, typeof i23.TheHrComponent, typeof i24.TheBlockquoteComponent, typeof i25.TheTodoItemComponent, typeof i26.TheListItemComponent, typeof i27.TheBulletedListComponent, typeof i28.TheNumberedListComponent, typeof i29.TheCodeComponent, typeof i30.TheLinkComponent, typeof i30.TheReadonlyLinkComponent, typeof i31.TheLinkEditComponent, typeof i32.TheLinkHoverComponent, typeof i33.TheTableToolbarComponent, typeof i34.TheTableComponent, typeof i35.TheTableRowComponent, typeof i36.TheTdComponent, typeof i37.ThePlaceholderComponent], [typeof i38.CommonModule, typeof i39.SlateModule, typeof i40.FormsModule, typeof i41.ThyIconModule, typeof i42.ThyAvatarModule, typeof i43.ThyNavModule, typeof i44.ThyFormModule, typeof i45.ThySharedModule, typeof i46.ThyListModule, typeof i47.ThyTooltipModule, typeof i48.ThyProgressModule, typeof i49.ThyAutocompleteModule, typeof i50.ThyActionMenuModule, typeof i51.ThyInputModule, typeof i52.ThySelectModule, typeof i53.ThyButtonModule, typeof i54.ThyNotifyModule, typeof i55.ThyAlertModule, typeof i56.CodemirrorModule, typeof i57.TheColumnSizeModule], [typeof i1.TheEditorComponent, typeof i3.TheToolbarComponent, typeof i4.TheToolbarDropdownComponent, typeof i6.TheToolbarItemComponent, typeof i10.TheDefaultElementComponent]>;
88
95
  static ɵinj: i0.ɵɵInjectorDeclaration<TheEditorModule>;
89
96
  }
@@ -51,6 +51,7 @@ export class TheColorSelectComponent {
51
51
  }
52
52
  }
53
53
  _selectColor(event, color) {
54
+ event.preventDefault();
54
55
  event.stopPropagation();
55
56
  if (this.option.specialColor && color === this.option.specialColor) {
56
57
  color = '';
@@ -81,7 +82,7 @@ export class TheColorSelectComponent {
81
82
  }
82
83
  }
83
84
  TheColorSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: TheColorSelectComponent, deps: [{ token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
84
- TheColorSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: TheColorSelectComponent, selector: "the-color-select", inputs: { selectedColor: "selectedColor", selectAction: "selectAction", showCustom: "showCustom", colors: "colors", option: "option" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)", "mousedown": "handleMouseDown($event)", "keydown": "handleKeydown($event)" } }, ngImport: i0, template: "<div class=\"color-container\">\n <div class=\"colors\">\n <div *ngFor=\"let row of selectColors; let rowIndex = index\">\n <span\n class=\"color-item\"\n *ngFor=\"let _color of row.rowValue; let i = index\"\n [ngClass]=\"_color.classMaps\"\n (mousedown)=\"_selectColor($event, _color.value)\"\n >\n <span [ngStyle]=\"{ background: _color.value }\">\n <thy-icon\n thyIconName=\"check\"\n [ngStyle]=\"{ color: row.tickColor }\"\n ></thy-icon>\n </span>\n </span>\n </div>\n </div>\n <div\n *ngIf=\"option.showCustom\"\n class=\"select-color\"\n >\n <span\n class=\"color\"\n [ngStyle]=\"{ background: selectedColor }\"\n ></span>\n #\n <input\n thyInput\n maxlength=\"6\"\n (keydown.enter)=\"customInputColorEnter($event)\"\n onkeyup=\"value=value.replace(/[^0-9A-Fa-f]/g,'')\"\n class=\"value\"\n [(ngModel)]=\"customColor\"\n (ngModelChange)=\"colorChange(false)\"\n />\n </div>\n</div>\n", components: [{ type: i2.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.ThyInputDirective, selector: "[thyInput]", inputs: ["thySize", "thyAutocomplete"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
+ TheColorSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: TheColorSelectComponent, selector: "the-color-select", inputs: { selectedColor: "selectedColor", selectAction: "selectAction", showCustom: "showCustom", colors: "colors", option: "option" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)", "mousedown": "handleMouseDown($event)", "keydown": "handleKeydown($event)" } }, ngImport: i0, template: "<div class=\"color-container\">\n <div class=\"colors\">\n <div *ngFor=\"let row of selectColors; let rowIndex = index\">\n <span\n class=\"color-item\"\n *ngFor=\"let _color of row.rowValue; let i = index\"\n [ngClass]=\"_color.classMaps\"\n (mousedown)=\"_selectColor($event, _color.value)\"\n >\n <span [ngStyle]=\"{ background: _color.value }\">\n <thy-icon thyIconName=\"check\" [ngStyle]=\"{ color: row.tickColor }\"></thy-icon>\n </span>\n </span>\n </div>\n </div>\n <div *ngIf=\"option.showCustom\" class=\"select-color\">\n <span class=\"color\" [ngStyle]=\"{ background: selectedColor }\"></span>\n #\n <input\n thyInput\n maxlength=\"6\"\n (keydown.enter)=\"customInputColorEnter($event)\"\n onkeyup=\"value=value.replace(/[^0-9A-Fa-f]/g,'')\"\n class=\"value\"\n [(ngModel)]=\"customColor\"\n (ngModelChange)=\"colorChange(false)\"\n />\n </div>\n</div>\n", components: [{ type: i2.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.ThyInputDirective, selector: "[thyInput]", inputs: ["thySize", "thyAutocomplete"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: TheColorSelectComponent, decorators: [{
86
87
  type: Component,
87
88
  args: [{
@@ -109,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
109
110
  type: HostListener,
110
111
  args: ['keydown', ['$event']]
111
112
  }] } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Itc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL2NvbG9yLXNlbGVjdC9jb2xvci1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY29sb3Itc2VsZWN0L2NvbG9yLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFTaEcsTUFBTSxPQUFPLHVCQUF1QjtJQXdCaEMsWUFBb0IsVUFBa0Q7UUFBbEQsZUFBVSxHQUFWLFVBQVUsQ0FBd0M7UUFuQjdELGVBQVUsR0FBRyxJQUFJLENBQUM7UUFVM0IsaUJBQVksR0FBOEUsRUFBRSxDQUFDO0lBU3BCLENBQUM7SUFOMUUsdUJBQXVCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQXFCLENBQUMsRUFBRTtZQUNuRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUlELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRDtRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBR0QsZUFBZSxDQUFDLEtBQWlCO1FBQzdCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBR0QsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLEtBQUssQ0FB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Q0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsS0FBb0I7UUFDdEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7b0hBL0ZRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLCtWQ1RwQywydkNBc0NBOzJGRDdCYSx1QkFBdUI7a0JBTG5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEO29HQUVZLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBU04sdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlCL0MsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNckMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBDb2xvclR5cGUsIENvbG9yU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbG9yLXNlbGVjdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLWNvbG9yLXNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICdjb2xvci1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRoZUNvbG9yU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBzZWxlY3RlZENvbG9yOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBzZWxlY3RBY3Rpb246IChjb2xvcjogQ29sb3JUeXBlKSA9PiB2b2lkO1xuXG4gICAgQElucHV0KCkgc2hvd0N1c3RvbSA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBjb2xvcnM6IHN0cmluZ1tdO1xuXG4gICAgQElucHV0KCkgb3B0aW9uOiBDb2xvclNlbGVjdE9wdGlvbjtcblxuICAgIGNvbG9yOiBzdHJpbmc7XG5cbiAgICBjdXN0b21Db2xvcjogc3RyaW5nO1xuXG4gICAgc2VsZWN0Q29sb3JzOiB7IHJvd1ZhbHVlOiB7IHZhbHVlOiBzdHJpbmc7IGNsYXNzTWFwczogb2JqZWN0IH1bXTsgdGlja0NvbG9yOiBzdHJpbmcgfVtdID0gW107XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDogbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVEb2N1bWVudE1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb2xvci1jb250YWluZXInKS5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxUaGVDb2xvclNlbGVjdENvbXBvbmVudD4pIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2xvcikge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvciA9IHRoaXMuc2VsZWN0ZWRDb2xvci5zbGljZSgxKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJ1aWxkQ29sb3JzKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBidWlsZENvbG9ycygpIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IHBhcnNlSW50KCh0aGlzLmNvbG9ycy5sZW5ndGggLyB0aGlzLm9wdGlvbi5wZXJSb3dDb2xvck51bWJlcnMpLnRvRml4ZWQoMCksIDEwKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29sb3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIHJvd1ZhbHVlOiBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY29sb3JzLnNsaWNlKGkgKiB0aGlzLm9wdGlvbi5wZXJSb3dDb2xvck51bWJlcnMsIChpICsgMSkgKiB0aGlzLm9wdGlvbi5wZXJSb3dDb2xvck51bWJlcnMpLm1hcChjb2xvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc01hcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGNvbG9yID09PSB0aGlzLnNlbGVjdGVkQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlOiBjb2xvciA9PT0gJyNGRkZGRkYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXItMCc6IGkgPT09IHRoaXMub3B0aW9uLnBlclJvd0NvbG9yTnVtYmVycyAtIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYi0wJzogaSA9PT0gdGhpcy5zZWxlY3RDb2xvcnMubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpYWwtY29sb3InOiBjb2xvciA9PT0gdGhpcy5vcHRpb24uc3BlY2lhbENvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHRpY2tDb2xvcjogdGhpcy5vcHRpb24ucm93T3B0aW9ucyAmJiB0aGlzLm9wdGlvbi5yb3dPcHRpb25zW2kgKyAxXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfc2VsZWN0Q29sb3IoZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbG9yOiBzdHJpbmcpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbi5zcGVjaWFsQ29sb3IgJiYgY29sb3IgPT09IHRoaXMub3B0aW9uLnNwZWNpYWxDb2xvcikge1xuICAgICAgICAgICAgY29sb3IgPSAnJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSBjb2xvcjtcbiAgICAgICAgdGhpcy5zZWxlY3RBY3Rpb24odGhpcy5zZWxlY3RlZENvbG9yKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgY29sb3JDaGFuZ2UoaXNFbnRlcjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmN1c3RvbUNvbG9yID0gdGhpcy5jdXN0b21Db2xvci50b0xvY2FsZVVwcGVyQ2FzZSgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSAnIycgKyB0aGlzLmN1c3RvbUNvbG9yO1xuICAgICAgICBpZiAodGhpcy5jdXN0b21Db2xvci5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvciA9ICcjJyArIHRoaXMuY3VzdG9tQ29sb3IucmVwbGFjZSgvKC4pL2csICckMSQxJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2xvci5sZW5ndGggPT09IDcgJiYgdGhpcy5zZWxlY3RlZENvbG9yICE9PSB0aGlzLm9wdGlvbi5zcGVjaWFsQ29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29sb3JzID0gW107XG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ29sb3JzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRW50ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uKHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjdXN0b21JbnB1dENvbG9yRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uKHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2xvci1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sb3JzXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvdyBvZiBzZWxlY3RDb2xvcnM7IGxldCByb3dJbmRleCA9IGluZGV4XCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3ItaXRlbVwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IF9jb2xvciBvZiByb3cucm93VmFsdWU7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIl9jb2xvci5jbGFzc01hcHNcIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiX3NlbGVjdENvbG9yKCRldmVudCwgX2NvbG9yLnZhbHVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBfY29sb3IudmFsdWUgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8dGh5LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoeUljb25OYW1lPVwiY2hlY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBjb2xvcjogcm93LnRpY2tDb2xvciB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwib3B0aW9uLnNob3dDdXN0b21cIlxuICAgICAgICBjbGFzcz1cInNlbGVjdC1jb2xvclwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJjb2xvclwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IHNlbGVjdGVkQ29sb3IgfVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgICNcbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0aHlJbnB1dFxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNlwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJjdXN0b21JbnB1dENvbG9yRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBvbmtleXVwPVwidmFsdWU9dmFsdWUucmVwbGFjZSgvW14wLTlBLUZhLWZdL2csJycpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXN0b21Db2xvclwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjb2xvckNoYW5nZShmYWxzZSlcIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Itc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL2NvbG9yLXNlbGVjdC9jb2xvci1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvY29sb3Itc2VsZWN0L2NvbG9yLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFTaEcsTUFBTSxPQUFPLHVCQUF1QjtJQXdCaEMsWUFBb0IsVUFBa0Q7UUFBbEQsZUFBVSxHQUFWLFVBQVUsQ0FBd0M7UUFuQjdELGVBQVUsR0FBRyxJQUFJLENBQUM7UUFVM0IsaUJBQVksR0FBOEUsRUFBRSxDQUFDO0lBU3BCLENBQUM7SUFOMUUsdUJBQXVCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQXFCLENBQUMsRUFBRTtZQUNuRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUlELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsRDtRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBR0QsZUFBZSxDQUFDLEtBQWlCO1FBQzdCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBR0QsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLEtBQUssQ0FB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Q0FBQyxhQUFhLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUNELHFCQUFxQixDQUFDLEtBQW9CO1FBQ3RDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLENBQUM7O29IQWhHUSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwrVkNUcEMsdW5DQTZCQTsyRkRwQmEsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSw2QkFBNkI7b0JBQzFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDtvR0FFWSxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQVNOLHVCQUF1QjtzQkFEdEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFpQi9DLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXJDLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgQ29sb3JUeXBlLCBDb2xvclNlbGVjdE9wdGlvbiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9jb2xvci1zZWxlY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1jb2xvci1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnY29sb3Itc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaGVDb2xvclNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgc2VsZWN0ZWRDb2xvcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc2VsZWN0QWN0aW9uOiAoY29sb3I6IENvbG9yVHlwZSkgPT4gdm9pZDtcblxuICAgIEBJbnB1dCgpIHNob3dDdXN0b20gPSB0cnVlO1xuXG4gICAgQElucHV0KCkgY29sb3JzOiBzdHJpbmdbXTtcblxuICAgIEBJbnB1dCgpIG9wdGlvbjogQ29sb3JTZWxlY3RPcHRpb247XG5cbiAgICBjb2xvcjogc3RyaW5nO1xuXG4gICAgY3VzdG9tQ29sb3I6IHN0cmluZztcblxuICAgIHNlbGVjdENvbG9yczogeyByb3dWYWx1ZTogeyB2YWx1ZTogc3RyaW5nOyBjbGFzc01hcHM6IG9iamVjdCB9W107IHRpY2tDb2xvcjogc3RyaW5nIH1bXSA9IFtdO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6IG1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlRG9jdW1lbnRNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29sb3ItY29udGFpbmVyJykuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGhlQ29sb3JTZWxlY3RDb21wb25lbnQ+KSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3IgPSB0aGlzLnNlbGVjdGVkQ29sb3Iuc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idWlsZENvbG9ycygpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgYnVpbGRDb2xvcnMoKSB7XG4gICAgICAgIGNvbnN0IHJvd3MgPSBwYXJzZUludCgodGhpcy5jb2xvcnMubGVuZ3RoIC8gdGhpcy5vcHRpb24ucGVyUm93Q29sb3JOdW1iZXJzKS50b0ZpeGVkKDApLCAxMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdENvbG9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICByb3dWYWx1ZTogW1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNvbG9ycy5zbGljZShpICogdGhpcy5vcHRpb24ucGVyUm93Q29sb3JOdW1iZXJzLCAoaSArIDEpICogdGhpcy5vcHRpb24ucGVyUm93Q29sb3JOdW1iZXJzKS5tYXAoY29sb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NNYXBzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBjb2xvciA9PT0gdGhpcy5zZWxlY3RlZENvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZTogY29sb3IgPT09ICcjRkZGRkZGJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21yLTAnOiBpID09PSB0aGlzLm9wdGlvbi5wZXJSb3dDb2xvck51bWJlcnMgLSAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWItMCc6IGkgPT09IHRoaXMuc2VsZWN0Q29sb3JzLmxlbmd0aCAtIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjaWFsLWNvbG9yJzogY29sb3IgPT09IHRoaXMub3B0aW9uLnNwZWNpYWxDb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB0aWNrQ29sb3I6IHRoaXMub3B0aW9uLnJvd09wdGlvbnMgJiYgdGhpcy5vcHRpb24ucm93T3B0aW9uc1tpICsgMV1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3NlbGVjdENvbG9yKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2xvcjogc3RyaW5nKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb24uc3BlY2lhbENvbG9yICYmIGNvbG9yID09PSB0aGlzLm9wdGlvbi5zcGVjaWFsQ29sb3IpIHtcbiAgICAgICAgICAgIGNvbG9yID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gY29sb3I7XG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aW9uKHRoaXMuc2VsZWN0ZWRDb2xvcik7XG4gICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIGNvbG9yQ2hhbmdlKGlzRW50ZXI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jdXN0b21Db2xvciA9IHRoaXMuY3VzdG9tQ29sb3IudG9Mb2NhbGVVcHBlckNhc2UoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gJyMnICsgdGhpcy5jdXN0b21Db2xvcjtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tQ29sb3IubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sb3IgPSAnIycgKyB0aGlzLmN1c3RvbUNvbG9yLnJlcGxhY2UoLyguKS9nLCAnJDEkMScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sb3IubGVuZ3RoID09PSA3ICYmIHRoaXMuc2VsZWN0ZWRDb2xvciAhPT0gdGhpcy5vcHRpb24uc3BlY2lhbENvbG9yKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdENvbG9ycyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5idWlsZENvbG9ycygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VudGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbih0aGlzLnNlbGVjdGVkQ29sb3IpO1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY3VzdG9tSW5wdXRDb2xvckVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlbGVjdEFjdGlvbih0aGlzLnNlbGVjdGVkQ29sb3IpO1xuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sb3ItY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbG9yc1wiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2Ygc2VsZWN0Q29sb3JzOyBsZXQgcm93SW5kZXggPSBpbmRleFwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbG9yLWl0ZW1cIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBfY29sb3Igb2Ygcm93LnJvd1ZhbHVlOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJfY29sb3IuY2xhc3NNYXBzXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIl9zZWxlY3RDb2xvcigkZXZlbnQsIF9jb2xvci52YWx1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogX2NvbG9yLnZhbHVlIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiY2hlY2tcIiBbbmdTdHlsZV09XCJ7IGNvbG9yOiByb3cudGlja0NvbG9yIH1cIj48L3RoeS1pY29uPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIm9wdGlvbi5zaG93Q3VzdG9tXCIgY2xhc3M9XCJzZWxlY3QtY29sb3JcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xvclwiIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogc2VsZWN0ZWRDb2xvciB9XCI+PC9zcGFuPlxuICAgICAgICAjXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdGh5SW5wdXRcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjZcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiY3VzdG9tSW5wdXRDb2xvckVudGVyKCRldmVudClcIlxuICAgICAgICAgICAgb25rZXl1cD1cInZhbHVlPXZhbHVlLnJlcGxhY2UoL1teMC05QS1GYS1mXS9nLCcnKVwiXG4gICAgICAgICAgICBjbGFzcz1cInZhbHVlXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VzdG9tQ29sb3JcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY29sb3JDaGFuZ2UoZmFsc2UpXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -98,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
98
98
  type: Inject,
99
99
  args: [TheTableToken]
100
100
  }] }]; } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlc2l6ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy9jb2x1bW4tcmVzaXplL2NvbHVtbi1yZXNpemUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFGLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7QUFNaEUsTUFBTSxPQUFPLHdCQUF3QjtJQUlqQyxZQUNXLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxHQUFzQixFQUN0QixNQUFjLEVBQ2QsZUFBeUMsRUFDekMsY0FBMEMsRUFFMUMsaUJBQW9DO1FBUHBDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBQ3pDLG1CQUFjLEdBQWQsY0FBYyxDQUE0QjtRQUUxQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBWDVCLGNBQVMsR0FBRyxJQUFJLGFBQWEsRUFBUSxDQUFDO0lBWXRELENBQUM7SUFFSixlQUFlO1FBQ1gsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7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QUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7cUhBN0ZRLHdCQUF3QixxTkFXckIsYUFBYTt5R0FYaEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBSHBDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtpQkFDbkM7OzBCQVlRLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmLCBDaGFuZ2VEZXRlY3RvclJlZiwgTmdab25lLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwsIGZpbHRlciwgbWFwVG8sIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEhvdmVyZWRDZWxsSW5mbywgVGFibGVDZWxsRXZlbnREaXNwYXRjaGVyIH0gZnJvbSAnLi9ldmVudC1kaXNwYXRjaGVyJztcbmltcG9ydCB7IFJFU0laRV9PVkVSTEFZX1NFTEVDVE9SIH0gZnJvbSAnLi9zZWxlY3RvcnMnO1xuaW1wb3J0IHsgQ29sdW1uUmVzaXplTm90aWZpZXJTb3VyY2UgfSBmcm9tICcuL2NvbHVtbi1yZXNpemUtbm90aWZpZXInO1xuaW1wb3J0IHsgU0xBX1RBQkxFX0NFTExfU0VMRUNUT1IgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvc2VsZWN0b3InO1xuaW1wb3J0IHsgVGhlVGFibGVUb2tlbiB9IGZyb20gJy4uLy4uL3BsdWdpbnMvdGFibGUvdGFibGUudHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBUaGVUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BsdWdpbnMvdGFibGUvY29tcG9uZW50cy90YWJsZS5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Rpdlt0aGVDb2x1bW5SZXNpemVdJ1xufSlcbmV4cG9ydCBjbGFzcyBUaGVDb2x1bW5SZXNpemVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95ZWQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigpO1xuICAgIHByb3RlY3RlZCBpc1hBeGlzOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHVibGljIGV2ZW50RGlzcGF0Y2hlcjogVGFibGVDZWxsRXZlbnREaXNwYXRjaGVyLFxuICAgICAgICBwdWJsaWMgcmVzaXplTm90aWZpZXI6IENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlLFxuICAgICAgICBASW5qZWN0KFRoZVRhYmxlVG9rZW4pXG4gICAgICAgIHB1YmxpYyB0aGVUYWJsZUNvbXBvbmVudDogVGhlVGFibGVDb21wb25lbnRcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuX2xpc3RlbkZvckNlbGxFZGdlSG92ZXJFdmVudHMoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuU3RhcnREcmFnKCk7XG4gICAgICAgIHRoaXMuX2xpc3RlbkVuZERyYWcoKTtcbiAgICB9XG5cbiAgICBfbGlzdGVuRm9yQ2VsbEVkZ2VIb3ZlckV2ZW50cygpIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ITtcbiAgICAgICAgICAgIGxldCBwcmV2aW91czogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9ID0geyB4OiAwLCB5OiAwIH07XG4gICAgICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWxlbWVudCwgJ21vdXNlbW92ZScpIC8vIG1vdXNlb3ZlciB0byBtb3VzZW1vdmUg5aKe5Yqg54G15pWP5oCnXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRocm90dGxlVGltZSgzMDApLCAvLyDpmLLmipZcbiAgICAgICAgICAgICAgICAgICAgbWFwKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy50aGVUYWJsZUNvbXBvbmVudC5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoU0xBX1RBQkxFX0NFTExfU0VMRUNUT1IpIGFzIEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhvdmVyZWRJbmZvOiBIb3ZlcmVkQ2VsbEluZm87XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcG9zaXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91cy54ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWN0Q2VsbCA9IGNlbGwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IHByZXZpb3VzLnggLSBldmVudC5jbGllbnRYO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWx0YVkgPSBwcmV2aW91cy55IC0gZXZlbnQuY2xpZW50WTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGRlbHRhWCkgPiBNYXRoLmFicyhkZWx0YVkpICYmIGRlbHRhWCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VudGVyQ2VsbFggPSByZWN0Q2VsbC54ICsgcmVjdENlbGwud2lkdGggLyAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBldmVudC54ID4gY2VudGVyQ2VsbFggPyAncmlnaHQnIDogJ2xlZnQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1hBeGlzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoZGVsdGFZKSA+IE1hdGguYWJzKGRlbHRhWCkgJiYgZGVsdGFZICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzWEF4aXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRlckNlbGxZID0gcmVjdENlbGwueSArIHJlY3RDZWxsLmhlaWdodCAvIDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGV2ZW50LnkgPiBjZW50ZXJDZWxsWSA/ICd0b3AnIDogJ2JvdHRvbSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZEluZm8gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbiA/IGhvdmVyZWRJbmZvIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMuZXZlbnREaXNwYXRjaGVyLnRhYmxlQ2VsbEhvdmVyZWQpO1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGVsZW1lbnQsICdtb3VzZWxlYXZlJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhIWV2ZW50LnJlbGF0ZWRUYXJnZXQgJiYgIShldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEVsZW1lbnQpLm1hdGNoZXMoUkVTSVpFX09WRVJMQVlfU0VMRUNUT1IpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgbWFwVG8obnVsbCksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLmV2ZW50RGlzcGF0Y2hlci50YWJsZUNlbGxIb3ZlcmVkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX2xpc3RlblN0YXJ0RHJhZygpIHtcbiAgICAgICAgdGhpcy5yZXNpemVOb3RpZmllci5yZXNpemVTdGFydGVkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNYQXhpcyA/IHRoaXMudGhlVGFibGVDb21wb25lbnQuaW5pdGlhbGl6ZUNvbHVtbnMoKSA6IHRoaXMudGhlVGFibGVDb21wb25lbnQuaW5pdGlhbGl6ZVJvd3MoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX2xpc3RlbkVuZERyYWcoKSB7XG4gICAgICAgIHRoaXMucmVzaXplTm90aWZpZXIucmVzaXplQ29tcGxldGVkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNYQXhpcyA/IHRoaXMudGhlVGFibGVDb21wb25lbnQudHJhbnNmb3JtQ29sdW1uc1dpZHRoKCkgOiB0aGlzLnRoZVRhYmxlQ29tcG9uZW50LnRyYW5zZm9ybVJvd0hlaWdodCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlc2l6ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy9jb2x1bW4tcmVzaXplL2NvbHVtbi1yZXNpemUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFGLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQXlCLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBS3ZGLE1BQU0sT0FBTyx3QkFBd0I7SUFJakMsWUFDVyxVQUFzQixFQUN0QixnQkFBa0MsRUFDbEMsR0FBc0IsRUFDdEIsTUFBYyxFQUNkLGVBQXlDLEVBQ3pDLGNBQTBDLEVBRTFDLGlCQUF3QztRQVB4QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUEwQjtRQUN6QyxtQkFBYyxHQUFkLGNBQWMsQ0FBNEI7UUFFMUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUF1QjtRQVhoQyxjQUFTLEdBQUcsSUFBSSxhQUFhLEVBQVEsQ0FBQztJQVl0RCxDQUFDO0lBRUosZUFBZTtRQUNYLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsNkJBQTZCO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYyxDQUFDO1lBQy9DLElBQUksUUFBUSxHQUE2QixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3hELFNBQVMsQ0FBYSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsK0JBQStCO2lCQUN0RSxJQUFJLENBQ0QsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7WUFDeEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFO29CQUNyQyxPQUFPLElBQUksQ0FBQztpQkFDZjtnQkFDRCxNQUFNLElBQUksR0FBSSxLQUFLLENBQUMsTUFBc0IsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQXlCLENBQUM7Z0JBQ3BHLElBQUksV0FBNEIsQ0FBQztnQkFDakMsSUFBSSxRQUFRLENBQUM7Z0JBQ2IsSUFBSSxJQUFJLEVBQUU7b0JBQ04sSUFBSSxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7d0JBQzlDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQzt3QkFDMUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO3dCQUMxQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFOzRCQUNyRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzRCQUNwRCxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDOzRCQUNwRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt5QkFDdkI7d0JBQ0QsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTs0QkFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7NEJBQ3JCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7NEJBQ3JELFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7eUJBQ3ZEO3dCQUNELFdBQVcsR0FBRzs0QkFDVixJQUFJOzRCQUNKLFFBQVE7eUJBQ1gsQ0FBQztxQkFDTDtvQkFDRCxRQUFRLEdBQUc7d0JBQ1AsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPO3dCQUNoQixDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU87cUJBQ25CLENBQUM7b0JBQ0YsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2lCQUN4QztnQkFDRCxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUM1QjtpQkFDQSxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3RELFNBQVMsQ0FBYSxPQUFPLEVBQUUsWUFBWSxDQUFDO2lCQUN2QyxJQUFJLENBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNYLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksQ0FBRSxLQUFLLENBQUMsYUFBeUIsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUN2RyxDQUFDLENBQUMsRUFDRixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQ1gsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDNUI7aUJBQ0EsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4RyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9FLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNoSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7O3FIQTdGUSx3QkFBd0IscU5BV3JCLGFBQWE7eUdBWGhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ25DOzswQkFZUSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgVmlld0NvbnRhaW5lclJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE5nWm9uZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsLCBmaWx0ZXIsIG1hcFRvLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIb3ZlcmVkQ2VsbEluZm8sIFRhYmxlQ2VsbEV2ZW50RGlzcGF0Y2hlciB9IGZyb20gJy4vZXZlbnQtZGlzcGF0Y2hlcic7XG5pbXBvcnQgeyBSRVNJWkVfT1ZFUkxBWV9TRUxFQ1RPUiB9IGZyb20gJy4vc2VsZWN0b3JzJztcbmltcG9ydCB7IENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlIH0gZnJvbSAnLi9jb2x1bW4tcmVzaXplLW5vdGlmaWVyJztcbmltcG9ydCB7IFNMQV9UQUJMRV9DRUxMX1NFTEVDVE9SIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3NlbGVjdG9yJztcbmltcG9ydCB7IFRoZVRhYmxlQ29tcG9uZW50QmFzZSwgVGhlVGFibGVUb2tlbiB9IGZyb20gJy4uLy4uL3BsdWdpbnMvdGFibGUvdGFibGUudHlwZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Rpdlt0aGVDb2x1bW5SZXNpemVdJ1xufSlcbmV4cG9ydCBjbGFzcyBUaGVDb2x1bW5SZXNpemVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95ZWQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigpO1xuICAgIHByb3RlY3RlZCBpc1hBeGlzOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHVibGljIGV2ZW50RGlzcGF0Y2hlcjogVGFibGVDZWxsRXZlbnREaXNwYXRjaGVyLFxuICAgICAgICBwdWJsaWMgcmVzaXplTm90aWZpZXI6IENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlLFxuICAgICAgICBASW5qZWN0KFRoZVRhYmxlVG9rZW4pXG4gICAgICAgIHB1YmxpYyB0aGVUYWJsZUNvbXBvbmVudDogVGhlVGFibGVDb21wb25lbnRCYXNlXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLl9saXN0ZW5Gb3JDZWxsRWRnZUhvdmVyRXZlbnRzKCk7XG4gICAgICAgIHRoaXMuX2xpc3RlblN0YXJ0RHJhZygpO1xuICAgICAgICB0aGlzLl9saXN0ZW5FbmREcmFnKCk7XG4gICAgfVxuXG4gICAgX2xpc3RlbkZvckNlbGxFZGdlSG92ZXJFdmVudHMoKSB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCE7XG4gICAgICAgICAgICBsZXQgcHJldmlvdXM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9IHsgeDogMCwgeTogMCB9O1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGVsZW1lbnQsICdtb3VzZW1vdmUnKSAvLyBtb3VzZW92ZXIgdG8gbW91c2Vtb3ZlIOWinuWKoOeBteaVj+aAp1xuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0aHJvdHRsZVRpbWUoMzAwKSwgLy8g6Ziy5oqWXG4gICAgICAgICAgICAgICAgICAgIG1hcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGhlVGFibGVDb21wb25lbnQuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGwgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KFNMQV9UQUJMRV9DRUxMX1NFTEVDVE9SKSBhcyBIVE1MVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBob3ZlcmVkSW5mbzogSG92ZXJlZENlbGxJbmZvO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXMueCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjdENlbGwgPSBjZWxsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWx0YVggPSBwcmV2aW91cy54IC0gZXZlbnQuY2xpZW50WDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsdGFZID0gcHJldmlvdXMueSAtIGV2ZW50LmNsaWVudFk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhkZWx0YVgpID4gTWF0aC5hYnMoZGVsdGFZKSAmJiBkZWx0YVggIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbnRlckNlbGxYID0gcmVjdENlbGwueCArIHJlY3RDZWxsLndpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gZXZlbnQueCA+IGNlbnRlckNlbGxYID8gJ3JpZ2h0JyA6ICdsZWZ0JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNYQXhpcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKGRlbHRhWSkgPiBNYXRoLmFicyhkZWx0YVgpICYmIGRlbHRhWSAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1hBeGlzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjZW50ZXJDZWxsWSA9IHJlY3RDZWxsLnkgKyByZWN0Q2VsbC5oZWlnaHQgLyAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBldmVudC55ID4gY2VudGVyQ2VsbFkgPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWRJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gPyBob3ZlcmVkSW5mbyA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh0aGlzLmV2ZW50RGlzcGF0Y2hlci50YWJsZUNlbGxIb3ZlcmVkKTtcbiAgICAgICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50PihlbGVtZW50LCAnbW91c2VsZWF2ZScpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFldmVudC5yZWxhdGVkVGFyZ2V0ICYmICEoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBFbGVtZW50KS5tYXRjaGVzKFJFU0laRV9PVkVSTEFZX1NFTEVDVE9SKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIG1hcFRvKG51bGwpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy5ldmVudERpc3BhdGNoZXIudGFibGVDZWxsSG92ZXJlZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9saXN0ZW5TdGFydERyYWcoKSB7XG4gICAgICAgIHRoaXMucmVzaXplTm90aWZpZXIucmVzaXplU3RhcnRlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzWEF4aXMgPyB0aGlzLnRoZVRhYmxlQ29tcG9uZW50LmluaXRpYWxpemVDb2x1bW5zKCkgOiB0aGlzLnRoZVRhYmxlQ29tcG9uZW50LmluaXRpYWxpemVSb3dzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9saXN0ZW5FbmREcmFnKCkge1xuICAgICAgICB0aGlzLnJlc2l6ZU5vdGlmaWVyLnJlc2l6ZUNvbXBsZXRlZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzWEF4aXMgPyB0aGlzLnRoZVRhYmxlQ29tcG9uZW50LnRyYW5zZm9ybUNvbHVtbnNXaWR0aCgpIDogdGhpcy50aGVUYWJsZUNvbXBvbmVudC50cmFuc2Zvcm1Sb3dIZWlnaHQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iXX0=