@skyux/text-editor 7.0.0-beta.9 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +601 -282
- package/esm2020/lib/modules/rich-text-display/rich-text-display.component.mjs +25 -17
- package/esm2020/lib/modules/rich-text-display/rich-text-display.module.mjs +5 -5
- package/esm2020/lib/modules/shared/sky-text-editor-resources.module.mjs +5 -5
- package/esm2020/lib/modules/text-editor/menubar/text-editor-menubar.component.mjs +93 -87
- package/esm2020/lib/modules/text-editor/services/text-editor-adapter.service.mjs +263 -316
- package/esm2020/lib/modules/text-editor/services/text-editor-selection.service.mjs +16 -22
- package/esm2020/lib/modules/text-editor/services/text-editor.service.mjs +31 -31
- package/esm2020/lib/modules/text-editor/services/text-sanitization.service.mjs +11 -6
- package/esm2020/lib/modules/text-editor/text-editor.component.mjs +226 -173
- package/esm2020/lib/modules/text-editor/text-editor.module.mjs +5 -5
- package/esm2020/lib/modules/text-editor/toolbar/text-editor-toolbar.component.mjs +87 -62
- package/esm2020/lib/modules/text-editor/types/editor-command.mjs +1 -1
- package/esm2020/lib/modules/text-editor/types/editor-setting.mjs +1 -1
- package/esm2020/lib/modules/text-editor/url-modal/text-editor-url-modal-context.mjs +1 -1
- package/esm2020/lib/modules/text-editor/url-modal/text-editor-url-modal.component.mjs +36 -35
- package/fesm2015/skyux-text-editor.mjs +786 -735
- package/fesm2015/skyux-text-editor.mjs.map +1 -1
- package/fesm2020/skyux-text-editor.mjs +788 -744
- package/fesm2020/skyux-text-editor.mjs.map +1 -1
- package/lib/modules/rich-text-display/rich-text-display.component.d.ts +2 -4
- package/lib/modules/text-editor/menubar/text-editor-menubar.component.d.ts +6 -13
- package/lib/modules/text-editor/services/text-editor-adapter.service.d.ts +17 -34
- package/lib/modules/text-editor/services/text-editor-selection.service.d.ts +3 -3
- package/lib/modules/text-editor/services/text-editor.service.d.ts +8 -12
- package/lib/modules/text-editor/services/text-sanitization.service.d.ts +1 -1
- package/lib/modules/text-editor/text-editor.component.d.ts +23 -33
- package/lib/modules/text-editor/toolbar/text-editor-toolbar.component.d.ts +7 -13
- package/lib/modules/text-editor/types/editor-command.d.ts +1 -1
- package/lib/modules/text-editor/types/editor-setting.d.ts +4 -4
- package/lib/modules/text-editor/url-modal/text-editor-url-modal-context.d.ts +1 -1
- package/lib/modules/text-editor/url-modal/text-editor-url-modal.component.d.ts +2 -7
- package/package.json +18 -17
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
var _SkyTextEditorMenubarComponent_instances, _SkyTextEditorMenubarComponent__disabled, _SkyTextEditorMenubarComponent_ngUnsubscribe, _SkyTextEditorMenubarComponent_adapterService, _SkyTextEditorMenubarComponent_changeDetector, _SkyTextEditorMenubarComponent_resources, _SkyTextEditorMenubarComponent_closeDropdowns, _SkyTextEditorMenubarComponent_clearFormat;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
3
4
|
import { SkyDropdownMessageType } from '@skyux/popovers';
|
|
4
|
-
import
|
|
5
|
+
import he from 'he';
|
|
6
|
+
import { Subject } from 'rxjs';
|
|
5
7
|
import { take, takeUntil } from 'rxjs/operators';
|
|
6
8
|
import { SkyFormsUtility } from '../../shared/forms-utility';
|
|
7
|
-
import { SkyTextEditorAdapterService } from '../services/text-editor-adapter.service';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "../services/text-editor-adapter.service";
|
|
10
11
|
import * as i2 from "@skyux/i18n";
|
|
@@ -12,175 +13,180 @@ import * as i3 from "@angular/common";
|
|
|
12
13
|
import * as i4 from "@skyux/popovers";
|
|
13
14
|
import * as i5 from "@skyux/theme";
|
|
14
15
|
import * as i6 from "@skyux/layout";
|
|
16
|
+
const FORMAT_MENU_ACTION = 'skyux_text_editor_format_menu_action_';
|
|
17
|
+
const EDIT_MENU_ACTION = 'skyux_text_editor_edit_menu_action_';
|
|
15
18
|
/**
|
|
16
19
|
* @internal
|
|
17
20
|
*/
|
|
18
21
|
export class SkyTextEditorMenubarComponent {
|
|
19
22
|
constructor(adapterService, changeDetector, resources) {
|
|
20
|
-
this
|
|
21
|
-
this.changeDetector = changeDetector;
|
|
22
|
-
this.resources = resources;
|
|
23
|
+
_SkyTextEditorMenubarComponent_instances.add(this);
|
|
23
24
|
this.editorFocusStream = new Subject();
|
|
24
25
|
this.menus = [];
|
|
25
26
|
this.mergeFields = [];
|
|
26
|
-
this
|
|
27
|
+
_SkyTextEditorMenubarComponent__disabled.set(this, false);
|
|
27
28
|
this.editDropdownStream = new Subject();
|
|
28
29
|
this.formatDropdownStream = new Subject();
|
|
29
30
|
this.mergeFieldDropdownStream = new Subject();
|
|
30
|
-
this
|
|
31
|
+
_SkyTextEditorMenubarComponent_ngUnsubscribe.set(this, new Subject());
|
|
32
|
+
_SkyTextEditorMenubarComponent_adapterService.set(this, void 0);
|
|
33
|
+
_SkyTextEditorMenubarComponent_changeDetector.set(this, void 0);
|
|
34
|
+
_SkyTextEditorMenubarComponent_resources.set(this, void 0);
|
|
35
|
+
__classPrivateFieldSet(this, _SkyTextEditorMenubarComponent_adapterService, adapterService, "f");
|
|
36
|
+
__classPrivateFieldSet(this, _SkyTextEditorMenubarComponent_changeDetector, changeDetector, "f");
|
|
37
|
+
__classPrivateFieldSet(this, _SkyTextEditorMenubarComponent_resources, resources, "f");
|
|
31
38
|
}
|
|
32
39
|
set disabled(value) {
|
|
33
40
|
const coercedValue = SkyFormsUtility.coerceBooleanProperty(value);
|
|
34
41
|
if (coercedValue !== this.disabled) {
|
|
35
|
-
this
|
|
36
|
-
this.
|
|
42
|
+
__classPrivateFieldSet(this, _SkyTextEditorMenubarComponent__disabled, coercedValue, "f");
|
|
43
|
+
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_changeDetector, "f").markForCheck();
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
46
|
get disabled() {
|
|
40
|
-
return this
|
|
47
|
+
return __classPrivateFieldGet(this, _SkyTextEditorMenubarComponent__disabled, "f");
|
|
41
48
|
}
|
|
42
49
|
ngOnInit() {
|
|
43
|
-
this.editorFocusStream
|
|
44
|
-
|
|
50
|
+
this.editorFocusStream
|
|
51
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_ngUnsubscribe, "f")))
|
|
52
|
+
.subscribe(() => {
|
|
53
|
+
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_instances, "m", _SkyTextEditorMenubarComponent_closeDropdowns).call(this);
|
|
45
54
|
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
.pipe(take(1))
|
|
55
|
+
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_resources, "f")
|
|
56
|
+
.getStrings({
|
|
57
|
+
bold: FORMAT_MENU_ACTION + 'bold_label',
|
|
58
|
+
boldShort: FORMAT_MENU_ACTION + 'bold_key_shortcut',
|
|
59
|
+
italic: FORMAT_MENU_ACTION + 'italic_label',
|
|
60
|
+
italicShort: FORMAT_MENU_ACTION + 'italic_key_shortcut',
|
|
61
|
+
underline: FORMAT_MENU_ACTION + 'underline_label',
|
|
62
|
+
underlineShort: FORMAT_MENU_ACTION + 'underline_key_shortcut',
|
|
63
|
+
strikethrough: FORMAT_MENU_ACTION + 'strikethrough_label',
|
|
64
|
+
clearFormatting: FORMAT_MENU_ACTION + 'clear_formatting_label',
|
|
65
|
+
undo: EDIT_MENU_ACTION + 'undo_label',
|
|
66
|
+
undoShort: EDIT_MENU_ACTION + 'undo_key_shortcut',
|
|
67
|
+
redo: EDIT_MENU_ACTION + 'redo_label',
|
|
68
|
+
redoShort: EDIT_MENU_ACTION + 'redo_key_shortcut',
|
|
69
|
+
cut: EDIT_MENU_ACTION + 'cut_label',
|
|
70
|
+
cutShort: EDIT_MENU_ACTION + 'cut_key_shortcut',
|
|
71
|
+
copy: EDIT_MENU_ACTION + 'copy_label',
|
|
72
|
+
copyShort: EDIT_MENU_ACTION + 'copy_key_shortcut',
|
|
73
|
+
paste: EDIT_MENU_ACTION + 'paste_label',
|
|
74
|
+
pasteShort: EDIT_MENU_ACTION + 'paste_key_shortcut',
|
|
75
|
+
selectAll: EDIT_MENU_ACTION + 'select_all_label',
|
|
76
|
+
selectAllShort: EDIT_MENU_ACTION + 'select_all_key_shortcut',
|
|
77
|
+
})
|
|
78
|
+
.pipe(take(1), takeUntil(__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_ngUnsubscribe, "f")))
|
|
71
79
|
.subscribe((resources) => {
|
|
72
80
|
this.formatItems = [
|
|
73
81
|
{
|
|
74
82
|
function: () => this.execCommand('bold'),
|
|
75
|
-
label: resources
|
|
76
|
-
keyShortcut: resources
|
|
83
|
+
label: resources.bold,
|
|
84
|
+
keyShortcut: resources.boldShort,
|
|
77
85
|
},
|
|
78
86
|
{
|
|
79
87
|
function: () => this.execCommand('italic'),
|
|
80
|
-
label: resources
|
|
81
|
-
keyShortcut: resources
|
|
88
|
+
label: resources.italic,
|
|
89
|
+
keyShortcut: resources.italicShort,
|
|
82
90
|
},
|
|
83
91
|
{
|
|
84
92
|
function: () => this.execCommand('underline'),
|
|
85
|
-
label: resources
|
|
86
|
-
keyShortcut: resources
|
|
93
|
+
label: resources.underline,
|
|
94
|
+
keyShortcut: resources.underlineShort,
|
|
87
95
|
},
|
|
88
96
|
{
|
|
89
97
|
function: () => this.execCommand('strikethrough'),
|
|
90
|
-
label: resources
|
|
98
|
+
label: resources.strikethrough,
|
|
91
99
|
},
|
|
92
100
|
{
|
|
93
101
|
isDivider: true,
|
|
94
102
|
},
|
|
95
103
|
{
|
|
96
|
-
function: () => this.
|
|
97
|
-
label: resources
|
|
104
|
+
function: () => __classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_instances, "m", _SkyTextEditorMenubarComponent_clearFormat).call(this),
|
|
105
|
+
label: resources.clearFormatting,
|
|
98
106
|
},
|
|
99
107
|
];
|
|
100
108
|
this.editItems = [
|
|
101
109
|
{
|
|
102
110
|
function: () => this.execCommand('undo'),
|
|
103
|
-
label: resources
|
|
104
|
-
keyShortcut: resources
|
|
111
|
+
label: resources.undo,
|
|
112
|
+
keyShortcut: resources.undoShort,
|
|
105
113
|
},
|
|
106
114
|
{
|
|
107
115
|
function: () => this.execCommand('redo'),
|
|
108
|
-
label: resources
|
|
109
|
-
keyShortcut: resources
|
|
116
|
+
label: resources.redo,
|
|
117
|
+
keyShortcut: resources.redoShort,
|
|
110
118
|
},
|
|
111
119
|
{
|
|
112
120
|
isDivider: true,
|
|
113
121
|
},
|
|
114
122
|
{
|
|
115
123
|
function: () => this.execCommand('cut'),
|
|
116
|
-
label: resources
|
|
117
|
-
keyShortcut: resources
|
|
124
|
+
label: resources.cut,
|
|
125
|
+
keyShortcut: resources.cutShort,
|
|
118
126
|
},
|
|
119
127
|
{
|
|
120
128
|
function: () => this.execCommand('copy'),
|
|
121
|
-
label: resources
|
|
122
|
-
keyShortcut: resources
|
|
129
|
+
label: resources.copy,
|
|
130
|
+
keyShortcut: resources.copyShort,
|
|
123
131
|
},
|
|
124
132
|
{
|
|
125
133
|
function: () => this.execCommand('paste'),
|
|
126
|
-
label: resources
|
|
127
|
-
keyShortcut: resources
|
|
134
|
+
label: resources.paste,
|
|
135
|
+
keyShortcut: resources.pasteShort,
|
|
128
136
|
},
|
|
129
137
|
{
|
|
130
138
|
isDivider: true,
|
|
131
139
|
},
|
|
132
140
|
{
|
|
133
141
|
function: () => this.execCommand('selectAll'),
|
|
134
|
-
label: resources
|
|
135
|
-
keyShortcut: resources
|
|
142
|
+
label: resources.selectAll,
|
|
143
|
+
keyShortcut: resources.selectAllShort,
|
|
136
144
|
},
|
|
137
145
|
];
|
|
138
146
|
});
|
|
139
147
|
}
|
|
140
148
|
ngOnDestroy() {
|
|
141
|
-
this.
|
|
142
|
-
this.
|
|
149
|
+
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_ngUnsubscribe, "f").next();
|
|
150
|
+
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_ngUnsubscribe, "f").complete();
|
|
143
151
|
}
|
|
144
152
|
execCommand(command, value = '') {
|
|
145
|
-
this.
|
|
153
|
+
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_adapterService, "f").execCommand({
|
|
146
154
|
command: command,
|
|
147
155
|
value: value,
|
|
148
156
|
});
|
|
149
157
|
}
|
|
150
158
|
insertMergeField(field) {
|
|
151
159
|
this.execCommand('insertHTML', '<img style="display: inline; cursor: grab;" data-fieldid="' +
|
|
152
|
-
field.id +
|
|
160
|
+
he.escape(field.id) +
|
|
153
161
|
'" data-fielddisplay="' +
|
|
154
|
-
field.name +
|
|
162
|
+
he.escape(field.name) +
|
|
155
163
|
'" src="' +
|
|
156
164
|
(field.previewImageUrl ||
|
|
157
|
-
this.
|
|
165
|
+
__classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_adapterService, "f").getMergeFieldDataURI(field.name)) +
|
|
158
166
|
'">');
|
|
159
167
|
}
|
|
160
|
-
closeDropdowns() {
|
|
161
|
-
this.editDropdownStream.next({ type: SkyDropdownMessageType.Close });
|
|
162
|
-
this.formatDropdownStream.next({ type: SkyDropdownMessageType.Close });
|
|
163
|
-
this.mergeFieldDropdownStream.next({ type: SkyDropdownMessageType.Close });
|
|
164
|
-
}
|
|
165
|
-
clearFormat() {
|
|
166
|
-
const currentSelection = this.adapterService.getCurrentSelection(this.editorId);
|
|
167
|
-
/* istanbul ignore else */
|
|
168
|
-
if (currentSelection.rangeCount > 0 &&
|
|
169
|
-
currentSelection.getRangeAt(0).toString().length <= 0) {
|
|
170
|
-
this.execCommand('selectAll');
|
|
171
|
-
}
|
|
172
|
-
this.execCommand('removeFormat');
|
|
173
|
-
}
|
|
174
168
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
169
|
+
_SkyTextEditorMenubarComponent__disabled = new WeakMap(), _SkyTextEditorMenubarComponent_ngUnsubscribe = new WeakMap(), _SkyTextEditorMenubarComponent_adapterService = new WeakMap(), _SkyTextEditorMenubarComponent_changeDetector = new WeakMap(), _SkyTextEditorMenubarComponent_resources = new WeakMap(), _SkyTextEditorMenubarComponent_instances = new WeakSet(), _SkyTextEditorMenubarComponent_closeDropdowns = function _SkyTextEditorMenubarComponent_closeDropdowns() {
|
|
170
|
+
this.editDropdownStream.next({ type: SkyDropdownMessageType.Close });
|
|
171
|
+
this.formatDropdownStream.next({ type: SkyDropdownMessageType.Close });
|
|
172
|
+
this.mergeFieldDropdownStream.next({ type: SkyDropdownMessageType.Close });
|
|
173
|
+
}, _SkyTextEditorMenubarComponent_clearFormat = function _SkyTextEditorMenubarComponent_clearFormat() {
|
|
174
|
+
const currentSelection = __classPrivateFieldGet(this, _SkyTextEditorMenubarComponent_adapterService, "f").getCurrentSelection();
|
|
175
|
+
/* istanbul ignore else */
|
|
176
|
+
if (currentSelection &&
|
|
177
|
+
currentSelection.rangeCount > 0 &&
|
|
178
|
+
currentSelection.getRangeAt(0).toString().length <= 0) {
|
|
179
|
+
this.execCommand('selectAll');
|
|
180
|
+
}
|
|
181
|
+
this.execCommand('removeFormat');
|
|
182
|
+
};
|
|
183
|
+
SkyTextEditorMenubarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyTextEditorMenubarComponent, deps: [{ token: i1.SkyTextEditorAdapterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
184
|
+
SkyTextEditorMenubarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyTextEditorMenubarComponent, selector: "sky-text-editor-menubar", inputs: { editorFocusStream: "editorFocusStream", menus: "menus", mergeFields: "mergeFields", disabled: "disabled" }, ngImport: i0, template: "<sky-toolbar-item\n *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n>\n <ng-container [ngSwitch]=\"menu\">\n <ng-container *ngSwitchCase=\"'edit'\">\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button\n *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem?.function()\"\n >\n {{ editItem.label }}\n <div\n *ngIf=\"editItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'format'\">\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button\n *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem?.function()\"\n >\n {{ formatItem.label }}\n <div\n *ngIf=\"formatItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'merge-field'\">\n <sky-dropdown\n *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n", styles: [".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.λ2, selector: "sky-dropdown-button" }, { kind: "component", type: i4.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { kind: "component", type: i4.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { kind: "component", type: i4.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { kind: "directive", type: i5.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "component", type: i6.λ39, selector: "sky-toolbar-item" }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyTextEditorMenubarComponent, decorators: [{
|
|
178
186
|
type: Component,
|
|
179
|
-
args: [{ selector: 'sky-text-editor-menubar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-toolbar-item\n *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n>\n <ng-container [ngSwitch]=\"menu\">\n <ng-container *ngSwitchCase=\"'edit'\">\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button\n *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem
|
|
187
|
+
args: [{ selector: 'sky-text-editor-menubar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-toolbar-item\n *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n>\n <ng-container [ngSwitch]=\"menu\">\n <ng-container *ngSwitchCase=\"'edit'\">\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button\n *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem?.function()\"\n >\n {{ editItem.label }}\n <div\n *ngIf=\"editItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'format'\">\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button\n *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem?.function()\"\n >\n {{ formatItem.label }}\n <div\n *ngIf=\"formatItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'merge-field'\">\n <sky-dropdown\n *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n", styles: [".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}\n"] }]
|
|
180
188
|
}], ctorParameters: function () { return [{ type: i1.SkyTextEditorAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyLibResourcesService }]; }, propDecorators: { editorFocusStream: [{
|
|
181
189
|
type: Input
|
|
182
|
-
}], editorId: [{
|
|
183
|
-
type: Input
|
|
184
190
|
}], menus: [{
|
|
185
191
|
type: Input
|
|
186
192
|
}], mergeFields: [{
|
|
@@ -188,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
188
194
|
}], disabled: [{
|
|
189
195
|
type: Input
|
|
190
196
|
}] } });
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQXNCLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7O0FBSXRGOztHQUVHO0FBT0gsTUFBTSxPQUFPLDZCQUE2QjtJQWtEeEMsWUFDVSxjQUEyQyxFQUMzQyxjQUFpQyxFQUNqQyxTQUFpQztRQUZqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBNkI7UUFDM0MsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQXdCO1FBbkRwQyxzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBTWxDLFVBQUssR0FBNEIsRUFBRSxDQUFDO1FBR3BDLGdCQUFXLEdBQThCLEVBQUUsQ0FBQztRQWUzQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRW5CLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBU3ZELHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBU3pELDZCQUF3QixHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBRTVELGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU16QyxDQUFDO0lBekNKLElBQ1csUUFBUSxDQUFDLEtBQWM7UUFDaEMsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xFLElBQUksWUFBWSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7WUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFnQ00sUUFBUTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDO1lBQ1AsdUJBQXVCO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUN0QixpREFBaUQsQ0FDbEQ7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FDdEIsd0RBQXdELENBQ3pEO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQ3RCLG1EQUFtRCxDQUNwRDtZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUN0QiwwREFBMEQsQ0FDM0Q7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FDdEIsc0RBQXNELENBQ3ZEO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQ3RCLDZEQUE2RCxDQUM5RDtZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUN0QiwwREFBMEQsQ0FDM0Q7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FDdEIsNkRBQTZELENBQzlEO1lBRUQsdUNBQXVDO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLCtDQUErQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUN0QixzREFBc0QsQ0FDdkQ7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQywrQ0FBK0MsQ0FBQztZQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FDdEIsc0RBQXNELENBQ3ZEO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsOENBQThDLENBQUM7WUFDeEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQ3RCLHFEQUFxRCxDQUN0RDtZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLCtDQUErQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUN0QixzREFBc0QsQ0FDdkQ7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FDdEIsZ0RBQWdELENBQ2pEO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQ3RCLHVEQUF1RCxDQUN4RDtZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUN0QixxREFBcUQsQ0FDdEQ7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FDdEIsNERBQTRELENBQzdEO1NBQ0YsQ0FBQzthQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHO2dCQUNqQjtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7b0JBQ3hDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUNuQixXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztpQkFDMUI7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO29CQUMxQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDbkIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7aUJBQzFCO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztvQkFDN0MsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQ25CLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUMxQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7b0JBQ2pELEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUNwQjtnQkFDRDtvQkFDRSxTQUFTLEVBQUUsSUFBSTtpQkFDaEI7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ2xDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUNwQjthQUNGLENBQUM7WUFDRixJQUFJLENBQUMsU0FBUyxHQUFHO2dCQUNmO29CQUNFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztvQkFDeEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQ25CLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUMxQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7b0JBQ3hDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUNwQixXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztpQkFDM0I7Z0JBQ0Q7b0JBQ0UsU0FBUyxFQUFFLElBQUk7aUJBQ2hCO2dCQUNEO29CQUNFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztvQkFDdkMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQ3BCLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO2lCQUMzQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7b0JBQ3hDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUNwQixXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztpQkFDM0I7Z0JBQ0Q7b0JBQ0UsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO29CQUN6QyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDcEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7aUJBQzNCO2dCQUNEO29CQUNFLFNBQVMsRUFBRSxJQUFJO2lCQUNoQjtnQkFDRDtvQkFDRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7b0JBQzdDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUNwQixXQUFXLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztpQkFDM0I7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFlLEVBQUUsUUFBYSxFQUFFO1FBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDN0MsT0FBTyxFQUFFLE9BQU87WUFDaEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBOEI7UUFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FDZCxZQUFZLEVBQ1osNERBQTREO1lBQzFELEtBQUssQ0FBQyxFQUFFO1lBQ1IsdUJBQXVCO1lBQ3ZCLEtBQUssQ0FBQyxJQUFJO1lBQ1YsU0FBUztZQUNULENBQUMsS0FBSyxDQUFDLGVBQWU7Z0JBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVPLFdBQVc7UUFDakIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUM5RCxJQUFJLENBQUMsUUFBUSxDQUNkLENBQUM7UUFDRiwwQkFBMEI7UUFDMUIsSUFDRSxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsQ0FBQztZQUMvQixnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsRUFDckQ7WUFDQSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNuQyxDQUFDOzswSEF6T1UsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsMk1DNUIxQyw4cEhBOEdBOzJGRGxGYSw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNO3VMQUl4QyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlLLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2UsIFNreURyb3Bkb3duTWVzc2FnZVR5cGUgfSBmcm9tICdAc2t5dXgvcG9wb3ZlcnMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lGb3Jtc1V0aWxpdHkgfSBmcm9tICcuLi8uLi9zaGFyZWQvZm9ybXMtdXRpbGl0eSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90ZXh0LWVkaXRvci1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lbnVUeXBlIH0gZnJvbSAnLi4vdHlwZXMvbWVudS10eXBlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkIH0gZnJvbSAnLi4vdHlwZXMvdGV4dC1lZGl0b3ItbWVyZ2UtZmllbGQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdGV4dC1lZGl0b3ItbWVudWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci1tZW51YmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvck1lbnViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlZGl0b3JGb2N1c1N0cmVhbSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVkaXRvcklkOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1lbnVzOiBTa3lUZXh0RWRpdG9yTWVudVR5cGVbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXJnZUZpZWxkczogU2t5VGV4dEVkaXRvck1lcmdlRmllbGRbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBTa3lGb3Jtc1V0aWxpdHkuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICBpZiAoY29lcmNlZFZhbHVlICE9PSB0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZWRWYWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBlZGl0RHJvcGRvd25TdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lEcm9wZG93bk1lc3NhZ2U+KCk7XG5cbiAgcHVibGljIGVkaXRJdGVtczoge1xuICAgIGZ1bmN0aW9uPzogKCkgPT4gdm9pZDtcbiAgICBpc0RpdmlkZXI/OiBib29sZWFuO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGtleVNob3J0Y3V0Pzogc3RyaW5nO1xuICB9W107XG5cbiAgcHVibGljIGZvcm1hdERyb3Bkb3duU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5RHJvcGRvd25NZXNzYWdlPigpO1xuXG4gIHB1YmxpYyBmb3JtYXRJdGVtczoge1xuICAgIGZ1bmN0aW9uPzogKCkgPT4gdm9pZDtcbiAgICBpc0RpdmlkZXI/OiBib29sZWFuO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGtleVNob3J0Y3V0Pzogc3RyaW5nO1xuICB9W107XG5cbiAgcHVibGljIG1lcmdlRmllbGREcm9wZG93blN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWRhcHRlclNlcnZpY2U6IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlc291cmNlczogU2t5TGliUmVzb3VyY2VzU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yRm9jdXNTdHJlYW0ucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bnMoKTtcbiAgICB9KTtcblxuICAgIGZvcmtKb2luKFtcbiAgICAgIC8vIEZvcm1hdCBtZW51IHN0cmluZ3MuXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fYm9sZF9sYWJlbCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fYm9sZF9rZXlfc2hvcnRjdXQnXG4gICAgICApLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKFxuICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2l0YWxpY19sYWJlbCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25faXRhbGljX2tleV9zaG9ydGN1dCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fdW5kZXJsaW5lX2xhYmVsJ1xuICAgICAgKSxcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl91bmRlcmxpbmVfa2V5X3Nob3J0Y3V0J1xuICAgICAgKSxcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl9zdHJpa2V0aHJvdWdoX2xhYmVsJ1xuICAgICAgKSxcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl9jbGVhcl9mb3JtYXR0aW5nX2xhYmVsJ1xuICAgICAgKSxcblxuICAgICAgLy8gRWRpdCBtZW51IHN0cmluZyAtIHN0YXJ0IGF0IGluZGV4IDguXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoJ3NreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fdW5kb19sYWJlbCcpLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKFxuICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl91bmRvX2tleV9zaG9ydGN1dCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoJ3NreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fcmVkb19sYWJlbCcpLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKFxuICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9yZWRvX2tleV9zaG9ydGN1dCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoJ3NreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY3V0X2xhYmVsJyksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX2N1dF9rZXlfc2hvcnRjdXQnXG4gICAgICApLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKCdza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX2NvcHlfbGFiZWwnKSxcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY29weV9rZXlfc2hvcnRjdXQnXG4gICAgICApLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKFxuICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9wYXN0ZV9sYWJlbCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3Bhc3RlX2tleV9zaG9ydGN1dCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3NlbGVjdF9hbGxfbGFiZWwnXG4gICAgICApLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKFxuICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9zZWxlY3RfYWxsX2tleV9zaG9ydGN1dCdcbiAgICAgICksXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXNvdXJjZXMpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtYXRJdGVtcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnYm9sZCcpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1swXSxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXNbMV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnaXRhbGljJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzWzJdLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlc1szXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCd1bmRlcmxpbmUnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXNbNF0sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzWzVdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ3N0cmlrZXRocm91Z2gnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXNbNl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpc0RpdmlkZXI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5jbGVhckZvcm1hdCgpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1s3XSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmVkaXRJdGVtcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgndW5kbycpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1s4XSxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXNbOV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgncmVkbycpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1sxMF0sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzWzExXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzRGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdjdXQnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXNbMTJdLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlc1sxM10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnY29weScpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1sxNF0sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzWzE1XSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdwYXN0ZScpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1sxNl0sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzWzE3XSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzRGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdzZWxlY3RBbGwnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXNbMThdLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlc1sxOV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZXhlY0NvbW1hbmQoY29tbWFuZDogc3RyaW5nLCB2YWx1ZTogYW55ID0gJycpOiB2b2lkIHtcbiAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLmV4ZWNDb21tYW5kKHRoaXMuZWRpdG9ySWQsIHtcbiAgICAgIGNvbW1hbmQ6IGNvbW1hbmQsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5zZXJ0TWVyZ2VGaWVsZChmaWVsZDogU2t5VGV4dEVkaXRvck1lcmdlRmllbGQpOiB2b2lkIHtcbiAgICB0aGlzLmV4ZWNDb21tYW5kKFxuICAgICAgJ2luc2VydEhUTUwnLFxuICAgICAgJzxpbWcgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmU7IGN1cnNvcjogZ3JhYjtcIiBkYXRhLWZpZWxkaWQ9XCInICtcbiAgICAgICAgZmllbGQuaWQgK1xuICAgICAgICAnXCIgZGF0YS1maWVsZGRpc3BsYXk9XCInICtcbiAgICAgICAgZmllbGQubmFtZSArXG4gICAgICAgICdcIiBzcmM9XCInICtcbiAgICAgICAgKGZpZWxkLnByZXZpZXdJbWFnZVVybCB8fFxuICAgICAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2UuZ2V0TWVyZ2VGaWVsZERhdGFVUkkoZmllbGQubmFtZSkpICtcbiAgICAgICAgJ1wiPidcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZURyb3Bkb3ducygpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXREcm9wZG93blN0cmVhbS5uZXh0KHsgdHlwZTogU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSB9KTtcbiAgICB0aGlzLmZvcm1hdERyb3Bkb3duU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICAgIHRoaXMubWVyZ2VGaWVsZERyb3Bkb3duU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckZvcm1hdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5hZGFwdGVyU2VydmljZS5nZXRDdXJyZW50U2VsZWN0aW9uKFxuICAgICAgdGhpcy5lZGl0b3JJZFxuICAgICk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoXG4gICAgICBjdXJyZW50U2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwICYmXG4gICAgICBjdXJyZW50U2VsZWN0aW9uLmdldFJhbmdlQXQoMCkudG9TdHJpbmcoKS5sZW5ndGggPD0gMFxuICAgICkge1xuICAgICAgdGhpcy5leGVjQ29tbWFuZCgnc2VsZWN0QWxsJyk7XG4gICAgfVxuICAgIHRoaXMuZXhlY0NvbW1hbmQoJ3JlbW92ZUZvcm1hdCcpO1xuICB9XG59XG4iLCI8c2t5LXRvb2xiYXItaXRlbVxuICAqbmdGb3I9XCJsZXQgbWVudSBvZiBtZW51c1wiXG4gIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLW1lbnVcIlxuICBbbmdDbGFzc109XCInc2t5LXRleHQtZWRpdG9yLW1lbnUtJyArIG1lbnVcIlxuPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2VkaXQnXCI+XG4gICAgICA8c2t5LWRyb3Bkb3duXG4gICAgICAgIGxhYmVsPVwiRWRpdCBtZW51XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZWRpdERyb3Bkb3duU3RyZWFtXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9tZW51YmFyX2Ryb3Bkb3duX2J1dHRvbl9lZGl0X2xhYmVsJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgIH19XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgIDxza3ktZHJvcGRvd24taXRlbSAqbmdGb3I9XCJsZXQgZWRpdEl0ZW0gb2YgZWRpdEl0ZW1zXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWVkaXRJdGVtLmlzRGl2aWRlclwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEl0ZW0uZnVuY3Rpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGVkaXRJdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImVkaXRJdGVtLmtleVNob3J0Y3V0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1tZW51LWtleS1zaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ3NreS1mb250LWRlZW1waGFzaXplZCc6ICdtb2Rlcm4nLFxuICAgICAgICAgICAgICAgICAgJ3NreS1kZWVtcGhhc2l6ZWQnOiAnZGVmYXVsdCdcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGVkaXRJdGVtLmtleVNob3J0Y3V0IH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiZWRpdEl0ZW0uaXNEaXZpZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItZHJvcGRvd24taXRlbS1kaXZpZGVyXCJcbiAgICAgICAgICAgICAgcm9sZT1cImRpdmlkZXJcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvc2t5LWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICA8L3NreS1kcm9wZG93bj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZm9ybWF0J1wiPlxuICAgICAgPHNreS1kcm9wZG93blxuICAgICAgICBsYWJlbD1cIkZvcm1hdCBtZW51XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZm9ybWF0RHJvcGRvd25TdHJlYW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2Zvcm1hdF9sYWJlbCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICB9fVxuICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0gKm5nRm9yPVwibGV0IGZvcm1hdEl0ZW0gb2YgZm9ybWF0SXRlbXNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCIhZm9ybWF0SXRlbS5pc0RpdmlkZXJcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdEl0ZW0uZnVuY3Rpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGZvcm1hdEl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybWF0SXRlbS5rZXlTaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItbWVudS1rZXktc2hvcnRjdXRcIlxuICAgICAgICAgICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiAnbW9kZXJuJyxcbiAgICAgICAgICAgICAgICAgICdza3ktZGVlbXBoYXNpemVkJzogJ2RlZmF1bHQnXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXRJdGVtLmtleVNob3J0Y3V0IH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiZm9ybWF0SXRlbS5pc0RpdmlkZXJcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1kcm9wZG93bi1pdGVtLWRpdmlkZXJcIlxuICAgICAgICAgICAgICByb2xlPVwiZGl2aWRlclwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtZXJnZS1maWVsZCdcIj5cbiAgICAgIDxza3ktZHJvcGRvd25cbiAgICAgICAgKm5nSWY9XCJtZXJnZUZpZWxkcyAmJiBtZXJnZUZpZWxkcy5sZW5ndGggPiAwXCJcbiAgICAgICAgbGFiZWw9XCJJbnNlcnQgbWVyZ2UgZmllbGRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbbWVzc2FnZVN0cmVhbV09XCJtZXJnZUZpZWxkRHJvcGRvd25TdHJlYW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2luc2VydF9sYWJlbCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICB9fVxuICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0gKm5nRm9yPVwibGV0IG1lcmdlRmllbGQgb2YgbWVyZ2VGaWVsZHNcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJpbnNlcnRNZXJnZUZpZWxkKG1lcmdlRmllbGQpXCI+XG4gICAgICAgICAgICAgIHt7IG1lcmdlRmllbGQubmFtZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvc2t5LXRvb2xiYXItaXRlbT5cbiJdfQ==
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXNCLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0UsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBSzdELE1BQU0sa0JBQWtCLEdBQUcsdUNBQXVDLENBQUM7QUFDbkUsTUFBTSxnQkFBZ0IsR0FBRyxxQ0FBcUMsQ0FBQztBQUUvRDs7R0FFRztBQU9ILE1BQU0sT0FBTyw2QkFBNkI7SUFzRHhDLFlBQ0UsY0FBMkMsRUFDM0MsY0FBaUMsRUFDakMsU0FBaUM7O1FBdkQ1QixzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBR3hDLFVBQUssR0FBNEIsRUFBRSxDQUFDO1FBR3BDLGdCQUFXLEdBQThCLEVBQUUsQ0FBQztRQWVuRCxtREFBYSxL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LG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNO3VMQUl4QyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUssUUFBUTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcbmltcG9ydCB7IFNreURyb3Bkb3duTWVzc2FnZSwgU2t5RHJvcGRvd25NZXNzYWdlVHlwZSB9IGZyb20gJ0Bza3l1eC9wb3BvdmVycyc7XG5cbmltcG9ydCBoZSBmcm9tICdoZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUZvcm1zVXRpbGl0eSB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3Jtcy11dGlsaXR5JztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RleHQtZWRpdG9yLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yTWVudVR5cGUgfSBmcm9tICcuLi90eXBlcy9tZW51LXR5cGUnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lcmdlRmllbGQgfSBmcm9tICcuLi90eXBlcy90ZXh0LWVkaXRvci1tZXJnZS1maWVsZCc7XG5cbmNvbnN0IEZPUk1BVF9NRU5VX0FDVElPTiA9ICdza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fJztcbmNvbnN0IEVESVRfTUVOVV9BQ1RJT04gPSAnc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl8nO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdGV4dC1lZGl0b3ItbWVudWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci1tZW51YmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvck1lbnViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlZGl0b3JGb2N1c1N0cmVhbSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1lbnVzOiBTa3lUZXh0RWRpdG9yTWVudVR5cGVbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXJnZUZpZWxkczogU2t5VGV4dEVkaXRvck1lcmdlRmllbGRbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBTa3lGb3Jtc1V0aWxpdHkuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICBpZiAoY29lcmNlZFZhbHVlICE9PSB0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLiNfZGlzYWJsZWQgPSBjb2VyY2VkVmFsdWU7XG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHVibGljIGVkaXREcm9wZG93blN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcblxuICBwdWJsaWMgZWRpdEl0ZW1zOlxuICAgIHwge1xuICAgICAgICBmdW5jdGlvbj86ICgpID0+IHZvaWQ7XG4gICAgICAgIGlzRGl2aWRlcj86IGJvb2xlYW47XG4gICAgICAgIGxhYmVsPzogc3RyaW5nO1xuICAgICAgICBrZXlTaG9ydGN1dD86IHN0cmluZztcbiAgICAgIH1bXVxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBmb3JtYXREcm9wZG93blN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcblxuICBwdWJsaWMgZm9ybWF0SXRlbXM6XG4gICAgfCB7XG4gICAgICAgIGZ1bmN0aW9uPzogKCkgPT4gdm9pZDtcbiAgICAgICAgaXNEaXZpZGVyPzogYm9vbGVhbjtcbiAgICAgICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgICAgIGtleVNob3J0Y3V0Pzogc3RyaW5nO1xuICAgICAgfVtdXG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIG1lcmdlRmllbGREcm9wZG93blN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICNhZGFwdGVyU2VydmljZTogU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlO1xuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjcmVzb3VyY2VzOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFkYXB0ZXJTZXJ2aWNlOiBTa3lUZXh0RWRpdG9yQWRhcHRlclNlcnZpY2UsXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHJlc291cmNlczogU2t5TGliUmVzb3VyY2VzU2VydmljZVxuICApIHtcbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZSA9IGFkYXB0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jcmVzb3VyY2VzID0gcmVzb3VyY2VzO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yRm9jdXNTdHJlYW1cbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNjbG9zZURyb3Bkb3ducygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiNyZXNvdXJjZXNcbiAgICAgIC5nZXRTdHJpbmdzKHtcbiAgICAgICAgYm9sZDogRk9STUFUX01FTlVfQUNUSU9OICsgJ2JvbGRfbGFiZWwnLFxuICAgICAgICBib2xkU2hvcnQ6IEZPUk1BVF9NRU5VX0FDVElPTiArICdib2xkX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIGl0YWxpYzogRk9STUFUX01FTlVfQUNUSU9OICsgJ2l0YWxpY19sYWJlbCcsXG4gICAgICAgIGl0YWxpY1Nob3J0OiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAnaXRhbGljX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHVuZGVybGluZTogRk9STUFUX01FTlVfQUNUSU9OICsgJ3VuZGVybGluZV9sYWJlbCcsXG4gICAgICAgIHVuZGVybGluZVNob3J0OiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAndW5kZXJsaW5lX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHN0cmlrZXRocm91Z2g6IEZPUk1BVF9NRU5VX0FDVElPTiArICdzdHJpa2V0aHJvdWdoX2xhYmVsJyxcbiAgICAgICAgY2xlYXJGb3JtYXR0aW5nOiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAnY2xlYXJfZm9ybWF0dGluZ19sYWJlbCcsXG4gICAgICAgIHVuZG86IEVESVRfTUVOVV9BQ1RJT04gKyAndW5kb19sYWJlbCcsXG4gICAgICAgIHVuZG9TaG9ydDogRURJVF9NRU5VX0FDVElPTiArICd1bmRvX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHJlZG86IEVESVRfTUVOVV9BQ1RJT04gKyAncmVkb19sYWJlbCcsXG4gICAgICAgIHJlZG9TaG9ydDogRURJVF9NRU5VX0FDVElPTiArICdyZWRvX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIGN1dDogRURJVF9NRU5VX0FDVElPTiArICdjdXRfbGFiZWwnLFxuICAgICAgICBjdXRTaG9ydDogRURJVF9NRU5VX0FDVElPTiArICdjdXRfa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgY29weTogRURJVF9NRU5VX0FDVElPTiArICdjb3B5X2xhYmVsJyxcbiAgICAgICAgY29weVNob3J0OiBFRElUX01FTlVfQUNUSU9OICsgJ2NvcHlfa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgcGFzdGU6IEVESVRfTUVOVV9BQ1RJT04gKyAncGFzdGVfbGFiZWwnLFxuICAgICAgICBwYXN0ZVNob3J0OiBFRElUX01FTlVfQUNUSU9OICsgJ3Bhc3RlX2tleV9zaG9ydGN1dCcsXG4gICAgICAgIHNlbGVjdEFsbDogRURJVF9NRU5VX0FDVElPTiArICdzZWxlY3RfYWxsX2xhYmVsJyxcbiAgICAgICAgc2VsZWN0QWxsU2hvcnQ6IEVESVRfTUVOVV9BQ1RJT04gKyAnc2VsZWN0X2FsbF9rZXlfc2hvcnRjdXQnLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRha2UoMSksIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc291cmNlcykgPT4ge1xuICAgICAgICB0aGlzLmZvcm1hdEl0ZW1zID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdib2xkJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLmJvbGQsXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLmJvbGRTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdpdGFsaWMnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuaXRhbGljLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5pdGFsaWNTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCd1bmRlcmxpbmUnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMudW5kZXJsaW5lLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy51bmRlcmxpbmVTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdzdHJpa2V0aHJvdWdoJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnN0cmlrZXRocm91Z2gsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpc0RpdmlkZXI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy4jY2xlYXJGb3JtYXQoKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuY2xlYXJGb3JtYXR0aW5nLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuZWRpdEl0ZW1zID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCd1bmRvJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnVuZG8sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLnVuZG9TaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdyZWRvJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnJlZG8sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLnJlZG9TaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzRGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdjdXQnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuY3V0LFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5jdXRTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdjb3B5JyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLmNvcHksXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLmNvcHlTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdwYXN0ZScpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy5wYXN0ZSxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXMucGFzdGVTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzRGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdzZWxlY3RBbGwnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuc2VsZWN0QWxsLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5zZWxlY3RBbGxTaG9ydCxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGV4ZWNDb21tYW5kKGNvbW1hbmQ6IHN0cmluZywgdmFsdWUgPSAnJyk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmV4ZWNDb21tYW5kKHtcbiAgICAgIGNvbW1hbmQ6IGNvbW1hbmQsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5zZXJ0TWVyZ2VGaWVsZChmaWVsZDogU2t5VGV4dEVkaXRvck1lcmdlRmllbGQpOiB2b2lkIHtcbiAgICB0aGlzLmV4ZWNDb21tYW5kKFxuICAgICAgJ2luc2VydEhUTUwnLFxuICAgICAgJzxpbWcgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmU7IGN1cnNvcjogZ3JhYjtcIiBkYXRhLWZpZWxkaWQ9XCInICtcbiAgICAgICAgaGUuZXNjYXBlKGZpZWxkLmlkKSArXG4gICAgICAgICdcIiBkYXRhLWZpZWxkZGlzcGxheT1cIicgK1xuICAgICAgICBoZS5lc2NhcGUoZmllbGQubmFtZSkgK1xuICAgICAgICAnXCIgc3JjPVwiJyArXG4gICAgICAgIChmaWVsZC5wcmV2aWV3SW1hZ2VVcmwgfHxcbiAgICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRNZXJnZUZpZWxkRGF0YVVSSShmaWVsZC5uYW1lKSkgK1xuICAgICAgICAnXCI+J1xuICAgICk7XG4gIH1cblxuICAjY2xvc2VEcm9wZG93bnMoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0RHJvcGRvd25TdHJlYW0ubmV4dCh7IHR5cGU6IFNreURyb3Bkb3duTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gICAgdGhpcy5mb3JtYXREcm9wZG93blN0cmVhbS5uZXh0KHsgdHlwZTogU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSB9KTtcbiAgICB0aGlzLm1lcmdlRmllbGREcm9wZG93blN0cmVhbS5uZXh0KHsgdHlwZTogU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSB9KTtcbiAgfVxuXG4gICNjbGVhckZvcm1hdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0Q3VycmVudFNlbGVjdGlvbigpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKFxuICAgICAgY3VycmVudFNlbGVjdGlvbiAmJlxuICAgICAgY3VycmVudFNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCAmJlxuICAgICAgY3VycmVudFNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLnRvU3RyaW5nKCkubGVuZ3RoIDw9IDBcbiAgICApIHtcbiAgICAgIHRoaXMuZXhlY0NvbW1hbmQoJ3NlbGVjdEFsbCcpO1xuICAgIH1cbiAgICB0aGlzLmV4ZWNDb21tYW5kKCdyZW1vdmVGb3JtYXQnKTtcbiAgfVxufVxuIiwiPHNreS10b29sYmFyLWl0ZW1cbiAgKm5nRm9yPVwibGV0IG1lbnUgb2YgbWVudXNcIlxuICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1tZW51XCJcbiAgW25nQ2xhc3NdPVwiJ3NreS10ZXh0LWVkaXRvci1tZW51LScgKyBtZW51XCJcbj5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwibWVudVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidlZGl0J1wiPlxuICAgICAgPHNreS1kcm9wZG93blxuICAgICAgICBsYWJlbD1cIkVkaXQgbWVudVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFttZXNzYWdlU3RyZWFtXT1cImVkaXREcm9wZG93blN0cmVhbVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfbWVudWJhcl9kcm9wZG93bl9idXR0b25fZWRpdF9sYWJlbCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICB9fVxuICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0gKm5nRm9yPVwibGV0IGVkaXRJdGVtIG9mIGVkaXRJdGVtc1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cIiFlZGl0SXRlbS5pc0RpdmlkZXJcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRJdGVtPy5mdW5jdGlvbigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZWRpdEl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZWRpdEl0ZW0ua2V5U2hvcnRjdXRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLW1lbnUta2V5LXNob3J0Y3V0XCJcbiAgICAgICAgICAgICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogJ21vZGVybicsXG4gICAgICAgICAgICAgICAgICAnc2t5LWRlZW1waGFzaXplZCc6ICdkZWZhdWx0J1xuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZWRpdEl0ZW0ua2V5U2hvcnRjdXQgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0SXRlbS5pc0RpdmlkZXJcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1kcm9wZG93bi1pdGVtLWRpdmlkZXJcIlxuICAgICAgICAgICAgICByb2xlPVwiZGl2aWRlclwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmb3JtYXQnXCI+XG4gICAgICA8c2t5LWRyb3Bkb3duXG4gICAgICAgIGxhYmVsPVwiRm9ybWF0IG1lbnVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbbWVzc2FnZVN0cmVhbV09XCJmb3JtYXREcm9wZG93blN0cmVhbVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfbWVudWJhcl9kcm9wZG93bl9idXR0b25fZm9ybWF0X2xhYmVsJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgIH19XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgIDxza3ktZHJvcGRvd24taXRlbSAqbmdGb3I9XCJsZXQgZm9ybWF0SXRlbSBvZiBmb3JtYXRJdGVtc1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cIiFmb3JtYXRJdGVtLmlzRGl2aWRlclwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0SXRlbT8uZnVuY3Rpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGZvcm1hdEl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybWF0SXRlbS5rZXlTaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItbWVudS1rZXktc2hvcnRjdXRcIlxuICAgICAgICAgICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiAnbW9kZXJuJyxcbiAgICAgICAgICAgICAgICAgICdza3ktZGVlbXBoYXNpemVkJzogJ2RlZmF1bHQnXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXRJdGVtLmtleVNob3J0Y3V0IH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiZm9ybWF0SXRlbS5pc0RpdmlkZXJcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1kcm9wZG93bi1pdGVtLWRpdmlkZXJcIlxuICAgICAgICAgICAgICByb2xlPVwiZGl2aWRlclwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtZXJnZS1maWVsZCdcIj5cbiAgICAgIDxza3ktZHJvcGRvd25cbiAgICAgICAgKm5nSWY9XCJtZXJnZUZpZWxkcyAmJiBtZXJnZUZpZWxkcy5sZW5ndGggPiAwXCJcbiAgICAgICAgbGFiZWw9XCJJbnNlcnQgbWVyZ2UgZmllbGRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbbWVzc2FnZVN0cmVhbV09XCJtZXJnZUZpZWxkRHJvcGRvd25TdHJlYW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2luc2VydF9sYWJlbCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICB9fVxuICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0gKm5nRm9yPVwibGV0IG1lcmdlRmllbGQgb2YgbWVyZ2VGaWVsZHNcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJpbnNlcnRNZXJnZUZpZWxkKG1lcmdlRmllbGQpXCI+XG4gICAgICAgICAgICAgIHt7IG1lcmdlRmllbGQubmFtZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvc2t5LXRvb2xiYXItaXRlbT5cbiJdfQ==
|