@firestitch/html-editor 18.0.31 → 18.0.32
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/app/modules/html-editor/components/html-editor/html-editor.component.d.ts +2 -0
- package/app/modules/html-editor/consts/index.d.ts +5 -0
- package/app/modules/html-editor/consts/toolbar-buttons.const.d.ts +14 -0
- package/app/modules/html-editor/consts/toolbar-xs-buttons.const.d.ts +14 -0
- package/app/modules/html-editor/fs-html-editor.module.d.ts +11 -1
- package/app/modules/html-editor/interfaces/html-editor-config.d.ts +11 -1
- package/app/modules/html-editor/services/froala-loader.service.d.ts +2 -0
- package/esm2022/app/modules/html-editor/components/html-editor/html-editor.component.mjs +62 -50
- package/esm2022/app/modules/html-editor/consts/index.mjs +6 -0
- package/esm2022/app/modules/html-editor/consts/toolbar-buttons.const.mjs +18 -0
- package/esm2022/app/modules/html-editor/consts/toolbar-xs-buttons.const.mjs +18 -0
- package/esm2022/app/modules/html-editor/interfaces/html-editor-config.mjs +1 -1
- package/esm2022/app/modules/html-editor/services/froala-loader.service.mjs +6 -1
- package/esm2022/public_api.mjs +2 -4
- package/fesm2022/firestitch-html-editor.mjs +108 -60
- package/fesm2022/firestitch-html-editor.mjs.map +1 -1
- package/package.json +1 -2
- package/public_api.d.ts +1 -3
|
@@ -50,8 +50,10 @@ export declare class FsHtmlEditorComponent implements OnInit, AfterViewInit, Con
|
|
|
50
50
|
private _createConfig;
|
|
51
51
|
private _change;
|
|
52
52
|
private _initButtons;
|
|
53
|
+
private _initToolbarButtons;
|
|
53
54
|
private _initPlugins;
|
|
54
55
|
private _defineButton;
|
|
56
|
+
private _buttonsToNames;
|
|
55
57
|
private _createOptions;
|
|
56
58
|
private _listenLazyInit;
|
|
57
59
|
private _contentChanged;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const ToolbarXsButtons: {
|
|
2
|
+
moreText: {
|
|
3
|
+
buttons: string[];
|
|
4
|
+
buttonsVisible: number;
|
|
5
|
+
};
|
|
6
|
+
moreParagraph: {
|
|
7
|
+
buttons: string[];
|
|
8
|
+
buttonsVisible: number;
|
|
9
|
+
};
|
|
10
|
+
moreRich: {
|
|
11
|
+
buttons: string[];
|
|
12
|
+
buttonsVisible: number;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -34,7 +34,17 @@ export declare function FsHtmlEditorConfigFactory(config: FsHtmlEditorConfig): {
|
|
|
34
34
|
froalaConfig?: Partial<import("froala-editor").FroalaOptions>;
|
|
35
35
|
assetsJSPath?: string;
|
|
36
36
|
assetsCSSPath?: string;
|
|
37
|
-
prependToolbarTextButtons?: import("@firestitch/html-editor").ToolbarButton[];
|
|
38
37
|
buttons?: import("@firestitch/html-editor").ToolbarButton[];
|
|
39
38
|
initialized?: () => void;
|
|
39
|
+
toolbars?: {
|
|
40
|
+
text?: {
|
|
41
|
+
prepend?: (string | import("@firestitch/html-editor").ToolbarButton)[];
|
|
42
|
+
};
|
|
43
|
+
paragraph?: {
|
|
44
|
+
prepend?: (string | import("@firestitch/html-editor").ToolbarButton)[];
|
|
45
|
+
};
|
|
46
|
+
rich?: {
|
|
47
|
+
prepend?: (string | import("@firestitch/html-editor").ToolbarButton)[];
|
|
48
|
+
};
|
|
49
|
+
};
|
|
40
50
|
};
|
|
@@ -22,9 +22,19 @@ export interface FsHtmlEditorConfig {
|
|
|
22
22
|
froalaConfig?: Partial<FroalaEditor.FroalaOptions>;
|
|
23
23
|
assetsJSPath?: string;
|
|
24
24
|
assetsCSSPath?: string;
|
|
25
|
-
prependToolbarTextButtons?: ToolbarButton[];
|
|
26
25
|
buttons?: ToolbarButton[];
|
|
27
26
|
initialized?: () => void;
|
|
27
|
+
toolbars?: {
|
|
28
|
+
text?: {
|
|
29
|
+
prepend?: (string | ToolbarButton)[];
|
|
30
|
+
};
|
|
31
|
+
paragraph?: {
|
|
32
|
+
prepend?: (string | ToolbarButton)[];
|
|
33
|
+
};
|
|
34
|
+
rich?: {
|
|
35
|
+
prepend?: (string | ToolbarButton)[];
|
|
36
|
+
};
|
|
37
|
+
};
|
|
28
38
|
}
|
|
29
39
|
export interface FsHtmlEditorUploadConfig {
|
|
30
40
|
width?: number | undefined;
|
|
@@ -7,6 +7,8 @@ export declare class FsFroalaLoaderService {
|
|
|
7
7
|
private _froalaLoaded;
|
|
8
8
|
private _froalaPluginsLoaded;
|
|
9
9
|
private _sourceLoader;
|
|
10
|
+
private _froalaEditor;
|
|
11
|
+
get FroalaEditor(): any;
|
|
10
12
|
private _loaded$;
|
|
11
13
|
constructor(_defaultConfig: FsHtmlEditorConfig, _document: Document);
|
|
12
14
|
get loaded$(): Observable<boolean>;
|
|
@@ -4,13 +4,11 @@ import { guid } from '@firestitch/common';
|
|
|
4
4
|
import { FileProcessor, FsFile } from '@firestitch/file';
|
|
5
5
|
import { BehaviorSubject, fromEventPattern, ReplaySubject, Subject } from 'rxjs';
|
|
6
6
|
import { distinctUntilChanged, filter, map, skip, startWith, switchMap, takeUntil, tap, } from 'rxjs/operators';
|
|
7
|
-
import FroalaEditor from 'froala-editor';
|
|
8
7
|
import { merge } from 'lodash-es';
|
|
8
|
+
import { ParagraphButtons, RichButtons, ToolbarButtons, ToolbarXsButtons } from '../../consts';
|
|
9
9
|
import { FsHtmlEditorContainerDirective } from '../../directives';
|
|
10
10
|
import { FS_HTML_EDITOR_CONFIG } from '../../injects/config.inject';
|
|
11
11
|
import { FsFroalaLoaderService } from '../../services/froala-loader.service';
|
|
12
|
-
import { ParagraphButtons } from './../../consts/paragraph-buttons.const';
|
|
13
|
-
import { RichButtons } from './../../consts/rich-buttons.const';
|
|
14
12
|
import { TextButtons } from './../../consts/text-buttons.const';
|
|
15
13
|
import * as i0 from "@angular/core";
|
|
16
14
|
import * as i1 from "../../services/froala-loader.service";
|
|
@@ -77,7 +75,8 @@ export class FsHtmlEditorComponent {
|
|
|
77
75
|
const config = this._createConfig();
|
|
78
76
|
this._initPlugins(config);
|
|
79
77
|
this._initButtons(config);
|
|
80
|
-
|
|
78
|
+
const froalaOptions = this._createOptions();
|
|
79
|
+
this._editor = new this._fr.FroalaEditor(this.el, froalaOptions, () => {
|
|
81
80
|
this._froalaReady$.next({ config, options });
|
|
82
81
|
});
|
|
83
82
|
}
|
|
@@ -205,9 +204,9 @@ export class FsHtmlEditorComponent {
|
|
|
205
204
|
"unorderedList", "verticalAlignBottom", "verticalAlignMiddle", "verticalAlignTop"]
|
|
206
205
|
*/
|
|
207
206
|
if (button.svgKey) {
|
|
208
|
-
FroalaEditor.DefineIcon(button.name, { SVG_KEY: button.svgKey });
|
|
207
|
+
this._fr.FroalaEditor.DefineIcon(button.name, { SVG_KEY: button.svgKey });
|
|
209
208
|
}
|
|
210
|
-
FroalaEditor.RegisterCommand(button.name, {
|
|
209
|
+
this._fr.FroalaEditor.RegisterCommand(button.name, {
|
|
211
210
|
title: button.title,
|
|
212
211
|
focus: button.focus ?? true,
|
|
213
212
|
undo: button.undo ?? true,
|
|
@@ -218,13 +217,19 @@ export class FsHtmlEditorComponent {
|
|
|
218
217
|
});
|
|
219
218
|
});
|
|
220
219
|
}
|
|
221
|
-
|
|
222
|
-
(
|
|
220
|
+
_initToolbarButtons(buttons) {
|
|
221
|
+
(buttons || [])
|
|
222
|
+
.filter((button) => typeof button !== 'string')
|
|
223
223
|
.forEach((button) => {
|
|
224
224
|
this._defineButton(button);
|
|
225
225
|
});
|
|
226
|
+
}
|
|
227
|
+
_initPlugins(config) {
|
|
228
|
+
this._initToolbarButtons(config.toolbars?.text?.prepend);
|
|
229
|
+
this._initToolbarButtons(config.toolbars?.paragraph?.prepend);
|
|
230
|
+
this._initToolbarButtons(config.toolbars?.rich?.prepend);
|
|
226
231
|
(config.plugins || []).forEach((plugin) => {
|
|
227
|
-
FroalaEditor.PLUGINS[plugin.config.name] = function (editor) {
|
|
232
|
+
this._fr.FroalaEditor.PLUGINS[plugin.config.name] = function (editor) {
|
|
228
233
|
plugin.editor = editor;
|
|
229
234
|
plugin.initialize();
|
|
230
235
|
return plugin;
|
|
@@ -237,21 +242,21 @@ export class FsHtmlEditorComponent {
|
|
|
237
242
|
}
|
|
238
243
|
_defineButton(button) {
|
|
239
244
|
if (button.html) {
|
|
240
|
-
FroalaEditor
|
|
245
|
+
this._fr.FroalaEditor
|
|
241
246
|
.DefineIconTemplate(`${button.name}-template`, button.html);
|
|
242
|
-
FroalaEditor
|
|
247
|
+
this._fr.FroalaEditor
|
|
243
248
|
.DefineIcon(button.name, {
|
|
244
249
|
NAME: `${button.name}-icon`,
|
|
245
250
|
template: `${button.name}-template`,
|
|
246
251
|
});
|
|
247
252
|
}
|
|
248
253
|
else {
|
|
249
|
-
FroalaEditor.DefineIcon(button.name, {
|
|
254
|
+
this._fr.FroalaEditor.DefineIcon(button.name, {
|
|
250
255
|
NAME: button.name,
|
|
251
256
|
PATH: button.svgPath,
|
|
252
257
|
});
|
|
253
258
|
}
|
|
254
|
-
FroalaEditor.RegisterCommand(button.name, {
|
|
259
|
+
this._fr.FroalaEditor.RegisterCommand(button.name, {
|
|
255
260
|
icon: button.name,
|
|
256
261
|
title: button.tooltip,
|
|
257
262
|
undo: button.undo,
|
|
@@ -270,17 +275,32 @@ export class FsHtmlEditorComponent {
|
|
|
270
275
|
},
|
|
271
276
|
});
|
|
272
277
|
}
|
|
278
|
+
_buttonsToNames(buttons) {
|
|
279
|
+
return (buttons || [])
|
|
280
|
+
.map((item) => {
|
|
281
|
+
return typeof item === 'string' ? item : item.name;
|
|
282
|
+
});
|
|
283
|
+
}
|
|
273
284
|
_createOptions() {
|
|
274
285
|
const config = this._createConfig();
|
|
275
|
-
const
|
|
276
|
-
...(config.
|
|
277
|
-
.map((item) => item.name),
|
|
286
|
+
const moreText = [
|
|
287
|
+
...this._buttonsToNames(config.toolbars?.text?.prepend),
|
|
278
288
|
...TextButtons,
|
|
279
289
|
];
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
290
|
+
const moreParagraph = [
|
|
291
|
+
...this._buttonsToNames(config.toolbars?.paragraph?.prepend),
|
|
292
|
+
...ParagraphButtons,
|
|
293
|
+
];
|
|
294
|
+
const moreRich = [
|
|
295
|
+
...this._buttonsToNames(config.toolbars?.rich?.prepend),
|
|
296
|
+
...RichButtons,
|
|
297
|
+
];
|
|
298
|
+
const toolbarButtons = merge(ToolbarButtons, {
|
|
299
|
+
moreText: { buttons: moreText },
|
|
300
|
+
moreParagraph: { buttons: moreParagraph },
|
|
301
|
+
moreRich: { buttons: moreRich },
|
|
302
|
+
});
|
|
303
|
+
const froalaOptions = {
|
|
284
304
|
shortcutsEnabled: ['show', 'bold', 'italic', 'underline', 'indent', 'outdent', 'undo', 'redo', 'insertImage', 'createLink'],
|
|
285
305
|
key: config.activationKey,
|
|
286
306
|
placeholderText: config.placeholder,
|
|
@@ -321,35 +341,27 @@ export class FsHtmlEditorComponent {
|
|
|
321
341
|
Double: '2',
|
|
322
342
|
},
|
|
323
343
|
paragraphFormatSelection: true,
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
buttonsVisible: 5,
|
|
346
|
-
},
|
|
347
|
-
moreRich: {
|
|
348
|
-
buttons: RichButtons,
|
|
349
|
-
buttonsVisible: 3,
|
|
350
|
-
},
|
|
351
|
-
},
|
|
352
|
-
}, config.froalaConfig);
|
|
344
|
+
toolbarButtons,
|
|
345
|
+
toolbarButtonsXS: ToolbarXsButtons,
|
|
346
|
+
};
|
|
347
|
+
const options = merge(
|
|
348
|
+
// For some reason editor store somewhere pointer on default config object and dublicate options each time on init
|
|
349
|
+
// Extra merge level fixed this problem and allow to init config properly without legacy data
|
|
350
|
+
{}, froalaOptions, config.froalaConfig, {
|
|
351
|
+
pluginsEnabled: [
|
|
352
|
+
"align" /* FroalaPlugin.Align */,
|
|
353
|
+
"colors" /* FroalaPlugin.Colors */,
|
|
354
|
+
"image" /* FroalaPlugin.Image */,
|
|
355
|
+
"link" /* FroalaPlugin.Link */,
|
|
356
|
+
"lists" /* FroalaPlugin.Lists */,
|
|
357
|
+
"paragraph_format" /* FroalaPlugin.ParagraphFormat */,
|
|
358
|
+
"quote" /* FroalaPlugin.Quote */,
|
|
359
|
+
"table" /* FroalaPlugin.Table */,
|
|
360
|
+
"url" /* FroalaPlugin.Url */,
|
|
361
|
+
"video" /* FroalaPlugin.Video */,
|
|
362
|
+
],
|
|
363
|
+
});
|
|
364
|
+
return options;
|
|
353
365
|
}
|
|
354
366
|
_listenLazyInit() {
|
|
355
367
|
this.froalaLoaded$
|
|
@@ -521,4 +533,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
521
533
|
type: HostBinding,
|
|
522
534
|
args: ['class.initialized']
|
|
523
535
|
}] } });
|
|
524
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixNQUFNLEdBR1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFHOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFDTCxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEdBQzlFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxZQUErQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9B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QUUsZ0JBQWdCOzRCQUN6QixJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQzs0QkFDMUIsVUFBVSxFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNO3lCQUN2QztxQkFDRjs7MEJBbUNFLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMscUJBQXFCOzZHQTlCeEIsbUJBQW1CO3NCQUR6QixZQUFZO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHOUIsWUFBWTtzQkFBaEQsV0FBVzt1QkFBQyxlQUFlO2dCQUVELEtBQUs7c0JBQS9CLFNBQVM7dUJBQUMsT0FBTztnQkFFRixNQUFNO3NCQUFyQixLQUFLO2dCQUlDLFFBQVE7c0JBRmQsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBSXRCLFdBQVc7c0JBRGpCLFdBQVc7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sQ29udGFpbmVyLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nRm9ybSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGd1aWQgfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuaW1wb3J0IHsgRmlsZVByb2Nlc3NvciwgRnNGaWxlLCBGc0ZpbGVQcm9jZXNzQ29uZmlnIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsZSc7XG5cblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnRQYXR0ZXJuLCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgRnJvYWxhRWRpdG9yLCB7IEZyb2FsYU9wdGlvbnMgfSBmcm9tICdmcm9hbGEtZWRpdG9yJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBGU19IVE1MX0VESVRPUl9DT05GSUcgfSBmcm9tICcuLi8uLi9pbmplY3RzL2NvbmZpZy5pbmplY3QnO1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9odG1sLWVkaXRvci1jb25maWcnO1xuaW1wb3J0IHsgRnNGcm9hbGFMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZnJvYWxhLWxvYWRlci5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi8uLi8uLi9jbGFzc2VzL3BsdWdpbic7XG5pbXBvcnQgeyBQYXJhZ3JhcGhCdXR0b25zIH0gZnJvbSAnLi8uLi8uLi9jb25zdHMvcGFyYWdyYXBoLWJ1dHRvbnMuY29uc3QnO1xuaW1wb3J0IHsgUmljaEJ1dHRvbnMgfSBmcm9tICcuLy4uLy4uL2NvbnN0cy9yaWNoLWJ1dHRvbnMuY29uc3QnO1xuaW1wb3J0IHsgVGV4dEJ1dHRvbnMgfSBmcm9tICcuLy4uLy4uL2NvbnN0cy90ZXh0LWJ1dHRvbnMuY29uc3QnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWh0bWwtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2h0bWwtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaHRtbC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGc0h0bWxFZGl0b3JDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNIdG1sRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcbiAgICAgIGRlcHM6IFtbT3B0aW9uYWwsIE5nRm9ybV1dLFxuICAgICAgdXNlRmFjdG9yeTogKG5nRm9ybTogTmdGb3JtKSA9PiBuZ0Zvcm0sXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNIdG1sRWRpdG9yQ29tcG9uZW50IFxuaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIE9uRGVzdHJveSB7XG5cbiAgQENvbnRlbnRDaGlsZChGc0h0bWxFZGl0b3JDb250YWluZXJEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIGh0bWxFZGl0b3JDb250YWluZXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb2N1c2VkJykgcHVibGljIGNsYXNzRm9jdXNlZCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2VsUmVmJykgcHVibGljIGVsUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZyA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKVxuICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmluaXRpYWxpemVkJylcbiAgcHVibGljIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lcklEID0gYGZzLWh0bWwtZWRpdG9yLSR7Z3VpZCgneHh4Jyl9YDtcbiAgcHVibGljIG9uVG91Y2hlZDogKCkgPT4gdm9pZDtcbiAgcHVibGljIG9uQ2hhbmdlOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX2VkaXRvcjogYW55O1xuICBwcml2YXRlIF9odG1sOiBzdHJpbmc7XG4gIHByaXZhdGUgX2luaXRpYWxpemUkID0gbmV3IFJlcGxheVN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfZnJvYWxhUmVhZHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFxuICAgIGNvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnLCBcbiAgICBvcHRpb25zOiBhbnkgXG4gIH0+KG51bGwpO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEZTX0hUTUxfRURJVE9SX0NPTkZJRylcbiAgICBwcml2YXRlIF9kZWZhdWx0Q29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcsXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2ZyOiBGc0Zyb2FsYUxvYWRlclNlcnZpY2UsXG4gICkgeyB9XG5cbiAgcHVibGljIGdldCBlbCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGh0bWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faHRtbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZWRpdG9yKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZnJvYWxhTG9hZGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fZnIubG9hZGVkJDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY29uZmlnIHx8IHt9O1xuICAgIHRoaXMuY29uZmlnLmF1dG9mb2N1cyA9IHRoaXMuY29uZmlnLmF1dG9mb2N1cyAmJiAoIXRoaXMuY29uZmlnLmRpc2FibGVkIHx8ICF0aGlzLmRpc2FibGVkKTtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gIXRoaXMuY29uZmlnLmluaXRPbkNsaWNrO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9saXN0ZW5MYXp5SW5pdCgpO1xuICAgIHRoaXMuX2luaXRpYWxpemUkLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgaGFzQ29udGVudCgpIHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgaWYgKGVsLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBlbC5pbm5lckhUTUwgPSB0aGlzLl9odG1sO1xuXG4gICAgcmV0dXJuICEhZWwuaW5uZXJUZXh0Lmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyB1bmluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUob3B0aW9uczogYW55ID0ge30pIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLl9jcmVhdGVDb25maWcoKTtcbiAgICB0aGlzLl9pbml0UGx1Z2lucyhjb25maWcpO1xuICAgIHRoaXMuX2luaXRCdXR0b25zKGNvbmZpZyk7XG4gICAgdGhpcy5fZWRpdG9yID0gbmV3IEZyb2FsYUVkaXRvcih0aGlzLmVsLCB0aGlzLl9jcmVhdGVPcHRpb25zKCksICgpID0+IHtcbiAgICAgIHRoaXMuX2Zyb2FsYVJlYWR5JC5uZXh0KHsgY29uZmlnLCBvcHRpb25zIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNpemUoKSB7XG4gICAgLy8gSGFjazogVG8gdHJpZ2dlciB0aGUgdG9vbGJhciBidXR0b24gc2l6ZSBtb2Rlc1xuICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCBlcnI6IGFueSA9IHt9O1xuICAgIGlmICh0aGlzLmNvbmZpZy5tYXhMZW5ndGggJiYgdGhpcy5faHRtbCkge1xuICAgICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5jb25maWcubWF4TGVuZ3RoO1xuICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5faHRtbC5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgIGVyci5tYXhMZW5ndGhFcnJvciA9IGBNdXN0IGJlICR7bWF4TGVuZ3RofSBjaGFyYWN0ZXJzIG9yIGZld2VyLiBZb3UgZW50ZXJlZCAke2xlbmd0aH0gY2hhcmFjdGVycy5gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnIpLmxlbmd0aCA/IGVyciA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMob3B0aW9ucz86IHsgY3Vyc29yUG9zaXRpb24/OiAnc3RhcnQnIHwgJ2VuZCcgfSkge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zID8gb3B0aW9ucyA6IHt9O1xuXG4gICAgaWYgKG9wdGlvbnMuY3Vyc29yUG9zaXRpb24gPT09ICdlbmQnKSB7XG4gICAgICB0aGlzLmVkaXRvci5zZWxlY3Rpb24uc2V0QXRFbmQodGhpcy5lZGl0b3IuJGVsLmdldCgwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5zZXRBdFN0YXJ0KHRoaXMuZWRpdG9yLiRlbC5nZXQoMCkpO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5yZXN0b3JlKCk7XG5cbiAgICBjb25zdCBlbFNlbGVjdGlvbiA9IHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5lbGVtZW50KCk7XG4gICAgaWYgKGVsU2VsZWN0aW9uKSB7XG4gICAgICBlbFNlbGVjdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy53cml0ZVZhbHVlKCcnKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlKCkge1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHNldEh0bWwoaHRtbCkge1xuICAgIHRoaXMud3JpdGVWYWx1ZShodG1sKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKGh0bWw6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2h0bWwgPSBodG1sIHx8ICcnO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5faHRtbCkpIHtcbiAgICAgIHRoaXMuX2h0bWwgPSB0aGlzLl9odG1sLnBvcCgpO1xuICAgIH1cblxuICAgIHRoaXMuX2h0bWwgPSB0aGlzLl9odG1sXG4gICAgICAucmVwbGFjZSgvPChsaSk+XFxzPzwoZGl2KT4vZywgJzxsaT4nKVxuICAgICAgLnJlcGxhY2UoLzxcXC8oZGl2KT48XFwvKGxpKT4vZywgJzwvbGk+Jyk7XG5cbiAgICBpZiAodGhpcy5lZGl0b3IgJiYgdGhpcy5lZGl0b3IuaHRtbCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5lZGl0b3IuaHRtbC5zZXQodGhpcy5faHRtbCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoZGF0YTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9pbml0aWFsaXplJC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmVkaXRvcikge1xuICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Byb2Nlc3NJbWFnZVVwbG9hZChibG9iKSB7XG4gICAgY29uc3QgcHJvY2Vzc29yID0gbmV3IEZpbGVQcm9jZXNzb3IoKTtcbiAgICBjb25zdCBmaWxlID0gbmV3IEZzRmlsZShibG9iKTtcblxuICAgIGNvbnN0IGNvbmZpZzogRnNGaWxlUHJvY2Vzc0NvbmZpZyA9IHtcbiAgICAgIG9yaWVudGF0ZTogdHJ1ZSxcbiAgICAgIHF1YWxpdHk6IHRoaXMuY29uZmlnLmltYWdlLnF1YWxpdHksXG4gICAgICBmb3JtYXQ6IHRoaXMuY29uZmlnLmltYWdlLmZvcm1hdCBhcyBhbnksXG4gICAgICBtYXhXaWR0aDogdGhpcy5jb25maWcuaW1hZ2Uud2lkdGgsXG4gICAgICBtYXhIZWlnaHQ6IHRoaXMuY29uZmlnLmltYWdlLmhlaWdodCxcbiAgICAgIG1pbldpZHRoOiB0aGlzLmNvbmZpZy5pbWFnZS5taW5XaWR0aCxcbiAgICAgIG1pbkhlaWdodDogdGhpcy5jb25maWcuaW1hZ2UubWluSGVpZ2h0LFxuICAgIH07XG5cbiAgICByZXR1cm4gcHJvY2Vzc29yLnByb2Nlc3NGaWxlKGZpbGUsIGNvbmZpZylcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGZzRmlsZTogRnNGaWxlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmltYWdlLnVwbG9hZChmc0ZpbGUuZmlsZSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNvbmZpZygpOiBGc0h0bWxFZGl0b3JDb25maWcge1xuICAgIHJldHVybiBtZXJnZSh7IGZyb2FsYUNvbmZpZzoge30gfSwgdGhpcy5fZGVmYXVsdENvbmZpZywgdGhpcy5jb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hhbmdlKGh0bWwpOiB2b2lkIHtcbiAgICB0aGlzLl9odG1sID0gaHRtbDtcbiAgICB0aGlzLm9uQ2hhbmdlKGh0bWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEJ1dHRvbnMoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcpIHtcbiAgICAoY29uZmlnLmJ1dHRvbnMgfHwgW10pXG4gICAgICAuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XG4gICAgICAgIC8qXG4gICAgICAgICAgU3ZnIEtleXM6XG4gICAgICAgICAgW1wiYWRkXCIsIFwiYWR2YW5jZWRJbWFnZUVkaXRvclwiLCBcImFsaWduQ2VudGVyXCIsIFwiYWxpZ25KdXN0aWZ5XCIsIFwiYWxpZ25MZWZ0XCIsIFwiYWxpZ25SaWdodFwiLFxuICAgICAgICAgIFwiYW5jaG9yc1wiLCBcImJhY2tcIiwgXCJiYWNrZ3JvdW5kQ29sb3JcIiwgXCJibG9ja3F1b3RlXCIsIFwiYm9sZFwiLCBcImNlbGxCYWNrZ3JvdW5kXCIsXG4gICAgICAgICAgXCJjZWxsQm9yZGVyQ29sb3JcIiwgXCJjZWxsT3B0aW9uc1wiLCBcImNlbGxTdHlsZVwiLCBcImNsZWFyRm9ybWF0dGluZ1wiLCBcImNsb3NlXCIsIFwiY29kZVZpZXdcIixcbiAgICAgICAgICBcImNvZ3NcIiwgXCJjb2x1bW5zXCIsIFwiZWRpdExpbmtcIiwgXCJleGl0RnVsbHNjcmVlblwiLCBcImZvbnRBd2Vzb21lXCIsIFwiZm9udEZhbWlseVwiLFxuICAgICAgICAgIFwiZm9udFNpemVcIiwgXCJmdWxsc2NyZWVuXCIsIFwiaGVscFwiLCBcImhvcml6b250YWxMaW5lXCIsIFwiaW1hZ2VBbHRUZXh0XCIsIFwiaW1hZ2VDYXB0aW9uXCIsXG4gICAgICAgICAgXCJpbWFnZUNsYXNzXCIsIFwiaW1hZ2VEaXNwbGF5XCIsIFwiaW1hZ2VNYW5hZ2VyXCIsIFwiaW1hZ2VTaXplXCIsIFwiaW5kZW50XCIsIFwiaW5saW5lQ2xhc3NcIixcbiAgICAgICAgICBcImlubGluZVN0eWxlXCIsIFwiaW5zZXJ0RW1iZWRcIiwgXCJpbnNlcnRGaWxlXCIsIFwiaW5zZXJ0SW1hZ2VcIiwgXCJpbnNlcnRMaW5rXCIsIFwiaW5zZXJ0TW9yZVwiLFxuICAgICAgICAgIFwiaW5zZXJ0VGFibGVcIiwgXCJpbnNlcnRWaWRlb1wiLCBcInVwbG9hZFwiLCBcIml0YWxpY1wiLCBcInNlYXJjaFwiLCBcImxpbmVIZWlnaHRcIiwgXCJsaW5rU3R5bGVzXCIsXG4gICAgICAgICAgXCJtZW50aW9uXCIsIFwibW9yZVwiLCBcIm9wZW5MaW5rXCIsIFwib3JkZXJlZExpc3RcIiwgXCJvdXRkZW50XCIsIFwicGFnZUJyZWFrZXJcIixcbiAgICAgICAgICBcInBhcmFncmFwaEZvcm1hdFwiLCBcInBhcmFncmFwaE1vcmVcIiwgXCJwYXJhZ3JhcGhTdHlsZVwiLCBcInBkZkV4cG9ydFwiLCBcInByaW50XCIsXG4gICAgICAgICAgXCJyZWRvXCIsIFwicmVtb3ZlVGFibGVcIiwgXCJyZW1vdmVcIiwgXCJyZXBsYWNlSW1hZ2VcIiwgXCJyb3dcIiwgXCJzZWxlY3RBbGxcIiwgXCJzbWlsZVwiLFxuICAgICAgICAgIFwic3BlbGxjaGVja1wiLCBcInN0YXJcIiwgXCJzdHJpa2VUaHJvdWdoXCIsIFwic3Vic2NyaXB0XCIsIFwic3VwZXJzY3JpcHRcIiwgXCJzeW1ib2xzXCIsIFwidGFnc1wiLFxuICAgICAgICAgIFwidGFibGVIZWFkZXJcIiwgXCJ0YWJsZVN0eWxlXCIsIFwidGV4dENvbG9yXCIsIFwidGV4dE1vcmVcIiwgXCJ1bmRlcmxpbmVcIiwgXCJ1bmRvXCIsIFwidW5saW5rXCIsXG4gICAgICAgICAgXCJ1bm9yZGVyZWRMaXN0XCIsIFwidmVydGljYWxBbGlnbkJvdHRvbVwiLCBcInZlcnRpY2FsQWxpZ25NaWRkbGVcIiwgXCJ2ZXJ0aWNhbEFsaWduVG9wXCJdXG4gICAgICAgICovXG5cbiAgICAgICAgaWYgKGJ1dHRvbi5zdmdLZXkpIHtcbiAgICAgICAgICBGcm9hbGFFZGl0b3IuRGVmaW5lSWNvbihidXR0b24ubmFtZSwgeyBTVkdfS0VZOiBidXR0b24uc3ZnS2V5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgRnJvYWxhRWRpdG9yLlJlZ2lzdGVyQ29tbWFuZChidXR0b24ubmFtZSwge1xuICAgICAgICAgIHRpdGxlOiBidXR0b24udGl0bGUsXG4gICAgICAgICAgZm9jdXM6IGJ1dHRvbi5mb2N1cyA/PyB0cnVlLFxuICAgICAgICAgIHVuZG86IGJ1dHRvbi51bmRvID8/IHRydWUsXG4gICAgICAgICAgcmVmcmVzaEFmdGVyQ2FsbGJhY2s6IGJ1dHRvbi5yZWZyZXNoQWZ0ZXJDYWxsYmFjayA/PyB0cnVlLFxuICAgICAgICAgIGNhbGxiYWNrKCkge1xuICAgICAgICAgICAgYnV0dG9uLmNsaWNrKHRoaXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0UGx1Z2lucyhjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZykge1xuICAgIChjb25maWcucHJlcGVuZFRvb2xiYXJUZXh0QnV0dG9ucyB8fCBbXSlcbiAgICAgIC5mb3JFYWNoKChidXR0b246IFRvb2xiYXJCdXR0b24pID0+IHtcbiAgICAgICAgdGhpcy5fZGVmaW5lQnV0dG9uKGJ1dHRvbik7XG4gICAgICB9KTtcblxuICAgIChjb25maWcucGx1Z2lucyB8fCBbXSkuZm9yRWFjaCgocGx1Z2luOiBQbHVnaW4pID0+IHtcbiAgICAgIEZyb2FsYUVkaXRvci5QTFVHSU5TW3BsdWdpbi5jb25maWcubmFtZV0gPSBmdW5jdGlvbiAoZWRpdG9yKSB7XG4gICAgICAgIHBsdWdpbi5lZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgIHBsdWdpbi5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgcmV0dXJuIHBsdWdpbjtcbiAgICAgIH07XG5cbiAgICAgIChwbHVnaW4uY29uZmlnLmJ1dHRvbnMgfHwgW10pXG4gICAgICAgIC5mb3JFYWNoKChidXR0b246IFRvb2xiYXJCdXR0b24pID0+IHtcbiAgICAgICAgICB0aGlzLl9kZWZpbmVCdXR0b24oYnV0dG9uKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9kZWZpbmVCdXR0b24oYnV0dG9uOiBUb29sYmFyQnV0dG9uKSB7XG4gICAgaWYoYnV0dG9uLmh0bWwpIHtcbiAgICAgIEZyb2FsYUVkaXRvclxuICAgICAgICAuRGVmaW5lSWNvblRlbXBsYXRlKGAke2J1dHRvbi5uYW1lfS10ZW1wbGF0ZWAsIGJ1dHRvbi5odG1sKTtcbiAgICAgIEZyb2FsYUVkaXRvclxuICAgICAgICAuRGVmaW5lSWNvbihidXR0b24ubmFtZSwgeyBcbiAgICAgICAgICBOQU1FOiBgJHtidXR0b24ubmFtZX0taWNvbmAsXG4gICAgICAgICAgdGVtcGxhdGU6IGAke2J1dHRvbi5uYW1lfS10ZW1wbGF0ZWAsIFxuICAgICAgICB9KTtcbiAgXG4gICAgfSBlbHNlIHsgXG4gICAgICBGcm9hbGFFZGl0b3IuRGVmaW5lSWNvbihidXR0b24ubmFtZSwge1xuICAgICAgICBOQU1FOiBidXR0b24ubmFtZSxcbiAgICAgICAgUEFUSDogYnV0dG9uLnN2Z1BhdGgsXG4gICAgICB9KTtcbiAgICB9IFxuXG4gICAgRnJvYWxhRWRpdG9yLlJlZ2lzdGVyQ29tbWFuZChidXR0b24ubmFtZSwge1xuICAgICAgaWNvbjogYnV0dG9uLm5hbWUsXG4gICAgICB0aXRsZTogYnV0dG9uLnRvb2x0aXAsXG4gICAgICB1bmRvOiBidXR0b24udW5kbyxcbiAgICAgIGZvY3VzOiBidXR0b24uZm9jdXMsXG4gICAgICBzaG93T25Nb2JpbGU6IGJ1dHRvbi5zaG93T25Nb2JpbGUsXG4gICAgICByZWZyZXNoQWZ0ZXJDYWxsYmFjazogYnV0dG9uLnJlZnJlc2hBZnRlckNhbGxiYWNrLFxuICAgICAgY2FsbGJhY2soKSB7XG4gICAgICAgIGlmIChidXR0b24uY2xpY2spIHtcbiAgICAgICAgICBidXR0b24uY2xpY2sodGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZWZyZXNoKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5yZWZyZXNoKSB7XG4gICAgICAgICAgZXZlbnQucmVmcmVzaCh0aGlzLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZU9wdGlvbnMoKSB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5fY3JlYXRlQ29uZmlnKCk7XG5cbiAgICBjb25zdCB0ZXh0QnV0dG9ucyA9IFtcbiAgICAgIC4uLihjb25maWcucHJlcGVuZFRvb2xiYXJUZXh0QnV0dG9ucyB8fCBbXSlcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKSxcbiAgICAgIC4uLlRleHRCdXR0b25zLFxuICAgIF07XG5cbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAvLyBGb3Igc29tZSByZWFzb24gZWRpdG9yIHN0b3JlIHNvbWV3aGVyZSBwb2ludGVyIG9uIGRlZmF1bHQgY29uZmlnIG9iamVjdCBhbmQgZHVibGljYXRlIG9wdGlvbnMgZWFjaCB0aW1lIG9uIGluaXRcbiAgICAgIC8vIEV4dHJhIG1lcmdlIGxldmVsIGZpeGVkIHRoaXMgcHJvYmxlbSBhbmQgYWxsb3cgdG8gaW5pdCBjb25maWcgcHJvcGVybHkgd2l0aG91dCBsZWdhY3kgZGF0YVxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIHNob3J0Y3V0c0VuYWJsZWQ6IFsnc2hvdycsICdib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnaW5kZW50JywgJ291dGRlbnQnLCAndW5kbycsICdyZWRvJywgJ2luc2VydEltYWdlJywgJ2NyZWF0ZUxpbmsnXSxcbiAgICAgICAga2V5OiBjb25maWcuYWN0aXZhdGlvbktleSxcbiAgICAgICAgcGxhY2Vob2xkZXJUZXh0OiBjb25maWcucGxhY2Vob2xkZXIsXG4gICAgICAgIGxpbmtBbHdheXNCbGFuazogdHJ1ZSxcbiAgICAgICAgdGFiU3BhY2VzOiAyLFxuICAgICAgICB0b29sYmFyU3RpY2t5OiBmYWxzZSxcbiAgICAgICAgbGlzdEFkdmFuY2VkVHlwZXM6IGZhbHNlLFxuICAgICAgICB0eXBpbmdUaW1lcjogMjUwLFxuICAgICAgICB0b29sdGlwczogZmFsc2UsXG4gICAgICAgIHdvcmRQYXN0ZU1vZGFsOiBmYWxzZSxcbiAgICAgICAgaW1hZ2VEZWZhdWx0V2lkdGg6IDAsXG4gICAgICAgIHBhcmFncmFwaFN0eWxlczoge1xuICAgICAgICAgIGNsYXNzMTogJ0NsYXNzIDEnLFxuICAgICAgICAgIGNsYXNzMjogJ0NsYXNzIDInLFxuICAgICAgICB9LFxuICAgICAgICBpbWFnZURlZmF1bHRBbGlnbjogJ2xlZnQnLFxuICAgICAgICBmb250RmFtaWx5RGVmYXVsdFNlbGVjdGlvbjogJ0ZvbnQgRmFtaWx5JyxcbiAgICAgICAgcXVpY2tJbnNlcnRFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgc2Nyb2xsYWJsZUNvbnRhaW5lcjogYCMke3RoaXMuY29udGFpbmVySUR9YCxcbiAgICAgICAgcGFyYWdyYXBoRGVmYXVsdFNlbGVjdGlvbjogJ0Zvcm1hdCcsXG4gICAgICAgIHZpZGVvVXBsb2FkOiBmYWxzZSxcbiAgICAgICAgaW1hZ2VQYXN0ZTogISFjb25maWcuaW1hZ2U/LnVwbG9hZCxcbiAgICAgICAgaW1hZ2VVcGxvYWQ6ICEhY29uZmlnLmltYWdlPy51cGxvYWQsXG4gICAgICAgIHBhcmFncmFwaEZvcm1hdDoge1xuICAgICAgICAgIE46ICdOb3JtYWwnLFxuICAgICAgICAgIEgxOiAnSGVhZGluZyAxJyxcbiAgICAgICAgICBIMjogJ0hlYWRpbmcgMicsXG4gICAgICAgICAgSDM6ICdIZWFkaW5nIDMnLFxuICAgICAgICAgIEg0OiAnSGVhZGluZyA0JyxcbiAgICAgICAgICBCTE9DS1FVT1RFOiAnUXVvdGUnLFxuICAgICAgICB9LFxuICAgICAgICBsaW5lSGVpZ2h0czoge1xuICAgICAgICAgIERlZmF1bHQ6ICcnLFxuICAgICAgICAgIDAuNTogJzAuNScsXG4gICAgICAgICAgU2luZ2xlOiAnMScsXG4gICAgICAgICAgMS4xNTogJzEuMTUnLFxuICAgICAgICAgIDEuNTogJzEuNScsXG4gICAgICAgICAgRG91YmxlOiAnMicsXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmFncmFwaEZvcm1hdFNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgdG9vbGJhckJ1dHRvbnNYUzoge1xuICAgICAgICAgIG1vcmVUZXh0OiB7XG4gICAgICAgICAgICBidXR0b25zOiB0ZXh0QnV0dG9ucyxcbiAgICAgICAgICAgIGJ1dHRvbnNWaXNpYmxlOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW9yZVBhcmFncmFwaDoge1xuICAgICAgICAgICAgYnV0dG9uczogUGFyYWdyYXBoQnV0dG9ucyxcbiAgICAgICAgICAgIGJ1dHRvbnNWaXNpYmxlOiAyLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW9yZVJpY2g6IHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFJpY2hCdXR0b25zLFxuICAgICAgICAgICAgYnV0dG9uc1Zpc2libGU6IDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdG9vbGJhckJ1dHRvbnM6IHtcbiAgICAgICAgICBtb3JlVGV4dDoge1xuICAgICAgICAgICAgYnV0dG9uczogdGV4dEJ1dHRvbnMsXG4gICAgICAgICAgICBidXR0b25zVmlzaWJsZTogMyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vcmVQYXJhZ3JhcGg6IHtcbiAgICAgICAgICAgIGJ1dHRvbnM6IFBhcmFncmFwaEJ1dHRvbnMsXG4gICAgICAgICAgICBidXR0b25zVmlzaWJsZTogNSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vcmVSaWNoOiB7XG4gICAgICAgICAgICBidXR0b25zOiBSaWNoQnV0dG9ucyxcbiAgICAgICAgICAgIGJ1dHRvbnNWaXNpYmxlOiAzLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIFBhcnRpYWw8RnJvYWxhT3B0aW9ucz4sXG4gICAgICBjb25maWcuZnJvYWxhQ29uZmlnLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5MYXp5SW5pdCgpIHtcbiAgICB0aGlzLmZyb2FsYUxvYWRlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHJlYWR5KSA9PiByZWFkeSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9pbml0aWFsaXplJCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0aW9uOiBhbnkgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgY29uc3Qgb3B0aW9uczogYW55ID0ge307XG4gICAgICAgICAgaWYgKHNlbGVjdGlvbi5iYXNlTm9kZSkge1xuICAgICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICAgIG5vZGU6IHNlbGVjdGlvbi5iYXNlTm9kZS5ub2RlVmFsdWUsXG4gICAgICAgICAgICAgIG9mZnNldDogc2VsZWN0aW9uLmJhc2VPZmZzZXQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmluaXRpYWxpemUob3B0aW9ucyk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fZnJvYWxhUmVhZHkkKSxcbiAgICAgICAgZmlsdGVyKChkYXRhKSA9PiAhIWRhdGEpLFxuICAgICAgICB0YXAoKHsgY29uZmlnIH0pID0+IHtcbiAgICAgICAgICB0aGlzLl9zZXR1cEZyb2FsYShjb25maWcpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnRlbnRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvckhUTUwgPSB0aGlzLl9lZGl0b3IuaHRtbC5nZXQoKTtcblxuICAgIGlmICh0aGlzLmh0bWwgIT09IGVkaXRvckhUTUwpIHtcbiAgICAgIHRoaXMuX2NoYW5nZShlZGl0b3JIVE1MKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cEZyb2FsYShjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5zZXRIdG1sKHRoaXMuX2h0bWwpO1xuXG4gICAgaWYgKGNvbmZpZy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5pbml0aWFsaXplZCkge1xuICAgICAgY29uZmlnLmluaXRpYWxpemVkKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignZm9jdXMnLCAoKSA9PiB7XG4gICAgICB0aGlzLmNsYXNzRm9jdXNlZCA9IHRydWU7XG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2JsdXInLCAoKSA9PiB7XG4gICAgICB0aGlzLmNsYXNzRm9jdXNlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5pbml0T25DbGljayAmJiAhdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBmcm9tRXZlbnRQYXR0ZXJuKFxuICAgICAgKGhhbmRsZXIpID0+IHtcbiAgICAgICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignY29udGVudENoYW5nZWQnLCBoYW5kbGVyKTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vXG4gICAgICB9LFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5faHRtbCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmVkaXRvci5odG1sLmdldCgpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2tpcCgxKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9jb250ZW50Q2hhbmdlZCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdwYXN0ZS5hZnRlckNsZWFudXAnLCAoaHRtbCkgPT4ge1xuICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBkaXYuaW5uZXJIVE1MID0gaHRtbDtcbiAgICAgIGRpdi5xdWVyeVNlbGVjdG9yQWxsKCcqJylcbiAgICAgICAgLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbC5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZWwuYXR0cmlidXRlc1swXS5uYW1lO1xuICAgICAgICAgICAgaWYgKG5hbWUgIT09ICdocmVmJykge1xuICAgICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdrZXlkb3duJywgKCkgPT4ge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5pbWFnZSAmJiB0aGlzLmNvbmZpZy5pbWFnZS51cGxvYWQpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2ltYWdlLmJlZm9yZVBhc3RlVXBsb2FkJywgKGltYWdlKSA9PiB7XG5cbiAgICAgICAgZmV0Y2goaW1hZ2UuZ2V0QXR0cmlidXRlKCdzcmMnKSlcbiAgICAgICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICByZXMuYmxvYigpXG4gICAgICAgICAgICAgIC50aGVuKChibG9iKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0ltYWdlVXBsb2FkKGJsb2IpXG4gICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHVybCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoJ3NyYycsIHVybCk7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1mci1pbWFnZS1wYXN0ZWQnKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb250ZW50Q2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdpbWFnZS5iZWZvcmVVcGxvYWQnLCAoYmxvYnMpID0+IHtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0ltYWdlVXBsb2FkKGJsb2JzWzBdKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgodXJsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5pbWFnZS5pbnNlcnQodXJsLCBudWxsLCBudWxsLCB0aGlzLmVkaXRvci5pbWFnZS5nZXQoKSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWwucXVlcnlTZWxlY3RvcignLmZyLXNlY29uZC10b29sYmFyJykpIHtcbiAgICAgIHRoaXMuZWwucXVlcnlTZWxlY3RvcignLmZyLXNlY29uZC10b29sYmFyJykucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLmF1dG9mb2N1cyAmJiAhdGhpcy5jb25maWcuaW5pdE9uQ2xpY2spIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmcy1sYWJlbC1maWVsZFxuICAgIFthcHBlYXJhbmNlXT1cIidvdXRsaW5lJ1wiXG4gICAgW2hvdmVyYWJsZV09XCJ0cnVlXCJcbiAgICBbc2hvd091dGxpbmVdPVwiaW5pdGlhbGl6ZWRcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3BhZGxlc3NdPVwiY29uZmlnLnBhZGxlc3NcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdpbml0LW9uLWNsaWNrJzogY29uZmlnLmluaXRPbkNsaWNrLFxuICAgICAgJ2luaXRpYWxpemVkJzogaW5pdGlhbGl6ZWRcbiAgICB9XCI+XG4gIEBpZiAoY29uZmlnLmxhYmVsKSB7XG4gICAgPGZzLWxhYmVsPlxuICAgICAge3sgY29uZmlnLmxhYmVsIH19XG4gICAgPC9mcy1sYWJlbD5cbiAgfVxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaHRtbEVkaXRvckNvbnRhaW5lcjsgZWxzZSBodG1sRWRpdG9yQ29udGFpbmVyVG1wbFwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImh0bWxFZGl0b3JDb250YWluZXJcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgdGVtcGxhdGU6IGh0bWxFZGl0b3JDb250YWluZXJUbXBsIH1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjaHRtbEVkaXRvckNvbnRhaW5lclRtcGw+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImh0bWwtZWRpdG9yLWNvbnRhaW5lciBmcy1odG1sLWVkaXRvci1kZWZhdWx0XCJcbiAgICAgICAgW2lkXT1cImNvbnRhaW5lcklEXCI+XG4gICAgICA8bmctY29udGFpbmVyICpmc1NrZWxldG9uPVwiKGZyb2FsYUxvYWRlZCQgfCBhc3luYykgIT09IGZhbHNlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8ZGl2ICNlbFJlZj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPGZzLWxhYmVsLW1lc3NhZ2U+XG4gICAgPGRpdiBjbGFzcz1cImZzLWZvcm0tbWVzc2FnZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWZvcm0taGludFwiPlxuICAgICAgICB7eyBjb25maWcuaGludCB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZnMtbGFiZWwtbWVzc2FnZT5cbjwvZnMtbGFiZWwtZmllbGQ+Il19
|
|
536
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixNQUFNLEdBR1AsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFHOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFDTCxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEdBQzlFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGNB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QUFtQjtzQkFEekIsWUFBWTt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzlCLFlBQVk7c0JBQWhELFdBQVc7dUJBQUMsZUFBZTtnQkFFRCxLQUFLO3NCQUEvQixTQUFTO3VCQUFDLE9BQU87Z0JBRUYsTUFBTTtzQkFBckIsS0FBSztnQkFJQyxRQUFRO3NCQUZkLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUl0QixXQUFXO3NCQURqQixXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbENvbnRhaW5lcixcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBOZ0Zvcm0sXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBndWlkIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcbmltcG9ydCB7IEZpbGVQcm9jZXNzb3IsIEZzRmlsZSwgRnNGaWxlUHJvY2Vzc0NvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbGUnO1xuXG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50UGF0dGVybiwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBza2lwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnJvYWxhT3B0aW9ucyB9IGZyb20gJ2Zyb2FsYS1lZGl0b3InO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBQYXJhZ3JhcGhCdXR0b25zLCBSaWNoQnV0dG9ucywgVG9vbGJhckJ1dHRvbnMsIFRvb2xiYXJYc0J1dHRvbnMgfSBmcm9tICcuLi8uLi9jb25zdHMnO1xuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29udGFpbmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBGcm9hbGFQbHVnaW4gfSBmcm9tICcuLi8uLi9lbnVtcy9kZWZhdWx0LXBsdWdpbi5lbnVtJztcbmltcG9ydCB7IEZTX0hUTUxfRURJVE9SX0NPTkZJRyB9IGZyb20gJy4uLy4uL2luamVjdHMvY29uZmlnLmluamVjdCc7XG5pbXBvcnQgeyBUb29sYmFyQnV0dG9uIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGc0h0bWxFZGl0b3JDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2h0bWwtZWRpdG9yLWNvbmZpZyc7XG5pbXBvcnQgeyBGc0Zyb2FsYUxvYWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mcm9hbGEtbG9hZGVyLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLy4uLy4uL2NsYXNzZXMvcGx1Z2luJztcbmltcG9ydCB7IFRleHRCdXR0b25zIH0gZnJvbSAnLi8uLi8uLi9jb25zdHMvdGV4dC1idXR0b25zLmNvbnN0JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1odG1sLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9odG1sLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2h0bWwtZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRnNIdG1sRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZzSHRtbEVkaXRvckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdmlld1Byb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsXG4gICAgICBkZXBzOiBbW09wdGlvbmFsLCBOZ0Zvcm1dXSxcbiAgICAgIHVzZUZhY3Rvcnk6IChuZ0Zvcm06IE5nRm9ybSkgPT4gbmdGb3JtLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzSHRtbEVkaXRvckNvbXBvbmVudCBcbmltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkRlc3Ryb3kge1xuXG4gIEBDb250ZW50Q2hpbGQoRnNIdG1sRWRpdG9yQ29udGFpbmVyRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHB1YmxpYyBodG1sRWRpdG9yQ29udGFpbmVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpIHB1YmxpYyBjbGFzc0ZvY3VzZWQgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdlbFJlZicpIHB1YmxpYyBlbFJlZjogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcgPSB7fTtcblxuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJylcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbml0aWFsaXplZCcpXG4gIHB1YmxpYyBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb250YWluZXJJRCA9IGBmcy1odG1sLWVkaXRvci0ke2d1aWQoJ3h4eCcpfWA7XG4gIHB1YmxpYyBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XG4gIHB1YmxpYyBvbkNoYW5nZTogKGRhdGE6IGFueSkgPT4gdm9pZDtcblxuICBwcml2YXRlIF9lZGl0b3I6IGFueTtcbiAgcHJpdmF0ZSBfaHRtbDogc3RyaW5nO1xuICBwcml2YXRlIF9pbml0aWFsaXplJCA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2Zyb2FsYVJlYWR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBcbiAgICBjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZywgXG4gICAgb3B0aW9uczogYW55IFxuICB9PihudWxsKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChGU19IVE1MX0VESVRPUl9DT05GSUcpXG4gICAgcHJpdmF0ZSBfZGVmYXVsdENvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9mcjogRnNGcm9hbGFMb2FkZXJTZXJ2aWNlLFxuICApIHsgfVxuXG4gIHB1YmxpYyBnZXQgZWwoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIGdldCBodG1sKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2h0bWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVkaXRvcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9lZGl0b3I7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZyb2FsYUxvYWRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZyLmxvYWRlZCQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLmNvbmZpZyB8fCB7fTtcbiAgICB0aGlzLmNvbmZpZy5hdXRvZm9jdXMgPSB0aGlzLmNvbmZpZy5hdXRvZm9jdXMgJiYgKCF0aGlzLmNvbmZpZy5kaXNhYmxlZCB8fCAhdGhpcy5kaXNhYmxlZCk7XG4gICAgdGhpcy5pbml0aWFsaXplZCA9ICF0aGlzLmNvbmZpZy5pbml0T25DbGljaztcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5fbGlzdGVuTGF6eUluaXQoKTtcbiAgICB0aGlzLl9pbml0aWFsaXplJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGhhc0NvbnRlbnQoKSB7XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblxuICAgIGlmIChlbC5xdWVyeVNlbGVjdG9yKCdpbWcnKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZWwuaW5uZXJIVE1MID0gdGhpcy5faHRtbDtcblxuICAgIHJldHVybiAhIWVsLmlubmVyVGV4dC5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgdW5pbml0aWFsaXplKCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKG9wdGlvbnM6IGFueSA9IHt9KSB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5fY3JlYXRlQ29uZmlnKCk7XG4gICAgdGhpcy5faW5pdFBsdWdpbnMoY29uZmlnKTtcbiAgICB0aGlzLl9pbml0QnV0dG9ucyhjb25maWcpO1xuXG4gICAgY29uc3QgZnJvYWxhT3B0aW9ucyA9IHRoaXMuX2NyZWF0ZU9wdGlvbnMoKTtcbiAgICBcbiAgICB0aGlzLl9lZGl0b3IgPSBuZXcgdGhpcy5fZnIuRnJvYWxhRWRpdG9yKHRoaXMuZWwsIGZyb2FsYU9wdGlvbnMsICgpID0+IHtcbiAgICAgIHRoaXMuX2Zyb2FsYVJlYWR5JC5uZXh0KHsgY29uZmlnLCBvcHRpb25zIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNpemUoKSB7XG4gICAgLy8gSGFjazogVG8gdHJpZ2dlciB0aGUgdG9vbGJhciBidXR0b24gc2l6ZSBtb2Rlc1xuICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBjb25zdCBlcnI6IGFueSA9IHt9O1xuICAgIGlmICh0aGlzLmNvbmZpZy5tYXhMZW5ndGggJiYgdGhpcy5faHRtbCkge1xuICAgICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5jb25maWcubWF4TGVuZ3RoO1xuICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5faHRtbC5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgIGVyci5tYXhMZW5ndGhFcnJvciA9IGBNdXN0IGJlICR7bWF4TGVuZ3RofSBjaGFyYWN0ZXJzIG9yIGZld2VyLiBZb3UgZW50ZXJlZCAke2xlbmd0aH0gY2hhcmFjdGVycy5gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnIpLmxlbmd0aCA/IGVyciA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMob3B0aW9ucz86IHsgY3Vyc29yUG9zaXRpb24/OiAnc3RhcnQnIHwgJ2VuZCcgfSkge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zID8gb3B0aW9ucyA6IHt9O1xuXG4gICAgaWYgKG9wdGlvbnMuY3Vyc29yUG9zaXRpb24gPT09ICdlbmQnKSB7XG4gICAgICB0aGlzLmVkaXRvci5zZWxlY3Rpb24uc2V0QXRFbmQodGhpcy5lZGl0b3IuJGVsLmdldCgwKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5zZXRBdFN0YXJ0KHRoaXMuZWRpdG9yLiRlbC5nZXQoMCkpO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5yZXN0b3JlKCk7XG5cbiAgICBjb25zdCBlbFNlbGVjdGlvbiA9IHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5lbGVtZW50KCk7XG4gICAgaWYgKGVsU2VsZWN0aW9uKSB7XG4gICAgICBlbFNlbGVjdGlvbi5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy53cml0ZVZhbHVlKCcnKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlKCkge1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHNldEh0bWwoaHRtbCkge1xuICAgIHRoaXMud3JpdGVWYWx1ZShodG1sKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKGh0bWw6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2h0bWwgPSBodG1sIHx8ICcnO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5faHRtbCkpIHtcbiAgICAgIHRoaXMuX2h0bWwgPSB0aGlzLl9odG1sLnBvcCgpO1xuICAgIH1cblxuICAgIHRoaXMuX2h0bWwgPSB0aGlzLl9odG1sXG4gICAgICAucmVwbGFjZSgvPChsaSk+XFxzPzwoZGl2KT4vZywgJzxsaT4nKVxuICAgICAgLnJlcGxhY2UoLzxcXC8oZGl2KT48XFwvKGxpKT4vZywgJzwvbGk+Jyk7XG5cbiAgICBpZiAodGhpcy5lZGl0b3IgJiYgdGhpcy5lZGl0b3IuaHRtbCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5lZGl0b3IuaHRtbC5zZXQodGhpcy5faHRtbCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoZGF0YTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9pbml0aWFsaXplJC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmVkaXRvcikge1xuICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Byb2Nlc3NJbWFnZVVwbG9hZChibG9iKSB7XG4gICAgY29uc3QgcHJvY2Vzc29yID0gbmV3IEZpbGVQcm9jZXNzb3IoKTtcbiAgICBjb25zdCBmaWxlID0gbmV3IEZzRmlsZShibG9iKTtcblxuICAgIGNvbnN0IGNvbmZpZzogRnNGaWxlUHJvY2Vzc0NvbmZpZyA9IHtcbiAgICAgIG9yaWVudGF0ZTogdHJ1ZSxcbiAgICAgIHF1YWxpdHk6IHRoaXMuY29uZmlnLmltYWdlLnF1YWxpdHksXG4gICAgICBmb3JtYXQ6IHRoaXMuY29uZmlnLmltYWdlLmZvcm1hdCBhcyBhbnksXG4gICAgICBtYXhXaWR0aDogdGhpcy5jb25maWcuaW1hZ2Uud2lkdGgsXG4gICAgICBtYXhIZWlnaHQ6IHRoaXMuY29uZmlnLmltYWdlLmhlaWdodCxcbiAgICAgIG1pbldpZHRoOiB0aGlzLmNvbmZpZy5pbWFnZS5taW5XaWR0aCxcbiAgICAgIG1pbkhlaWdodDogdGhpcy5jb25maWcuaW1hZ2UubWluSGVpZ2h0LFxuICAgIH07XG5cbiAgICByZXR1cm4gcHJvY2Vzc29yLnByb2Nlc3NGaWxlKGZpbGUsIGNvbmZpZylcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGZzRmlsZTogRnNGaWxlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmltYWdlLnVwbG9hZChmc0ZpbGUuZmlsZSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNvbmZpZygpOiBGc0h0bWxFZGl0b3JDb25maWcge1xuICAgIHJldHVybiBtZXJnZSh7IGZyb2FsYUNvbmZpZzoge30gfSwgdGhpcy5fZGVmYXVsdENvbmZpZywgdGhpcy5jb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hhbmdlKGh0bWwpOiB2b2lkIHtcbiAgICB0aGlzLl9odG1sID0gaHRtbDtcbiAgICB0aGlzLm9uQ2hhbmdlKGh0bWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEJ1dHRvbnMoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcpIHtcbiAgICAoY29uZmlnLmJ1dHRvbnMgfHwgW10pXG4gICAgICAuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XG4gICAgICAgIC8qXG4gICAgICAgICAgU3ZnIEtleXM6XG4gICAgICAgICAgW1wiYWRkXCIsIFwiYWR2YW5jZWRJbWFnZUVkaXRvclwiLCBcImFsaWduQ2VudGVyXCIsIFwiYWxpZ25KdXN0aWZ5XCIsIFwiYWxpZ25MZWZ0XCIsIFwiYWxpZ25SaWdodFwiLFxuICAgICAgICAgIFwiYW5jaG9yc1wiLCBcImJhY2tcIiwgXCJiYWNrZ3JvdW5kQ29sb3JcIiwgXCJibG9ja3F1b3RlXCIsIFwiYm9sZFwiLCBcImNlbGxCYWNrZ3JvdW5kXCIsXG4gICAgICAgICAgXCJjZWxsQm9yZGVyQ29sb3JcIiwgXCJjZWxsT3B0aW9uc1wiLCBcImNlbGxTdHlsZVwiLCBcImNsZWFyRm9ybWF0dGluZ1wiLCBcImNsb3NlXCIsIFwiY29kZVZpZXdcIixcbiAgICAgICAgICBcImNvZ3NcIiwgXCJjb2x1bW5zXCIsIFwiZWRpdExpbmtcIiwgXCJleGl0RnVsbHNjcmVlblwiLCBcImZvbnRBd2Vzb21lXCIsIFwiZm9udEZhbWlseVwiLFxuICAgICAgICAgIFwiZm9udFNpemVcIiwgXCJmdWxsc2NyZWVuXCIsIFwiaGVscFwiLCBcImhvcml6b250YWxMaW5lXCIsIFwiaW1hZ2VBbHRUZXh0XCIsIFwiaW1hZ2VDYXB0aW9uXCIsXG4gICAgICAgICAgXCJpbWFnZUNsYXNzXCIsIFwiaW1hZ2VEaXNwbGF5XCIsIFwiaW1hZ2VNYW5hZ2VyXCIsIFwiaW1hZ2VTaXplXCIsIFwiaW5kZW50XCIsIFwiaW5saW5lQ2xhc3NcIixcbiAgICAgICAgICBcImlubGluZVN0eWxlXCIsIFwiaW5zZXJ0RW1iZWRcIiwgXCJpbnNlcnRGaWxlXCIsIFwiaW5zZXJ0SW1hZ2VcIiwgXCJpbnNlcnRMaW5rXCIsIFwiaW5zZXJ0TW9yZVwiLFxuICAgICAgICAgIFwiaW5zZXJ0VGFibGVcIiwgXCJpbnNlcnRWaWRlb1wiLCBcInVwbG9hZFwiLCBcIml0YWxpY1wiLCBcInNlYXJjaFwiLCBcImxpbmVIZWlnaHRcIiwgXCJsaW5rU3R5bGVzXCIsXG4gICAgICAgICAgXCJtZW50aW9uXCIsIFwibW9yZVwiLCBcIm9wZW5MaW5rXCIsIFwib3JkZXJlZExpc3RcIiwgXCJvdXRkZW50XCIsIFwicGFnZUJyZWFrZXJcIixcbiAgICAgICAgICBcInBhcmFncmFwaEZvcm1hdFwiLCBcInBhcmFncmFwaE1vcmVcIiwgXCJwYXJhZ3JhcGhTdHlsZVwiLCBcInBkZkV4cG9ydFwiLCBcInByaW50XCIsXG4gICAgICAgICAgXCJyZWRvXCIsIFwicmVtb3ZlVGFibGVcIiwgXCJyZW1vdmVcIiwgXCJyZXBsYWNlSW1hZ2VcIiwgXCJyb3dcIiwgXCJzZWxlY3RBbGxcIiwgXCJzbWlsZVwiLFxuICAgICAgICAgIFwic3BlbGxjaGVja1wiLCBcInN0YXJcIiwgXCJzdHJpa2VUaHJvdWdoXCIsIFwic3Vic2NyaXB0XCIsIFwic3VwZXJzY3JpcHRcIiwgXCJzeW1ib2xzXCIsIFwidGFnc1wiLFxuICAgICAgICAgIFwidGFibGVIZWFkZXJcIiwgXCJ0YWJsZVN0eWxlXCIsIFwidGV4dENvbG9yXCIsIFwidGV4dE1vcmVcIiwgXCJ1bmRlcmxpbmVcIiwgXCJ1bmRvXCIsIFwidW5saW5rXCIsXG4gICAgICAgICAgXCJ1bm9yZGVyZWRMaXN0XCIsIFwidmVydGljYWxBbGlnbkJvdHRvbVwiLCBcInZlcnRpY2FsQWxpZ25NaWRkbGVcIiwgXCJ2ZXJ0aWNhbEFsaWduVG9wXCJdXG4gICAgICAgICovXG5cbiAgICAgICAgaWYgKGJ1dHRvbi5zdmdLZXkpIHtcbiAgICAgICAgICB0aGlzLl9mci5Gcm9hbGFFZGl0b3IuRGVmaW5lSWNvbihidXR0b24ubmFtZSwgeyBTVkdfS0VZOiBidXR0b24uc3ZnS2V5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZnIuRnJvYWxhRWRpdG9yLlJlZ2lzdGVyQ29tbWFuZChidXR0b24ubmFtZSwge1xuICAgICAgICAgIHRpdGxlOiBidXR0b24udGl0bGUsXG4gICAgICAgICAgZm9jdXM6IGJ1dHRvbi5mb2N1cyA/PyB0cnVlLFxuICAgICAgICAgIHVuZG86IGJ1dHRvbi51bmRvID8/IHRydWUsXG4gICAgICAgICAgcmVmcmVzaEFmdGVyQ2FsbGJhY2s6IGJ1dHRvbi5yZWZyZXNoQWZ0ZXJDYWxsYmFjayA/PyB0cnVlLFxuICAgICAgICAgIGNhbGxiYWNrKCkge1xuICAgICAgICAgICAgYnV0dG9uLmNsaWNrKHRoaXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0VG9vbGJhckJ1dHRvbnMoYnV0dG9ucykge1xuICAgIChidXR0b25zIHx8IFtdKVxuICAgICAgLmZpbHRlcigoYnV0dG9uKSA9PiB0eXBlb2YgYnV0dG9uICE9PSAnc3RyaW5nJylcbiAgICAgIC5mb3JFYWNoKChidXR0b246IFRvb2xiYXJCdXR0b24pID0+IHtcbiAgICAgICAgdGhpcy5fZGVmaW5lQnV0dG9uKGJ1dHRvbik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRQbHVnaW5zKGNvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnKSB7XG4gICAgdGhpcy5faW5pdFRvb2xiYXJCdXR0b25zKGNvbmZpZy50b29sYmFycz8udGV4dD8ucHJlcGVuZCk7XG4gICAgdGhpcy5faW5pdFRvb2xiYXJCdXR0b25zKGNvbmZpZy50b29sYmFycz8ucGFyYWdyYXBoPy5wcmVwZW5kKTtcbiAgICB0aGlzLl9pbml0VG9vbGJhckJ1dHRvbnMoY29uZmlnLnRvb2xiYXJzPy5yaWNoPy5wcmVwZW5kKTtcblxuICAgIChjb25maWcucGx1Z2lucyB8fCBbXSkuZm9yRWFjaCgocGx1Z2luOiBQbHVnaW4pID0+IHtcbiAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvci5QTFVHSU5TW3BsdWdpbi5jb25maWcubmFtZV0gPSBmdW5jdGlvbiAoZWRpdG9yKSB7XG4gICAgICAgIHBsdWdpbi5lZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgIHBsdWdpbi5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgcmV0dXJuIHBsdWdpbjtcbiAgICAgIH07XG5cbiAgICAgIChwbHVnaW4uY29uZmlnLmJ1dHRvbnMgfHwgW10pXG4gICAgICAgIC5mb3JFYWNoKChidXR0b246IFRvb2xiYXJCdXR0b24pID0+IHtcbiAgICAgICAgICB0aGlzLl9kZWZpbmVCdXR0b24oYnV0dG9uKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9kZWZpbmVCdXR0b24oYnV0dG9uOiBUb29sYmFyQnV0dG9uKSB7XG4gICAgaWYoYnV0dG9uLmh0bWwpIHtcbiAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvclxuICAgICAgICAuRGVmaW5lSWNvblRlbXBsYXRlKGAke2J1dHRvbi5uYW1lfS10ZW1wbGF0ZWAsIGJ1dHRvbi5odG1sKTtcbiAgICAgIHRoaXMuX2ZyLkZyb2FsYUVkaXRvclxuICAgICAgICAuRGVmaW5lSWNvbihidXR0b24ubmFtZSwgeyBcbiAgICAgICAgICBOQU1FOiBgJHtidXR0b24ubmFtZX0taWNvbmAsXG4gICAgICAgICAgdGVtcGxhdGU6IGAke2J1dHRvbi5uYW1lfS10ZW1wbGF0ZWAsIFxuICAgICAgICB9KTtcbiAgXG4gICAgfSBlbHNlIHsgXG4gICAgICB0aGlzLl9mci5Gcm9hbGFFZGl0b3IuRGVmaW5lSWNvbihidXR0b24ubmFtZSwge1xuICAgICAgICBOQU1FOiBidXR0b24ubmFtZSxcbiAgICAgICAgUEFUSDogYnV0dG9uLnN2Z1BhdGgsXG4gICAgICB9KTtcbiAgICB9IFxuXG4gICAgdGhpcy5fZnIuRnJvYWxhRWRpdG9yLlJlZ2lzdGVyQ29tbWFuZChidXR0b24ubmFtZSwge1xuICAgICAgaWNvbjogYnV0dG9uLm5hbWUsXG4gICAgICB0aXRsZTogYnV0dG9uLnRvb2x0aXAsXG4gICAgICB1bmRvOiBidXR0b24udW5kbyxcbiAgICAgIGZvY3VzOiBidXR0b24uZm9jdXMsXG4gICAgICBzaG93T25Nb2JpbGU6IGJ1dHRvbi5zaG93T25Nb2JpbGUsXG4gICAgICByZWZyZXNoQWZ0ZXJDYWxsYmFjazogYnV0dG9uLnJlZnJlc2hBZnRlckNhbGxiYWNrLFxuICAgICAgY2FsbGJhY2soKSB7XG4gICAgICAgIGlmIChidXR0b24uY2xpY2spIHtcbiAgICAgICAgICBidXR0b24uY2xpY2sodGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZWZyZXNoKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5yZWZyZXNoKSB7XG4gICAgICAgICAgZXZlbnQucmVmcmVzaCh0aGlzLCBldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgfVxuXG4gIHByaXZhdGUgX2J1dHRvbnNUb05hbWVzKGJ1dHRvbnMpIHtcbiAgICByZXR1cm4gKGJ1dHRvbnMgfHwgW10pXG4gICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbS5uYW1lO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVPcHRpb25zKCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuX2NyZWF0ZUNvbmZpZygpO1xuXG4gICAgY29uc3QgbW9yZVRleHQgPSBbXG4gICAgICAuLi50aGlzLl9idXR0b25zVG9OYW1lcyhjb25maWcudG9vbGJhcnM/LnRleHQ/LnByZXBlbmQpLFxuICAgICAgLi4uVGV4dEJ1dHRvbnMsXG4gICAgXTtcbiAgICBcbiAgICBjb25zdCBtb3JlUGFyYWdyYXBoID0gW1xuICAgICAgLi4udGhpcy5fYnV0dG9uc1RvTmFtZXMoY29uZmlnLnRvb2xiYXJzPy5wYXJhZ3JhcGg/LnByZXBlbmQpLFxuICAgICAgLi4uUGFyYWdyYXBoQnV0dG9ucyxcbiAgICBdO1xuICAgIFxuICAgIGNvbnN0IG1vcmVSaWNoID0gW1xuICAgICAgLi4udGhpcy5fYnV0dG9uc1RvTmFtZXMoY29uZmlnLnRvb2xiYXJzPy5yaWNoPy5wcmVwZW5kKSxcbiAgICAgIC4uLlJpY2hCdXR0b25zLFxuICAgIF07XG5cbiAgICBjb25zdCB0b29sYmFyQnV0dG9ucyA9IG1lcmdlKFRvb2xiYXJCdXR0b25zLCB7IFxuICAgICAgbW9yZVRleHQ6IHsgYnV0dG9uczogbW9yZVRleHQgfSxcbiAgICAgIG1vcmVQYXJhZ3JhcGg6IHsgYnV0dG9uczogbW9yZVBhcmFncmFwaCB9LFxuICAgICAgbW9yZVJpY2g6IHsgYnV0dG9uczogbW9yZVJpY2ggfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGZyb2FsYU9wdGlvbnM6IFBhcnRpYWw8RnJvYWxhT3B0aW9ucz4gPSB7XG4gICAgICBzaG9ydGN1dHNFbmFibGVkOiBbJ3Nob3cnLCAnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ2luZGVudCcsICdvdXRkZW50JywgJ3VuZG8nLCAncmVkbycsICdpbnNlcnRJbWFnZScsICdjcmVhdGVMaW5rJ10sXG4gICAgICBrZXk6IGNvbmZpZy5hY3RpdmF0aW9uS2V5LFxuICAgICAgcGxhY2Vob2xkZXJUZXh0OiBjb25maWcucGxhY2Vob2xkZXIsXG4gICAgICBsaW5rQWx3YXlzQmxhbms6IHRydWUsXG4gICAgICB0YWJTcGFjZXM6IDIsXG4gICAgICB0b29sYmFyU3RpY2t5OiBmYWxzZSxcbiAgICAgIGxpc3RBZHZhbmNlZFR5cGVzOiBmYWxzZSxcbiAgICAgIHR5cGluZ1RpbWVyOiAyNTAsXG4gICAgICB0b29sdGlwczogZmFsc2UsXG4gICAgICB3b3JkUGFzdGVNb2RhbDogZmFsc2UsXG4gICAgICBpbWFnZURlZmF1bHRXaWR0aDogMCxcbiAgICAgIHBhcmFncmFwaFN0eWxlczoge1xuICAgICAgICBjbGFzczE6ICdDbGFzcyAxJyxcbiAgICAgICAgY2xhc3MyOiAnQ2xhc3MgMicsXG4gICAgICB9LFxuICAgICAgaW1hZ2VEZWZhdWx0QWxpZ246ICdsZWZ0JyxcbiAgICAgIGZvbnRGYW1pbHlEZWZhdWx0U2VsZWN0aW9uOiAnRm9udCBGYW1pbHknLFxuICAgICAgcXVpY2tJbnNlcnRFbmFibGVkOiBmYWxzZSxcbiAgICAgIHNjcm9sbGFibGVDb250YWluZXI6IGAjJHt0aGlzLmNvbnRhaW5lcklEfWAsXG4gICAgICBwYXJhZ3JhcGhEZWZhdWx0U2VsZWN0aW9uOiAnRm9ybWF0JyxcbiAgICAgIHZpZGVvVXBsb2FkOiBmYWxzZSxcbiAgICAgIGltYWdlUGFzdGU6ICEhY29uZmlnLmltYWdlPy51cGxvYWQsXG4gICAgICBpbWFnZVVwbG9hZDogISFjb25maWcuaW1hZ2U/LnVwbG9hZCxcbiAgICAgIHBhcmFncmFwaEZvcm1hdDoge1xuICAgICAgICBOOiAnTm9ybWFsJyxcbiAgICAgICAgSDE6ICdIZWFkaW5nIDEnLFxuICAgICAgICBIMjogJ0hlYWRpbmcgMicsXG4gICAgICAgIEgzOiAnSGVhZGluZyAzJyxcbiAgICAgICAgSDQ6ICdIZWFkaW5nIDQnLFxuICAgICAgICBCTE9DS1FVT1RFOiAnUXVvdGUnLFxuICAgICAgfSxcbiAgICAgIGxpbmVIZWlnaHRzOiB7XG4gICAgICAgIERlZmF1bHQ6ICcnLFxuICAgICAgICAwLjU6ICcwLjUnLFxuICAgICAgICBTaW5nbGU6ICcxJyxcbiAgICAgICAgMS4xNTogJzEuMTUnLFxuICAgICAgICAxLjU6ICcxLjUnLFxuICAgICAgICBEb3VibGU6ICcyJyxcbiAgICAgIH0sXG4gICAgICBwYXJhZ3JhcGhGb3JtYXRTZWxlY3Rpb246IHRydWUsXG4gICAgICB0b29sYmFyQnV0dG9ucyxcbiAgICAgIHRvb2xiYXJCdXR0b25zWFM6IFRvb2xiYXJYc0J1dHRvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSBtZXJnZShcbiAgICAgIC8vIEZvciBzb21lIHJlYXNvbiBlZGl0b3Igc3RvcmUgc29tZXdoZXJlIHBvaW50ZXIgb24gZGVmYXVsdCBjb25maWcgb2JqZWN0IGFuZCBkdWJsaWNhdGUgb3B0aW9ucyBlYWNoIHRpbWUgb24gaW5pdFxuICAgICAgLy8gRXh0cmEgbWVyZ2UgbGV2ZWwgZml4ZWQgdGhpcyBwcm9ibGVtIGFuZCBhbGxvdyB0byBpbml0IGNvbmZpZyBwcm9wZXJseSB3aXRob3V0IGxlZ2FjeSBkYXRhXG4gICAgICB7fSxcbiAgICAgIGZyb2FsYU9wdGlvbnMsXG4gICAgICBjb25maWcuZnJvYWxhQ29uZmlnLFxuICAgICAgeyBcbiAgICAgICAgcGx1Z2luc0VuYWJsZWQ6IFtcbiAgICAgICAgICBGcm9hbGFQbHVnaW4uQWxpZ24sXG4gICAgICAgICAgRnJvYWxhUGx1Z2luLkNvbG9ycyxcbiAgICAgICAgICBGcm9hbGFQbHVnaW4uSW1hZ2UsXG4gICAgICAgICAgRnJvYWxhUGx1Z2luLkxpbmssXG4gICAgICAgICAgRnJvYWxhUGx1Z2luLkxpc3RzLFxuICAgICAgICAgIEZyb2FsYVBsdWdpbi5QYXJhZ3JhcGhGb3JtYXQsXG4gICAgICAgICAgRnJvYWxhUGx1Z2luLlF1b3RlLFxuICAgICAgICAgIEZyb2FsYVBsdWdpbi5UYWJsZSxcbiAgICAgICAgICBGcm9hbGFQbHVnaW4uVXJsLFxuICAgICAgICAgIEZyb2FsYVBsdWdpbi5WaWRlbyxcbiAgICAgICAgXSwgXG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkxhenlJbml0KCkge1xuICAgIHRoaXMuZnJvYWxhTG9hZGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigocmVhZHkpID0+IHJlYWR5KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX2luaXRpYWxpemUkKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzZWxlY3Rpb246IGFueSA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7fTtcbiAgICAgICAgICBpZiAoc2VsZWN0aW9uLmJhc2VOb2RlKSB7XG4gICAgICAgICAgICBvcHRpb25zLnNlbGVjdGlvbiA9IHtcbiAgICAgICAgICAgICAgbm9kZTogc2VsZWN0aW9uLmJhc2VOb2RlLm5vZGVWYWx1ZSxcbiAgICAgICAgICAgICAgb2Zmc2V0OiBzZWxlY3Rpb24uYmFzZU9mZnNldCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZShvcHRpb25zKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9mcm9hbGFSZWFkeSQpLFxuICAgICAgICBmaWx0ZXIoKGRhdGEpID0+ICEhZGF0YSksXG4gICAgICAgIHRhcCgoeyBjb25maWcgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3NldHVwRnJvYWxhKGNvbmZpZyk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29udGVudENoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9ySFRNTCA9IHRoaXMuX2VkaXRvci5odG1sLmdldCgpO1xuXG4gICAgaWYgKHRoaXMuaHRtbCAhPT0gZWRpdG9ySFRNTCkge1xuICAgICAgdGhpcy5fY2hhbmdlKGVkaXRvckhUTUwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwRnJvYWxhKGNvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG5cbiAgICB0aGlzLnNldEh0bWwodGhpcy5faHRtbCk7XG5cbiAgICBpZiAoY29uZmlnLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmluaXRpYWxpemVkKSB7XG4gICAgICBjb25maWcuaW5pdGlhbGl6ZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdmb2N1cycsICgpID0+IHtcbiAgICAgIHRoaXMuY2xhc3NGb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignYmx1cicsICgpID0+IHtcbiAgICAgIHRoaXMuY2xhc3NGb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29uZmlnLmluaXRPbkNsaWNrICYmICF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGZyb21FdmVudFBhdHRlcm4oXG4gICAgICAoaGFuZGxlcikgPT4ge1xuICAgICAgICB0aGlzLl9lZGl0b3IuZXZlbnRzLm9uKCdjb250ZW50Q2hhbmdlZCcsIGhhbmRsZXIpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy9cbiAgICAgIH0sXG4gICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLl9odG1sKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuZWRpdG9yLmh0bWwuZ2V0KCkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBza2lwKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRDaGFuZ2VkKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ3Bhc3RlLmFmdGVyQ2xlYW51cCcsIChodG1sKSA9PiB7XG4gICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGRpdi5pbm5lckhUTUwgPSBodG1sO1xuICAgICAgZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoJyonKVxuICAgICAgICAuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBlbC5hdHRyaWJ1dGVzWzBdLm5hbWU7XG4gICAgICAgICAgICBpZiAobmFtZSAhPT0gJ2hyZWYnKSB7XG4gICAgICAgICAgICAgIGVsLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZGl2LmlubmVySFRNTDtcbiAgICB9KTtcblxuICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2tleWRvd24nLCAoKSA9PiB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLmltYWdlICYmIHRoaXMuY29uZmlnLmltYWdlLnVwbG9hZCkge1xuICAgICAgdGhpcy5fZWRpdG9yLmV2ZW50cy5vbignaW1hZ2UuYmVmb3JlUGFzdGVVcGxvYWQnLCAoaW1hZ2UpID0+IHtcblxuICAgICAgICBmZXRjaChpbWFnZS5nZXRBdHRyaWJ1dGUoJ3NyYycpKVxuICAgICAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIHJlcy5ibG9iKClcbiAgICAgICAgICAgICAgLnRoZW4oKGJsb2IpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzSW1hZ2VVcGxvYWQoYmxvYilcbiAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZSgnc3JjJywgdXJsKTtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2UucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWZyLWltYWdlLXBhc3RlZCcpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRDaGFuZ2VkKCk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2VkaXRvci5ldmVudHMub24oJ2ltYWdlLmJlZm9yZVVwbG9hZCcsIChibG9icykgPT4ge1xuICAgICAgICB0aGlzLl9wcm9jZXNzSW1hZ2VVcGxvYWQoYmxvYnNbMF0pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCh1cmwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yLmltYWdlLmluc2VydCh1cmwsIG51bGwsIG51bGwsIHRoaXMuZWRpdG9yLmltYWdlLmdldCgpKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbC5xdWVyeVNlbGVjdG9yKCcuZnItc2Vjb25kLXRvb2xiYXInKSkge1xuICAgICAgdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCcuZnItc2Vjb25kLXRvb2xiYXInKS5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuYXV0b2ZvY3VzICYmICF0aGlzLmNvbmZpZy5pbml0T25DbGljaykge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGZzLWxhYmVsLWZpZWxkXG4gICAgW2FwcGVhcmFuY2VdPVwiJ291dGxpbmUnXCJcbiAgICBbaG92ZXJhYmxlXT1cInRydWVcIlxuICAgIFtzaG93T3V0bGluZV09XCJpbml0aWFsaXplZFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcGFkbGVzc109XCJjb25maWcucGFkbGVzc1wiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2luaXQtb24tY2xpY2snOiBjb25maWcuaW5pdE9uQ2xpY2ssXG4gICAgICAnaW5pdGlhbGl6ZWQnOiBpbml0aWFsaXplZFxuICAgIH1cIj5cbiAgQGlmIChjb25maWcubGFiZWwpIHtcbiAgICA8ZnMtbGFiZWw+XG4gICAgICB7eyBjb25maWcubGFiZWwgfX1cbiAgICA8L2ZzLWxhYmVsPlxuICB9XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJodG1sRWRpdG9yQ29udGFpbmVyOyBlbHNlIGh0bWxFZGl0b3JDb250YWluZXJUbXBsXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaHRtbEVkaXRvckNvbnRhaW5lclwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0ZW1wbGF0ZTogaHRtbEVkaXRvckNvbnRhaW5lclRtcGwgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNodG1sRWRpdG9yQ29udGFpbmVyVG1wbD5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaHRtbC1lZGl0b3ItY29udGFpbmVyIGZzLWh0bWwtZWRpdG9yLWRlZmF1bHRcIlxuICAgICAgICBbaWRdPVwiY29udGFpbmVySURcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmZzU2tlbGV0b249XCIoZnJvYWxhTG9hZGVkJCB8IGFzeW5jKSAhPT0gZmFsc2VcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXYgI2VsUmVmPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8ZnMtbGFiZWwtbWVzc2FnZT5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1tZXNzYWdlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1oaW50XCI+XG4gICAgICAgIHt7IGNvbmZpZy5oaW50IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mcy1sYWJlbC1tZXNzYWdlPlxuPC9mcy1sYWJlbC1maWVsZD4iXX0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './paragraph-buttons.const';
|
|
2
|
+
export * from './rich-buttons.const';
|
|
3
|
+
export * from './text-buttons.const';
|
|
4
|
+
export * from './toolbar-buttons.const';
|
|
5
|
+
export * from './toolbar-xs-buttons.const';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvY29uc3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGFyYWdyYXBoLWJ1dHRvbnMuY29uc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9yaWNoLWJ1dHRvbnMuY29uc3QnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0LWJ1dHRvbnMuY29uc3QnO1xuZXhwb3J0ICogZnJvbSAnLi90b29sYmFyLWJ1dHRvbnMuY29uc3QnO1xuZXhwb3J0ICogZnJvbSAnLi90b29sYmFyLXhzLWJ1dHRvbnMuY29uc3QnO1xuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ParagraphButtons } from './paragraph-buttons.const';
|
|
2
|
+
import { RichButtons } from './rich-buttons.const';
|
|
3
|
+
import { TextButtons } from './text-buttons.const';
|
|
4
|
+
export const ToolbarButtons = {
|
|
5
|
+
moreText: {
|
|
6
|
+
buttons: TextButtons,
|
|
7
|
+
buttonsVisible: 3,
|
|
8
|
+
},
|
|
9
|
+
moreParagraph: {
|
|
10
|
+
buttons: ParagraphButtons,
|
|
11
|
+
buttonsVisible: 5,
|
|
12
|
+
},
|
|
13
|
+
moreRich: {
|
|
14
|
+
buttons: RichButtons,
|
|
15
|
+
buttonsVisible: 3,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1idXR0b25zLmNvbnN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbnN0cy90b29sYmFyLWJ1dHRvbnMuY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFLFdBQVc7UUFDcEIsY0FBYyxFQUFFLENBQUM7S0FDbEI7SUFDRCxhQUFhLEVBQUU7UUFDYixPQUFPLEVBQUUsZ0JBQWdCO1FBQ3pCLGNBQWMsRUFBRSxDQUFDO0tBQ2xCO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFLFdBQVc7UUFDcEIsY0FBYyxFQUFFLENBQUM7S0FDbEI7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFyYWdyYXBoQnV0dG9ucyB9IGZyb20gJy4vcGFyYWdyYXBoLWJ1dHRvbnMuY29uc3QnO1xuaW1wb3J0IHsgUmljaEJ1dHRvbnMgfSBmcm9tICcuL3JpY2gtYnV0dG9ucy5jb25zdCc7XG5pbXBvcnQgeyBUZXh0QnV0dG9ucyB9IGZyb20gJy4vdGV4dC1idXR0b25zLmNvbnN0JztcbmV4cG9ydCBjb25zdCBUb29sYmFyQnV0dG9ucyA9IHtcbiAgbW9yZVRleHQ6IHtcbiAgICBidXR0b25zOiBUZXh0QnV0dG9ucyxcbiAgICBidXR0b25zVmlzaWJsZTogMyxcbiAgfSxcbiAgbW9yZVBhcmFncmFwaDoge1xuICAgIGJ1dHRvbnM6IFBhcmFncmFwaEJ1dHRvbnMsXG4gICAgYnV0dG9uc1Zpc2libGU6IDUsXG4gIH0sXG4gIG1vcmVSaWNoOiB7XG4gICAgYnV0dG9uczogUmljaEJ1dHRvbnMsXG4gICAgYnV0dG9uc1Zpc2libGU6IDMsXG4gIH0sXG59O1xuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ParagraphButtons } from './paragraph-buttons.const';
|
|
2
|
+
import { RichButtons } from './rich-buttons.const';
|
|
3
|
+
import { TextButtons } from './text-buttons.const';
|
|
4
|
+
export const ToolbarXsButtons = {
|
|
5
|
+
moreText: {
|
|
6
|
+
buttons: TextButtons,
|
|
7
|
+
buttonsVisible: 2,
|
|
8
|
+
},
|
|
9
|
+
moreParagraph: {
|
|
10
|
+
buttons: ParagraphButtons,
|
|
11
|
+
buttonsVisible: 2,
|
|
12
|
+
},
|
|
13
|
+
moreRich: {
|
|
14
|
+
buttons: RichButtons,
|
|
15
|
+
buttonsVisible: 1,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci14cy1idXR0b25zLmNvbnN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbnN0cy90b29sYmFyLXhzLWJ1dHRvbnMuY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUUsV0FBVztRQUNwQixjQUFjLEVBQUUsQ0FBQztLQUNsQjtJQUNELGFBQWEsRUFBRTtRQUNiLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsY0FBYyxFQUFFLENBQUM7S0FDbEI7SUFDRCxRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUUsV0FBVztRQUNwQixjQUFjLEVBQUUsQ0FBQztLQUNsQjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXJhZ3JhcGhCdXR0b25zIH0gZnJvbSAnLi9wYXJhZ3JhcGgtYnV0dG9ucy5jb25zdCc7XG5pbXBvcnQgeyBSaWNoQnV0dG9ucyB9IGZyb20gJy4vcmljaC1idXR0b25zLmNvbnN0JztcbmltcG9ydCB7IFRleHRCdXR0b25zIH0gZnJvbSAnLi90ZXh0LWJ1dHRvbnMuY29uc3QnO1xuZXhwb3J0IGNvbnN0IFRvb2xiYXJYc0J1dHRvbnMgPSB7XG4gIG1vcmVUZXh0OiB7XG4gICAgYnV0dG9uczogVGV4dEJ1dHRvbnMsXG4gICAgYnV0dG9uc1Zpc2libGU6IDIsXG4gIH0sXG4gIG1vcmVQYXJhZ3JhcGg6IHtcbiAgICBidXR0b25zOiBQYXJhZ3JhcGhCdXR0b25zLFxuICAgIGJ1dHRvbnNWaXNpYmxlOiAyLFxuICB9LFxuICBtb3JlUmljaDoge1xuICAgIGJ1dHRvbnM6IFJpY2hCdXR0b25zLFxuICAgIGJ1dHRvbnNWaXNpYmxlOiAxLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3ItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2ludGVyZmFjZXMvaHRtbC1lZGl0b3ItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cblxuaW1wb3J0ICogYXMgRnJvYWxhRWRpdG9yIGZyb20gJ2Zyb2FsYS1lZGl0b3InO1xuXG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLi9jbGFzc2VzL3BsdWdpbic7XG5pbXBvcnQgeyBGcm9hbGFQbHVnaW4gfSBmcm9tICcuLi9lbnVtcy9kZWZhdWx0LXBsdWdpbi5lbnVtJztcblxuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiB9IGZyb20gJy4vdG9vbGJhci1idXR0b24nO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNIdG1sRWRpdG9yQ29uZmlnIHtcbiAgaW1hZ2U/OiBGc0h0bWxFZGl0b3JVcGxvYWRDb25maWc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBoaW50Pzogc3RyaW5nO1xuICBjaGFuZ2U/OiAoZGF0YT8pID0+IHZvaWQ7XG4gIGluaXRPbkNsaWNrPzogYm9vbGVhbjtcbiAgaW5pdENsaWNrPzogKGV2ZW50PzogVUlFdmVudCkgPT4gdm9pZDtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgYXV0b2ZvY3VzPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBhY3RpdmF0aW9uS2V5PzogYW55O1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBwbHVnaW5zPzogUGx1Z2luW107XG4gIHBhZGxlc3M/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3ItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2ludGVyZmFjZXMvaHRtbC1lZGl0b3ItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cblxuaW1wb3J0ICogYXMgRnJvYWxhRWRpdG9yIGZyb20gJ2Zyb2FsYS1lZGl0b3InO1xuXG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLi9jbGFzc2VzL3BsdWdpbic7XG5pbXBvcnQgeyBGcm9hbGFQbHVnaW4gfSBmcm9tICcuLi9lbnVtcy9kZWZhdWx0LXBsdWdpbi5lbnVtJztcblxuaW1wb3J0IHsgVG9vbGJhckJ1dHRvbiB9IGZyb20gJy4vdG9vbGJhci1idXR0b24nO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNIdG1sRWRpdG9yQ29uZmlnIHtcbiAgaW1hZ2U/OiBGc0h0bWxFZGl0b3JVcGxvYWRDb25maWc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBoaW50Pzogc3RyaW5nO1xuICBjaGFuZ2U/OiAoZGF0YT8pID0+IHZvaWQ7XG4gIGluaXRPbkNsaWNrPzogYm9vbGVhbjtcbiAgaW5pdENsaWNrPzogKGV2ZW50PzogVUlFdmVudCkgPT4gdm9pZDtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgYXV0b2ZvY3VzPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBhY3RpdmF0aW9uS2V5PzogYW55O1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBwbHVnaW5zPzogUGx1Z2luW107XG4gIHBhZGxlc3M/OiBib29sZWFuO1xuICBmcm9hbGFQbHVnaW5zPzogRnJvYWxhUGx1Z2luW107XG4gIGZyb2FsYUNvbmZpZz86ICBQYXJ0aWFsPEZyb2FsYUVkaXRvci5Gcm9hbGFPcHRpb25zPjtcbiAgYXNzZXRzSlNQYXRoPzogc3RyaW5nO1xuICBhc3NldHNDU1NQYXRoPzogc3RyaW5nO1xuICBidXR0b25zPzogVG9vbGJhckJ1dHRvbltdO1xuICBpbml0aWFsaXplZD86ICgpID0+IHZvaWQ7XG4gIHRvb2xiYXJzPzoge1xuICAgIHRleHQ/OiB7XG4gICAgICBwcmVwZW5kPzogKHN0cmluZyB8IFRvb2xiYXJCdXR0b24pW107XG4gICAgfSxcbiAgICBwYXJhZ3JhcGg/OiB7XG4gICAgICBwcmVwZW5kPzogKHN0cmluZyB8IFRvb2xiYXJCdXR0b24pW107XG4gICAgfSxcbiAgICByaWNoPzoge1xuICAgICAgcHJlcGVuZD86IChzdHJpbmcgfCBUb29sYmFyQnV0dG9uKVtdO1xuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGc0h0bWxFZGl0b3JVcGxvYWRDb25maWcge1xuICB3aWR0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgaGVpZ2h0PzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBxdWFsaXR5PzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBmb3JtYXQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIG1pbldpZHRoPzogbnVtYmVyO1xuICBtaW5IZWlnaHQ/OiBudW1iZXI7XG4gIHVwbG9hZD86IChmaWxlOiBCbG9iKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG59XG4iXX0=
|