@eui/components 17.0.2-snapshot-1702478232432 → 17.0.2-snapshot-1702484869277

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/docs/components/EuiEditorComponent.html +26 -2
  2. package/docs/components/QuillEditorComponent.html +13 -1
  3. package/docs/dependencies.html +2 -2
  4. package/docs/index.html +2 -2
  5. package/docs/injectables/LoaderService.html +273 -0
  6. package/docs/interfaces/QuillDynamicConfig.html +272 -0
  7. package/docs/js/menu-wc.js +198 -171
  8. package/docs/js/menu-wc_es5.js +1 -1
  9. package/docs/js/search/search_index.js +2 -2
  10. package/docs/miscellaneous/variables.html +62 -15
  11. package/docs/modules/EuiAlertModule.html +28 -4
  12. package/docs/modules/EuiAppSidebarModule.html +28 -4
  13. package/docs/modules/EuiAppToolbarModule.html +28 -4
  14. package/docs/modules/EuiAvatarModule.html +28 -4
  15. package/docs/modules/EuiChartsModule.html +28 -4
  16. package/docs/modules/EuiHeaderModule.html +28 -4
  17. package/docs/modules/EuiPageModule.html +28 -4
  18. package/docs/modules/EuiSidebarMenuModule.html +28 -4
  19. package/docs/modules/EuiSkeletonModule.html +28 -4
  20. package/docs/modules/EuiToolbarModule.html +28 -4
  21. package/docs/modules/EuiUserProfileModule.html +28 -4
  22. package/docs/modules/QuillModule.html +9 -1
  23. package/esm2022/externals/eui-editor/eui-editor.component.mjs +67 -58
  24. package/esm2022/externals/eui-editor/eui-editor.module.mjs +9 -5
  25. package/esm2022/externals/eui-editor/json-view/eui-editor-json-view.component.mjs +3 -2
  26. package/esm2022/externals/quill/index.mjs +2 -1
  27. package/esm2022/externals/quill/loader.service.mjs +128 -0
  28. package/esm2022/externals/quill/quill-editor.component.mjs +134 -112
  29. package/esm2022/externals/quill/quill-editor.interfaces.mjs +2 -1
  30. package/esm2022/externals/quill/quill.module.mjs +10 -4
  31. package/externals/eui-editor/eui-editor.component.d.ts +6 -3
  32. package/externals/eui-editor/eui-editor.component.d.ts.map +1 -1
  33. package/externals/eui-editor/eui-editor.module.d.ts.map +1 -1
  34. package/externals/eui-editor/json-view/eui-editor-json-view.component.d.ts.map +1 -1
  35. package/externals/quill/index.d.ts +1 -0
  36. package/externals/quill/index.d.ts.map +1 -1
  37. package/externals/quill/loader.service.d.ts +18 -0
  38. package/externals/quill/loader.service.d.ts.map +1 -0
  39. package/externals/quill/quill-editor.component.d.ts +4 -1
  40. package/externals/quill/quill-editor.component.d.ts.map +1 -1
  41. package/externals/quill/quill-editor.interfaces.d.ts +5 -0
  42. package/externals/quill/quill-editor.interfaces.d.ts.map +1 -1
  43. package/externals/quill/quill.module.d.ts +5 -1
  44. package/externals/quill/quill.module.d.ts.map +1 -1
  45. package/fesm2022/eui-components-externals-eui-editor.mjs +81 -67
  46. package/fesm2022/eui-components-externals-eui-editor.mjs.map +1 -1
  47. package/fesm2022/eui-components-externals-quill.mjs +268 -116
  48. package/fesm2022/eui-components-externals-quill.mjs.map +1 -1
  49. package/package.json +53 -53
@@ -1,5 +1,5 @@
1
1
  import { isPlatformServer } from '@angular/common';
2
- import { QUILL_CONFIG_TOKEN } from './quill-editor.interfaces';
2
+ import { QUILL_CONFIG_TOKEN, } from './quill-editor.interfaces';
3
3
  import { Component, EventEmitter, forwardRef, Inject, Input, Output, PLATFORM_ID, SecurityContext, ViewEncapsulation, } from '@angular/core';
4
4
  import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
5
5
  import { DOCUMENT } from '@angular/common';
@@ -7,6 +7,7 @@ import { defaultModules } from './quill-defaults';
7
7
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/platform-browser";
10
+ import * as i2 from "./loader.service";
10
11
  const getFormat = (format, configFormat) => {
11
12
  const passedFormat = format || configFormat;
12
13
  return passedFormat || 'html';
@@ -44,7 +45,7 @@ export class QuillEditorComponent {
44
45
  }
45
46
  constructor(elementRef, domSanitizer, doc,
46
47
  // eslint-disable-next-line @typescript-eslint/ban-types
47
- platformId, renderer, zone, config) {
48
+ platformId, renderer, zone, config, loader) {
48
49
  this.elementRef = elementRef;
49
50
  this.domSanitizer = domSanitizer;
50
51
  this.doc = doc;
@@ -52,6 +53,8 @@ export class QuillEditorComponent {
52
53
  this.renderer = renderer;
53
54
  this.zone = zone;
54
55
  this.config = config;
56
+ this.loader = loader;
57
+ this.loaded = false;
55
58
  this.customToolbarPosition = 'top';
56
59
  this.styles = null;
57
60
  this.customOptions = [];
@@ -169,117 +172,136 @@ export class QuillEditorComponent {
169
172
  // eslint-disable-next-line no-empty, no-empty-function, @typescript-eslint/no-empty-function, @typescript-eslint/explicit-function-return-type
170
173
  onModelTouched() { }
171
174
  ngAfterViewInit() {
172
- if (isPlatformServer(this.platformId)) {
173
- return;
174
- }
175
- if (!Quill) {
176
- // Quill = require('quill')
177
- Quill = window['Quill'];
178
- }
179
- this.overrideScrollBehavior(Quill);
180
- this.elementRef.nativeElement.insertAdjacentHTML(this.customToolbarPosition === 'top' ? 'beforeend' : 'afterbegin', this.preserveWhitespace ? '<pre quill-editor-element></pre>' : '<div quill-editor-element></div>');
181
- this.editorElem = this.elementRef.nativeElement.querySelector('[quill-editor-element]');
182
- const toolbarElem = this.elementRef.nativeElement.querySelector('[quill-editor-toolbar]');
183
- let modules = this.modules || this.config.modules || defaultModules;
184
- if (modules.toolbar === undefined) {
185
- modules.toolbar = defaultModules.toolbar;
186
- }
187
- let placeholder = this.placeholder !== undefined ? this.placeholder : this.config.placeholder;
188
- if (placeholder === undefined) {
189
- placeholder = 'Insert text here ...';
190
- }
191
- if (toolbarElem) {
192
- // eslint-disable-next-line dot-notation,@typescript-eslint/dot-notation
193
- modules['toolbar'] = toolbarElem;
194
- }
195
- if (!this.hasImageFeature) {
196
- modules['uploader'] = { handler: () => false };
197
- }
198
- else {
199
- modules['uploader'] = { mimetypes: ['image/png', 'image/jpeg'] };
200
- }
201
- if (this.styles) {
202
- Object.keys(this.styles).forEach((key) => {
203
- this.renderer.setStyle(this.editorElem, key, this.styles[key]);
204
- });
205
- }
206
- this.customOptions.forEach((customOption) => {
207
- const newCustomOption = Quill.import(customOption.import);
208
- newCustomOption.whitelist = customOption.whitelist;
209
- Quill.register(newCustomOption, true);
210
- });
211
- let bounds = this.bounds && this.bounds === 'self' ? this.editorElem : this.bounds;
212
- if (!bounds) {
213
- bounds = this.config.bounds ? this.config.bounds : this.doc.body;
214
- }
215
- let debug = this.debug;
216
- if (!debug && debug !== false && this.config.debug) {
217
- debug = this.config.debug;
218
- }
219
- let readOnly = this.readOnly;
220
- if (!readOnly && this.readOnly !== false) {
221
- readOnly = this.config.readOnly !== undefined ? this.config.readOnly : false;
222
- }
223
- let scrollingContainer = this.scrollingContainer;
224
- if (!scrollingContainer && this.scrollingContainer !== null) {
225
- scrollingContainer =
226
- this.config.scrollingContainer === null || this.config.scrollingContainer ? this.config.scrollingContainer : null;
227
- }
228
- let formats = this.formats;
229
- if (!formats && formats === undefined) {
230
- formats = this.config.formats || this.config.formats === null ? this.config.formats : undefined;
231
- }
232
- Quill.formats = { ...Quill.formats, [this.id]: formats };
233
- if (formats && formats.indexOf('table') !== -1) {
234
- modules = {
235
- ...modules,
236
- 'better-table': false,
237
- };
238
- }
239
- this.quillEditor = new Quill(this.editorElem, {
240
- bounds,
241
- debug,
242
- formats,
243
- modules,
244
- placeholder,
245
- readOnly,
246
- scrollingContainer,
247
- strict: this.strict,
248
- theme: this.theme || (this.config.theme ? this.config.theme : 'snow'),
249
- });
250
- this.quillEditor.container.firstChild.id = this.id;
251
- if (this.content) {
252
- const format = getFormat(this.format, this.config.format);
253
- if (format === 'object') {
254
- this.quillEditor.setContents(this.content, 'silent');
255
- }
256
- else if (format === 'text') {
257
- this.quillEditor.setText(this.content, 'silent');
258
- }
259
- else if (format === 'json') {
260
- try {
261
- this.quillEditor.setContents(JSON.parse(this.content), 'silent');
175
+ // const loader = new LoaderService();
176
+ this.loader.load().subscribe({
177
+ complete: () => {
178
+ // setup keyboard bindings from BetterTable if present
179
+ const QuillBetterTable = window['quillBetterTable'];
180
+ if (QuillBetterTable) {
181
+ // check if already registered
182
+ if (!window['Quill'].imports.hasOwnProperty('modules/better-table')) {
183
+ window['Quill'].register({ 'modules/better-table': QuillBetterTable });
184
+ }
185
+ if (!this.config.modules.keyboard) {
186
+ this.config.modules.keyboard = {
187
+ bindings: QuillBetterTable?.keyboardBindings,
188
+ };
189
+ }
262
190
  }
263
- catch (e) {
264
- this.quillEditor.setText(this.content, 'silent');
191
+ if (isPlatformServer(this.platformId)) {
192
+ return;
265
193
  }
266
- }
267
- else {
268
- if (this.sanitize) {
269
- this.content = this.domSanitizer.sanitize(SecurityContext.HTML, this.content);
194
+ if (!Quill) {
195
+ // Quill = require('quill')
196
+ Quill = window['Quill'];
197
+ }
198
+ this.overrideScrollBehavior(Quill);
199
+ this.loaded = true;
200
+ this.elementRef.nativeElement.insertAdjacentHTML(this.customToolbarPosition === 'top' ? 'beforeend' : 'afterbegin', this.preserveWhitespace ? '<pre quill-editor-element></pre>' : '<div quill-editor-element></div>');
201
+ this.editorElem = this.elementRef.nativeElement.querySelector('[quill-editor-element]');
202
+ const toolbarElem = this.elementRef.nativeElement.querySelector('[quill-editor-toolbar]');
203
+ let modules = this.modules || this.config.modules || defaultModules;
204
+ if (modules.toolbar === undefined) {
205
+ modules.toolbar = defaultModules.toolbar;
206
+ }
207
+ let placeholder = this.placeholder !== undefined ? this.placeholder : this.config.placeholder;
208
+ if (placeholder === undefined) {
209
+ placeholder = 'Insert text here ...';
210
+ }
211
+ if (toolbarElem) {
212
+ // eslint-disable-next-line dot-notation,@typescript-eslint/dot-notation
213
+ modules['toolbar'] = toolbarElem;
214
+ }
215
+ if (!this.hasImageFeature) {
216
+ modules['uploader'] = { handler: () => false };
217
+ }
218
+ else {
219
+ modules['uploader'] = { mimetypes: ['image/png', 'image/jpeg'] };
220
+ }
221
+ if (this.styles) {
222
+ Object.keys(this.styles).forEach((key) => {
223
+ this.renderer.setStyle(this.editorElem, key, this.styles[key]);
224
+ });
225
+ }
226
+ this.customOptions.forEach((customOption) => {
227
+ const newCustomOption = Quill.import(customOption.import);
228
+ newCustomOption.whitelist = customOption.whitelist;
229
+ Quill.register(newCustomOption, true);
230
+ });
231
+ let bounds = this.bounds && this.bounds === 'self' ? this.editorElem : this.bounds;
232
+ if (!bounds) {
233
+ bounds = this.config.bounds ? this.config.bounds : this.doc.body;
234
+ }
235
+ let debug = this.debug;
236
+ if (!debug && debug !== false && this.config.debug) {
237
+ debug = this.config.debug;
238
+ }
239
+ let readOnly = this.readOnly;
240
+ if (!readOnly && this.readOnly !== false) {
241
+ readOnly = this.config.readOnly !== undefined ? this.config.readOnly : false;
242
+ }
243
+ let scrollingContainer = this.scrollingContainer;
244
+ if (!scrollingContainer && this.scrollingContainer !== null) {
245
+ scrollingContainer =
246
+ this.config.scrollingContainer === null || this.config.scrollingContainer ? this.config.scrollingContainer : null;
270
247
  }
271
- const contents = this.quillEditor.clipboard.convert(this.content);
272
- this.quillEditor.setContents(contents, 'silent');
248
+ let formats = this.formats;
249
+ if (!formats && formats === undefined) {
250
+ formats = this.config.formats || this.config.formats === null ? this.config.formats : undefined;
251
+ }
252
+ Quill.formats = { ...Quill.formats, [this.id]: formats };
253
+ if (formats && formats.indexOf('table') !== -1) {
254
+ modules = {
255
+ ...modules,
256
+ 'better-table': false,
257
+ };
258
+ }
259
+ this.quillEditor = new Quill(this.editorElem, {
260
+ bounds,
261
+ debug,
262
+ formats,
263
+ modules,
264
+ placeholder,
265
+ readOnly,
266
+ scrollingContainer,
267
+ strict: this.strict,
268
+ theme: this.theme || (this.config.theme ? this.config.theme : 'snow'),
269
+ });
270
+ this.quillEditor.container.firstChild.id = this.id;
271
+ if (this.content) {
272
+ const format = getFormat(this.format, this.config.format);
273
+ if (format === 'object') {
274
+ this.quillEditor.setContents(this.content, 'silent');
275
+ }
276
+ else if (format === 'text') {
277
+ this.quillEditor.setText(this.content, 'silent');
278
+ }
279
+ else if (format === 'json') {
280
+ try {
281
+ this.quillEditor.setContents(JSON.parse(this.content), 'silent');
282
+ }
283
+ catch (e) {
284
+ this.quillEditor.setText(this.content, 'silent');
285
+ }
286
+ }
287
+ else {
288
+ if (this.sanitize) {
289
+ this.content = this.domSanitizer.sanitize(SecurityContext.HTML, this.content);
290
+ }
291
+ const contents = this.quillEditor.clipboard.convert(this.content);
292
+ this.quillEditor.setContents(contents, 'silent');
293
+ }
294
+ this.quillEditor.history.clear();
295
+ }
296
+ // initialize disabled status based on this.disabled as default value
297
+ this.setDisabledState();
298
+ this.onEditorCreated.emit(this.quillEditor);
299
+ // mark model as touched if editor lost focus
300
+ this.quillEditor.on('selection-change', this.selectionChangeHandler);
301
+ // update model if text changes
302
+ this.quillEditor.on('text-change', this.textChangeHandler);
273
303
  }
274
- this.quillEditor.history.clear();
275
- }
276
- // initialize disabled status based on this.disabled as default value
277
- this.setDisabledState();
278
- this.onEditorCreated.emit(this.quillEditor);
279
- // mark model as touched if editor lost focus
280
- this.quillEditor.on('selection-change', this.selectionChangeHandler);
281
- // update model if text changes
282
- this.quillEditor.on('text-change', this.textChangeHandler);
304
+ });
283
305
  }
284
306
  ngOnDestroy() {
285
307
  if (this.quillEditor) {
@@ -415,7 +437,7 @@ export class QuillEditorComponent {
415
437
  /** register the Scroll override */
416
438
  QuillInstance.register('blots/scroll', Scroll, true);
417
439
  }
418
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: QuillEditorComponent, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: QUILL_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
440
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: QuillEditorComponent, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: QUILL_CONFIG_TOKEN }, { token: i2.LoaderService }], target: i0.ɵɵFactoryTarget.Component }); }
419
441
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: QuillEditorComponent, selector: "quill-editor", inputs: { id: "id", format: "format", theme: "theme", modules: "modules", debug: "debug", placeholder: "placeholder", maxLength: "maxLength", minLength: "minLength", formats: "formats", customToolbarPosition: "customToolbarPosition", styles: "styles", scrollingContainer: "scrollingContainer", bounds: "bounds", customOptions: "customOptions", trackChanges: "trackChanges", hasImageFeature: "hasImageFeature", readOnly: "readOnly", required: "required", sanitize: "sanitize", strict: "strict", preserveWhitespace: "preserveWhitespace", valueGetter: "valueGetter", valueSetter: "valueSetter" }, outputs: { onEditorCreated: "onEditorCreated", onContentChanged: "onContentChanged", onSelectionChanged: "onSelectionChanged", onFocus: "onFocus", onBlur: "onBlur" }, providers: [
420
442
  {
421
443
  multi: true,
@@ -458,7 +480,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
458
480
  }] }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: undefined, decorators: [{
459
481
  type: Inject,
460
482
  args: [QUILL_CONFIG_TOKEN]
461
- }] }], propDecorators: { id: [{
483
+ }] }, { type: i2.LoaderService }], propDecorators: { id: [{
462
484
  type: Input
463
485
  }], format: [{
464
486
  type: Input
@@ -515,4 +537,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
515
537
  }], valueSetter: [{
516
538
  type: Input
517
539
  }] } });
518
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2V4dGVybmFscy9xdWlsbC9xdWlsbC1lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBMEMsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RyxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sV0FBVyxFQUVYLGVBQWUsRUFFZixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUF3QixhQUFhLEVBQUUsaUJBQWlCLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxELE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBZTVFLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBb0IsRUFBRSxZQUEwQixFQUFlLEVBQUU7SUFDaEYsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLFlBQVksQ0FBQztJQUM1QyxPQUFPLFlBQVksSUFBSSxNQUFNLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBb0JGLE1BQU0sT0FBTyxvQkFBb0I7SUF1QzdCLElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBbUI7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJ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ZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IFFVSUxMX0NPTkZJR19UT0tFTiwgUXVpbGxDb25maWcsIFF1aWxsRm9ybWF0LCBRdWlsbE1vZHVsZXMgfSBmcm9tICcuL3F1aWxsLWVkaXRvci5pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNlY3VyaXR5Q29udGV4dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGRlZmF1bHRNb2R1bGVzIH0gZnJvbSAnLi9xdWlsbC1kZWZhdWx0cyc7XG5pbXBvcnQgeyBDb250ZW50Q2hhbmdlLCBFZGl0b3JDaGFuZ2VDb250ZW50LCBTZWxlY3Rpb25DaGFuZ2UsIFJhbmdlIH0gZnJvbSAnLi9tb2RlbHMvZWRpdG9yLm1vZGVsJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuLy8gQmVjYXVzZSBxdWlsbCB1c2VzIGBkb2N1bWVudGAgZGlyZWN0bHksIHdlIGNhbm5vdCBgaW1wb3J0YCBkdXJpbmcgU1NSXG4vLyBpbnN0ZWFkLCB3ZSBsb2FkIGR5bmFtaWNhbGx5IHZpYSBgcmVxdWlyZSgncXVpbGwnKWAgaW4gYG5nQWZ0ZXJWaWV3SW5pdCgpYFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZhclxuZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZhclxuZGVjbGFyZSB2YXIgUXVpbGw6IGFueTtcbi8vIGxldCBRdWlsbDogYW55ID0gd2luZG93WydRdWlsbCddO1xuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbU9wdGlvbiB7XG4gICAgaW1wb3J0OiBzdHJpbmc7XG4gICAgd2hpdGVsaXN0OiBhbnlbXTtcbn1cblxuY29uc3QgZ2V0Rm9ybWF0ID0gKGZvcm1hdD86IFF1aWxsRm9ybWF0LCBjb25maWdGb3JtYXQ/OiBRdWlsbEZvcm1hdCk6IFF1aWxsRm9ybWF0ID0+IHtcbiAgICBjb25zdCBwYXNzZWRGb3JtYXQgPSBmb3JtYXQgfHwgY29uZmlnRm9ybWF0O1xuICAgIHJldHVybiBwYXNzZWRGb3JtYXQgfHwgJ2h0bWwnO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFF1aWxsRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUXVpbGxFZGl0b3JDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ3F1aWxsLWVkaXRvcicsXG4gICAgdGVtcGxhdGU6IGAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3F1aWxsLWVkaXRvci10b29sYmFyXVwiPjwvbmctY29udGVudD4gYCxcbn0pXG5leHBvcnQgY2xhc3MgUXVpbGxFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFZhbGlkYXRvciB7XG4gICAgcXVpbGxFZGl0b3I6IGFueTtcbiAgICBlZGl0b3JFbGVtOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBjb250ZW50OiBhbnk7XG5cbiAgICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGZvcm1hdD86ICdvYmplY3QnIHwgJ2h0bWwnIHwgJ3RleHQnIHwgJ2pzb24nO1xuICAgIEBJbnB1dCgpIHRoZW1lPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1vZHVsZXM/OiBRdWlsbE1vZHVsZXM7XG4gICAgQElucHV0KCkgZGVidWc/OiAnd2FybicgfCAnbG9nJyB8ICdlcnJvcicgfCBmYWxzZTtcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBASW5wdXQoKSBtYXhMZW5ndGg/OiBudW1iZXI7XG4gICAgQElucHV0KCkgbWluTGVuZ3RoPzogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGZvcm1hdHM/OiBzdHJpbmdbXSB8IG51bGw7XG4gICAgQElucHV0KCkgY3VzdG9tVG9vbGJhclBvc2l0aW9uOiAndG9wJyB8ICdib3R0b20nID0gJ3RvcCc7XG4gICAgQElucHV0KCkgc3R5bGVzOiBhbnkgPSBudWxsO1xuICAgIEBJbnB1dCgpIHNjcm9sbGluZ0NvbnRhaW5lcj86IEhUTUxFbGVtZW50IHwgc3RyaW5nIHwgbnVsbDtcbiAgICBASW5wdXQoKSBib3VuZHM/OiBIVE1MRWxlbWVudCB8IHN0cmluZztcbiAgICBASW5wdXQoKSBjdXN0b21PcHRpb25zOiBDdXN0b21PcHRpb25bXSA9IFtdO1xuICAgIEBJbnB1dCgpIHRyYWNrQ2hhbmdlcz86ICd1c2VyJyB8ICdhbGwnO1xuICAgIEBJbnB1dCgpIGhhc0ltYWdlRmVhdHVyZTogYm9vbGVhbjtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkVkaXRvckNyZWF0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkNvbnRlbnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q29udGVudENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFNlbGVjdGlvbkNoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGVkaXRvcjogYW55O1xuICAgICAgICBzb3VyY2U6IHN0cmluZztcbiAgICB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBlZGl0b3I6IGFueTtcbiAgICAgICAgc291cmNlOiBzdHJpbmc7XG4gICAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCByZWFkT25seSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5O1xuICAgIH1cbiAgICBzZXQgcmVhZE9ubHkodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9yZWFkT25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3JlYWRPbmx5PzogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cbiAgICBzZXQgcmVxdWlyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgc2FuaXRpemUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZTtcbiAgICB9XG4gICAgc2V0IHNhbml0aXplKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fc2FuaXRpemUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zYW5pdGl6ZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHN0cmljdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0cmljdDtcbiAgICB9XG4gICAgc2V0IHN0cmljdCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3N0cmljdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3N0cmljdCA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBnZXQgcHJlc2VydmVXaGl0ZXNwYWNlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJlc2VydmVXaGl0ZXNwYWNlO1xuICAgIH1cbiAgICBzZXQgcHJlc2VydmVXaGl0ZXNwYWNlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fcHJlc2VydmVXaGl0ZXNwYWNlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcHJlc2VydmVXaGl0ZXNwYWNlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGRpc2FibGVkID0gZmFsc2U7IC8vIHVzZWQgdG8gc3RvcmUgaW5pdGlhbCB2YWx1ZSBiZWZvcmUgVmlld0luaXRcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jOiBhbnksXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KFFVSUxMX0NPTkZJR19UT0tFTikgcHJpdmF0ZSBjb25maWc6IFF1aWxsQ29uZmlnXG4gICAgKSB7fVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LG5vLWVtcHR5LWZ1bmN0aW9uLEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlXG4gICAgb25Nb2RlbENoYW5nZShfbW9kZWxWYWx1ZT86IGFueSkge31cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHksIG5vLWVtcHR5LWZ1bmN0aW9uLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24sIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZVxuICAgIG9uTW9kZWxUb3VjaGVkKCkge31cblxuICAgIEBJbnB1dCgpXG4gICAgdmFsdWVHZXR0ZXIgPSAocXVpbGxFZGl0b3I6IGFueSwgZWRpdG9yRWxlbWVudDogSFRNTEVsZW1lbnQpOiBzdHJpbmcgfCBhbnkgPT4ge1xuICAgICAgICBsZXQgaHRtbDogc3RyaW5nIHwgbnVsbCA9IGVkaXRvckVsZW1lbnQucXVlcnlTZWxlY3RvcignLnFsLWVkaXRvcicpPy5pbm5lckhUTUw7XG4gICAgICAgIGlmIChodG1sID09PSAnPHA+PGJyPjwvcD4nIHx8IGh0bWwgPT09ICc8ZGl2Pjxicj48ZGl2PicpIHtcbiAgICAgICAgICAgIGh0bWwgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBtb2RlbFZhbHVlID0gaHRtbDtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gZ2V0Rm9ybWF0KHRoaXMuZm9ybWF0LCB0aGlzLmNvbmZpZy5mb3JtYXQpO1xuXG4gICAgICAgIGlmIChmb3JtYXQgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgbW9kZWxWYWx1ZSA9IHF1aWxsRWRpdG9yLmdldFRleHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBtb2RlbFZhbHVlID0gcXVpbGxFZGl0b3IuZ2V0Q29udGVudHMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBtb2RlbFZhbHVlID0gSlNPTi5zdHJpbmdpZnkocXVpbGxFZGl0b3IuZ2V0Q29udGVudHMoKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgbW9kZWxWYWx1ZSA9IHF1aWxsRWRpdG9yLmdldFRleHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtb2RlbFZhbHVlO1xuICAgIH07XG5cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlU2V0dGVyID0gKHF1aWxsRWRpdG9yOiBhbnksIHZhbHVlOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBnZXRGb3JtYXQodGhpcy5mb3JtYXQsIHRoaXMuY29uZmlnLmZvcm1hdCk7XG4gICAgICAgIGlmIChmb3JtYXQgPT09ICdodG1sJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2FuaXRpemUpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuZG9tU2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcXVpbGxFZGl0b3IuY2xpcGJvYXJkLmNvbnZlcnQoeyBodG1sOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt7IGluc2VydDogdmFsdWUgfV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1TZXJ2ZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghUXVpbGwpIHtcbiAgICAgICAgICAgIC8vIFF1aWxsID0gcmVxdWlyZSgncXVpbGwnKVxuICAgICAgICAgICAgUXVpbGwgPSB3aW5kb3dbJ1F1aWxsJ107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vdmVycmlkZVNjcm9sbEJlaGF2aW9yKFF1aWxsKTtcblxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbnNlcnRBZGphY2VudEhUTUwoXG4gICAgICAgICAgICB0aGlzLmN1c3RvbVRvb2xiYXJQb3NpdGlvbiA9PT0gJ3RvcCcgPyAnYmVmb3JlZW5kJyA6ICdhZnRlcmJlZ2luJyxcbiAgICAgICAgICAgIHRoaXMucHJlc2VydmVXaGl0ZXNwYWNlID8gJzxwcmUgcXVpbGwtZWRpdG9yLWVsZW1lbnQ+PC9wcmU+JyA6ICc8ZGl2IHF1aWxsLWVkaXRvci1lbGVtZW50PjwvZGl2PidcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmVkaXRvckVsZW0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbcXVpbGwtZWRpdG9yLWVsZW1lbnRdJyk7XG5cbiAgICAgICAgY29uc3QgdG9vbGJhckVsZW0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbcXVpbGwtZWRpdG9yLXRvb2xiYXJdJyk7XG4gICAgICAgIGxldCBtb2R1bGVzID0gdGhpcy5tb2R1bGVzIHx8IHRoaXMuY29uZmlnLm1vZHVsZXMgfHwgZGVmYXVsdE1vZHVsZXM7XG4gICAgICAgIGlmIChtb2R1bGVzLnRvb2xiYXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbW9kdWxlcy50b29sYmFyID0gZGVmYXVsdE1vZHVsZXMudG9vbGJhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXIgIT09IHVuZGVmaW5lZCA/IHRoaXMucGxhY2Vob2xkZXIgOiB0aGlzLmNvbmZpZy5wbGFjZWhvbGRlcjtcbiAgICAgICAgaWYgKHBsYWNlaG9sZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyID0gJ0luc2VydCB0ZXh0IGhlcmUgLi4uJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b29sYmFyRWxlbSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRvdC1ub3RhdGlvbixAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uXG4gICAgICAgICAgICBtb2R1bGVzWyd0b29sYmFyJ10gPSB0b29sYmFyRWxlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5oYXNJbWFnZUZlYXR1cmUpIHtcbiAgICAgICAgICAgIG1vZHVsZXNbJ3VwbG9hZGVyJ10gPSB7IGhhbmRsZXI6ICgpID0+IGZhbHNlIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtb2R1bGVzWyd1cGxvYWRlciddID0geyBtaW1ldHlwZXM6IFsnaW1hZ2UvcG5nJywgJ2ltYWdlL2pwZWcnXSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3R5bGVzKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnN0eWxlcykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWRpdG9yRWxlbSwga2V5LCB0aGlzLnN0eWxlc1trZXldKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXN0b21PcHRpb25zLmZvckVhY2goKGN1c3RvbU9wdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Q3VzdG9tT3B0aW9uID0gUXVpbGwuaW1wb3J0KGN1c3RvbU9wdGlvbi5pbXBvcnQpO1xuICAgICAgICAgICAgbmV3Q3VzdG9tT3B0aW9uLndoaXRlbGlzdCA9IGN1c3RvbU9wdGlvbi53aGl0ZWxpc3Q7XG4gICAgICAgICAgICBRdWlsbC5yZWdpc3RlcihuZXdDdXN0b21PcHRpb24sIHRydWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgYm91bmRzID0gdGhpcy5ib3VuZHMgJiYgdGhpcy5ib3VuZHMgPT09ICdzZWxmJyA/IHRoaXMuZWRpdG9yRWxlbSA6IHRoaXMuYm91bmRzO1xuICAgICAgICBpZiAoIWJvdW5kcykge1xuICAgICAgICAgICAgYm91bmRzID0gdGhpcy5jb25maWcuYm91bmRzID8gdGhpcy5jb25maWcuYm91bmRzIDogdGhpcy5kb2MuYm9keTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkZWJ1ZyA9IHRoaXMuZGVidWc7XG4gICAgICAgIGlmICghZGVidWcgJiYgZGVidWcgIT09IGZhbHNlICYmIHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICBkZWJ1ZyA9IHRoaXMuY29uZmlnLmRlYnVnO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlYWRPbmx5ID0gdGhpcy5yZWFkT25seTtcbiAgICAgICAgaWYgKCFyZWFkT25seSAmJiB0aGlzLnJlYWRPbmx5ICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgcmVhZE9ubHkgPSB0aGlzLmNvbmZpZy5yZWFkT25seSAhPT0gdW5kZWZpbmVkID8gdGhpcy5jb25maWcucmVhZE9ubHkgOiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzY3JvbGxpbmdDb250YWluZXIgPSB0aGlzLnNjcm9sbGluZ0NvbnRhaW5lcjtcbiAgICAgICAgaWYgKCFzY3JvbGxpbmdDb250YWluZXIgJiYgdGhpcy5zY3JvbGxpbmdDb250YWluZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHNjcm9sbGluZ0NvbnRhaW5lciA9XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2Nyb2xsaW5nQ29udGFpbmVyID09PSBudWxsIHx8IHRoaXMuY29uZmlnLnNjcm9sbGluZ0NvbnRhaW5lciA/IHRoaXMuY29uZmlnLnNjcm9sbGluZ0NvbnRhaW5lciA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZm9ybWF0cyA9IHRoaXMuZm9ybWF0cztcbiAgICAgICAgaWYgKCFmb3JtYXRzICYmIGZvcm1hdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZm9ybWF0cyA9IHRoaXMuY29uZmlnLmZvcm1hdHMgfHwgdGhpcy5jb25maWcuZm9ybWF0cyA9PT0gbnVsbCA/IHRoaXMuY29uZmlnLmZvcm1hdHMgOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgUXVpbGwuZm9ybWF0cyA9IHsgLi4uUXVpbGwuZm9ybWF0cywgW3RoaXMuaWRdOiBmb3JtYXRzIH07XG5cbiAgICAgICAgaWYgKGZvcm1hdHMgJiYgZm9ybWF0cy5pbmRleE9mKCd0YWJsZScpICE9PSAtMSkge1xuICAgICAgICAgICAgbW9kdWxlcyA9IHtcbiAgICAgICAgICAgICAgICAuLi5tb2R1bGVzLFxuICAgICAgICAgICAgICAgICdiZXR0ZXItdGFibGUnOiBmYWxzZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucXVpbGxFZGl0b3IgPSBuZXcgUXVpbGwodGhpcy5lZGl0b3JFbGVtLCB7XG4gICAgICAgICAgICBib3VuZHMsXG4gICAgICAgICAgICBkZWJ1ZyxcbiAgICAgICAgICAgIGZvcm1hdHMsXG4gICAgICAgICAgICBtb2R1bGVzLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICAgICAgICByZWFkT25seSxcbiAgICAgICAgICAgIHNjcm9sbGluZ0NvbnRhaW5lcixcbiAgICAgICAgICAgIHN0cmljdDogdGhpcy5zdHJpY3QsXG4gICAgICAgICAgICB0aGVtZTogdGhpcy50aGVtZSB8fCAodGhpcy5jb25maWcudGhlbWUgPyB0aGlzLmNvbmZpZy50aGVtZSA6ICdzbm93JyksXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLmNvbnRhaW5lci5maXJzdENoaWxkLmlkID0gdGhpcy5pZDtcblxuICAgICAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXQgPSBnZXRGb3JtYXQodGhpcy5mb3JtYXQsIHRoaXMuY29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0Q29udGVudHModGhpcy5jb250ZW50LCAnc2lsZW50Jyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5zZXRUZXh0KHRoaXMuY29udGVudCwgJ3NpbGVudCcpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0Q29udGVudHMoSlNPTi5wYXJzZSh0aGlzLmNvbnRlbnQpLCAnc2lsZW50Jyk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldFRleHQodGhpcy5jb250ZW50LCAnc2lsZW50Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zYW5pdGl6ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmRvbVNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgdGhpcy5jb250ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudHMgPSB0aGlzLnF1aWxsRWRpdG9yLmNsaXBib2FyZC5jb252ZXJ0KHRoaXMuY29udGVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5zZXRDb250ZW50cyhjb250ZW50cywgJ3NpbGVudCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLmhpc3RvcnkuY2xlYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGluaXRpYWxpemUgZGlzYWJsZWQgc3RhdHVzIGJhc2VkIG9uIHRoaXMuZGlzYWJsZWQgYXMgZGVmYXVsdCB2YWx1ZVxuICAgICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUoKTtcblxuICAgICAgICB0aGlzLm9uRWRpdG9yQ3JlYXRlZC5lbWl0KHRoaXMucXVpbGxFZGl0b3IpO1xuXG4gICAgICAgIC8vIG1hcmsgbW9kZWwgYXMgdG91Y2hlZCBpZiBlZGl0b3IgbG9zdCBmb2N1c1xuICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLm9uKCdzZWxlY3Rpb24tY2hhbmdlJywgdGhpcy5zZWxlY3Rpb25DaGFuZ2VIYW5kbGVyKTtcblxuICAgICAgICAvLyB1cGRhdGUgbW9kZWwgaWYgdGV4dCBjaGFuZ2VzXG4gICAgICAgIHRoaXMucXVpbGxFZGl0b3Iub24oJ3RleHQtY2hhbmdlJywgdGhpcy50ZXh0Q2hhbmdlSGFuZGxlcik7XG4gICAgfVxuXG4gICAgc2VsZWN0aW9uQ2hhbmdlSGFuZGxlciA9IChyYW5nZTogUmFuZ2UgfCBudWxsLCBvbGRSYW5nZTogUmFuZ2UgfCBudWxsLCBzb3VyY2U6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChyYW5nZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25CbHVyLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMucXVpbGxFZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob2xkUmFuZ2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvcjogdGhpcy5xdWlsbEVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMucXVpbGxFZGl0b3IsXG4gICAgICAgICAgICAgICAgb2xkUmFuZ2UsXG4gICAgICAgICAgICAgICAgcmFuZ2UsXG4gICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghcmFuZ2UgJiYgdGhpcy5vbk1vZGVsVG91Y2hlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Nb2RlbFRvdWNoZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRleHRDaGFuZ2VIYW5kbGVyID0gKGRlbHRhOiBhbnksIG9sZERlbHRhOiBhbnksIHNvdXJjZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgIC8vIG9ubHkgZW1pdCBjaGFuZ2VzIGVtaXR0ZWQgYnkgdXNlciBpbnRlcmFjdGlvbnNcblxuICAgICAgICBjb25zdCB0ZXh0ID0gdGhpcy5xdWlsbEVkaXRvci5nZXRUZXh0KCk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnF1aWxsRWRpdG9yLmdldENvbnRlbnRzKCk7XG5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgbGV0IGh0bWw6IHN0cmluZyB8IG51bGwgPSB0aGlzLmVkaXRvckVsZW0hLnF1ZXJ5U2VsZWN0b3IoJy5xbC1lZGl0b3InKSEuaW5uZXJIVE1MO1xuICAgICAgICBpZiAoaHRtbCA9PT0gJzxwPjxicj48L3A+JyB8fCBodG1sID09PSAnPGRpdj48YnI+PGRpdj4nKSB7XG4gICAgICAgICAgICBodG1sID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdHJhY2tDaGFuZ2VzID0gdGhpcy50cmFja0NoYW5nZXMgfHwgdGhpcy5jb25maWcudHJhY2tDaGFuZ2VzO1xuICAgICAgICAgICAgaWYgKChzb3VyY2UgPT09IFF1aWxsLnNvdXJjZXMuVVNFUiB8fCAodHJhY2tDaGFuZ2VzICYmIHRyYWNrQ2hhbmdlcyA9PT0gJ2FsbCcpKSAmJiB0aGlzLm9uTW9kZWxDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVHZXR0ZXIodGhpcy5xdWlsbEVkaXRvciwgdGhpcy5lZGl0b3JFbGVtISlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uQ29udGVudENoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgICAgICBkZWx0YSxcbiAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMucXVpbGxFZGl0b3IsXG4gICAgICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgICAgICBvbGREZWx0YSxcbiAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnF1aWxsRWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLm9mZignc2VsZWN0aW9uLWNoYW5nZScsIHRoaXMuc2VsZWN0aW9uQ2hhbmdlSGFuZGxlcik7XG4gICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLm9mZigndGV4dC1jaGFuZ2UnLCB0aGlzLnRleHRDaGFuZ2VIYW5kbGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnF1aWxsRWRpdG9yKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuaWQpIHtcbiAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3IuY29udGFpbmVyLmZpcnN0Q2hpbGQuaWQgPSBjaGFuZ2VzLmlkLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIFF1aWxsLmZvcm1hdHMgPSB7IC4uLlF1aWxsLmZvcm1hdHMsIFt0aGlzLmlkXTogdGhpcy5mb3JtYXRzIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3JlYWRPbmx5J10pIHtcbiAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3IuZW5hYmxlKCFjaGFuZ2VzWydyZWFkT25seSddLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3BsYWNlaG9sZGVyJ10pIHtcbiAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iucm9vdC5kYXRhc2V0LnBsYWNlaG9sZGVyID0gY2hhbmdlc1sncGxhY2Vob2xkZXInXS5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXNbJ3N0eWxlcyddKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U3R5bGluZyA9IGNoYW5nZXNbJ3N0eWxlcyddLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzU3R5bGluZyA9IGNoYW5nZXNbJ3N0eWxlcyddLnByZXZpb3VzVmFsdWU7XG5cbiAgICAgICAgICAgIGlmIChwcmV2aW91c1N0eWxpbmcpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhwcmV2aW91c1N0eWxpbmcpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5lZGl0b3JFbGVtLCBrZXkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsaW5nKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY3VycmVudFN0eWxpbmcpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lZGl0b3JFbGVtLCBrZXksIHRoaXMuc3R5bGVzW2tleV0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWydmb3JtYXRzJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRGb3JtYXRzID0gY2hhbmdlc1snZm9ybWF0cyddLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIFF1aWxsLmZvcm1hdHMgPSB7IC4uLlF1aWxsLmZvcm1hdHMsIFt0aGlzLmlkXTogY3VycmVudEZvcm1hdHMgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdyaXRlVmFsdWUoY3VycmVudFZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gY3VycmVudFZhbHVlO1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBnZXRGb3JtYXQodGhpcy5mb3JtYXQsIHRoaXMuY29uZmlnLmZvcm1hdCk7XG5cbiAgICAgICAgaWYgKHRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5zZXRUZXh0KGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5zZXRDb250ZW50cyh0aGlzLnZhbHVlU2V0dGVyKHRoaXMucXVpbGxFZGl0b3IsIHRoaXMuY29udGVudCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldFRleHQoJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuID0gdGhpcy5kaXNhYmxlZCk6IHZvaWQge1xuICAgICAgICAvLyBzdG9yZSBpbml0aWFsIHZhbHVlIHRvIHNldCBhcHByb3ByaWF0ZSBkaXNhYmxlZCBzdGF0dXMgYWZ0ZXIgVmlld0luaXRcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIGlmICh0aGlzLnF1aWxsRWRpdG9yKSB7XG4gICAgICAgICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3IuZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3IuZW5hYmxlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChtb2RlbFZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKCk6IGFueSB7XG4gICAgICAgIGlmICghdGhpcy5xdWlsbEVkaXRvcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlcnI6IHtcbiAgICAgICAgICAgIG1pbkxlbmd0aEVycm9yPzoge1xuICAgICAgICAgICAgICAgIGdpdmVuOiBudW1iZXI7XG4gICAgICAgICAgICAgICAgbWluTGVuZ3RoOiBudW1iZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbWF4TGVuZ3RoRXJyb3I/OiB7XG4gICAgICAgICAgICAgICAgZ2l2ZW46IG51bWJlcjtcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGg6IG51bWJlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXF1aXJlZEVycm9yPzogeyBlbXB0eTogYm9vbGVhbiB9O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgdGV4dExlbmd0aCA9IHRoaXMucXVpbGxFZGl0b3IuZ2V0VGV4dCgpLnRyaW0oKS5sZW5ndGg7XG5cbiAgICAgICAgaWYgKHRoaXMubWluTGVuZ3RoICYmIHRleHRMZW5ndGggJiYgdGV4dExlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICAgICAgICBlcnIubWluTGVuZ3RoRXJyb3IgPSB7XG4gICAgICAgICAgICAgICAgZ2l2ZW46IHRleHRMZW5ndGgsXG4gICAgICAgICAgICAgICAgbWluTGVuZ3RoOiB0aGlzLm1pbkxlbmd0aCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXhMZW5ndGggJiYgdGV4dExlbmd0aCA+IHRoaXMubWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICBlcnIubWF4TGVuZ3RoRXJyb3IgPSB7XG4gICAgICAgICAgICAgICAgZ2l2ZW46IHRleHRMZW5ndGgsXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoOiB0aGlzLm1heExlbmd0aCxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiAhdGV4dExlbmd0aCkge1xuICAgICAgICAgICAgZXJyLnJlcXVpcmVkRXJyb3IgPSB7XG4gICAgICAgICAgICAgICAgZW1wdHk6IHRydWUsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkID8gbnVsbCA6IGVycjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBRdWlsbCBzY3JvbGwgYmVoYXZpb3IgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIGZvcm1hdHMgYXJyYXkgYW5kIHNraXAgbm9uLWZvdW5kIG9uZXMuIFRoZW5cbiAgICAgKiByZWdpc3RlcnMgdGhlIHBsdWdpbiB0byB0aGUgUXVpbGwgZWRpdG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIFF1aWxsSW5zdGFuY2UgVGhlIFF1aWxsIGNsYXNzIChub3QgdGhlIGluc3RhbmNlKVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBvdmVycmlkZVNjcm9sbEJlaGF2aW9yKFF1aWxsSW5zdGFuY2U6IGFueSk6IHZvaWQge1xuICAgICAgICAvLyB0aGUgQnVpbHQtaW4gU2Nyb2xsIENsYXNzIGlzIG5vdCBleHBvcnRlZCwgc28gd2UgbmVlZCB0byBpbXBvcnQgaXRcbiAgICAgICAgY29uc3QgQnVpbHRpblNjcm9sbCA9IFF1aWxsSW5zdGFuY2UuaW1wb3J0KCdibG90cy9zY3JvbGwnKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE92ZXJyaWRlIHRoZSBkZWZhdWx0IFF1aWxsIHNjcm9sbCBiZWhhdmlvciB0byB0YWtlIGludG8gYWNjb3VudCB0aGUgZm9ybWF0cyBhcnJheSBhbmQgc2tpcCBub24tZm91bmQgb25lcy5cbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzIFNjcm9sbCBleHRlbmRzIEJ1aWx0aW5TY3JvbGwge1xuICAgICAgICAgICAgZm9ybWF0QXQoaW5kZXg6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIsIGZvcm1hdDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudElkID0gdGhpcy5kb21Ob2RlLmlkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGluc3RhbmNlRm9ybWF0cyA9IFF1aWxsSW5zdGFuY2UuZm9ybWF0c1tlbGVtZW50SWRdO1xuICAgICAgICAgICAgICAgIC8vIGNoZWNrcyB0aGUgZm9ybWF0cyBhcnJheSB0byBzZWUgaWYgdGhlIGZvcm1hdCBpcyBibGFja2xpc3RlZFxuICAgICAgICAgICAgICAgIGlmIChpbnN0YW5jZUZvcm1hdHMgJiYgaW5zdGFuY2VGb3JtYXRzLmZpbmQoKGYpID0+IGYgPT09IGZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBjb250aW51ZSB3aXRoIGRlZmF1bHQgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICBzdXBlci5mb3JtYXRBdChpbmRleCwgbGVuZ3RoLCBmb3JtYXQsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKiogcmVnaXN0ZXIgdGhlIFNjcm9sbCBvdmVycmlkZSAqL1xuICAgICAgICBRdWlsbEluc3RhbmNlLnJlZ2lzdGVyKCdibG90cy9zY3JvbGwnLCBTY3JvbGwsIHRydWUpO1xuICAgIH1cbn1cbiJdfQ==
540
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2V4dGVybmFscy9xdWlsbC9xdWlsbC1lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR25ELE9BQU8sRUFDSCxrQkFBa0IsR0FJckIsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBQ04sV0FBVyxFQUVYLGVBQWUsRUFFZixpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUF3QixhQUFhLEVBQUUsaUJBQWlCLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxELE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQWdCNUUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFvQixFQUFFLFlBQTBCLEVBQWUsRUFBRTtJQUNoRixNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksWUFBWSxDQUFDO0lBQzVDLE9BQU8sWUFBWSxJQUFJLE1BQU0sQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFvQkYsTUFBTSxPQUFPLG9CQUFvQjtJQXdDN0IsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFtQjtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDUixPQUFPLElB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QUFDLFFBQVE7OzBCQUVmLE1BQU07MkJBQUMsV0FBVzs7MEJBR2xCLE1BQU07MkJBQUMsa0JBQWtCO3FFQXJGckIsRUFBRTtzQkFBVixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUcsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFFRyxPQUFPO3NCQUFoQixNQUFNO2dCQUtHLE1BQU07c0JBQWYsTUFBTTtnQkFNSCxRQUFRO3NCQURYLEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixNQUFNO3NCQURULEtBQUs7Z0JBU0Ysa0JBQWtCO3NCQURyQixLQUFLO2dCQTZCTixXQUFXO3NCQURWLEtBQUs7Z0JBeUJOLFdBQVc7c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7XG4gICAgUVVJTExfQ09ORklHX1RPS0VOLFxuICAgIFF1aWxsQ29uZmlnLFxuICAgIFF1aWxsRm9ybWF0LFxuICAgIFF1aWxsTW9kdWxlcyxcbn0gZnJvbSAnLi9xdWlsbC1lZGl0b3IuaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFJlbmRlcmVyMixcbiAgICBTZWN1cml0eUNvbnRleHQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBkZWZhdWx0TW9kdWxlcyB9IGZyb20gJy4vcXVpbGwtZGVmYXVsdHMnO1xuaW1wb3J0IHsgQ29udGVudENoYW5nZSwgRWRpdG9yQ2hhbmdlQ29udGVudCwgU2VsZWN0aW9uQ2hhbmdlLCBSYW5nZSB9IGZyb20gJy4vbW9kZWxzL2VkaXRvci5tb2RlbCc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9sb2FkZXIuc2VydmljZSc7XG5cbi8vIEJlY2F1c2UgcXVpbGwgdXNlcyBgZG9jdW1lbnRgIGRpcmVjdGx5LCB3ZSBjYW5ub3QgYGltcG9ydGAgZHVyaW5nIFNTUlxuLy8gaW5zdGVhZCwgd2UgbG9hZCBkeW5hbWljYWxseSB2aWEgYHJlcXVpcmUoJ3F1aWxsJylgIGluIGBuZ0FmdGVyVmlld0luaXQoKWBcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12YXJcbmRlY2xhcmUgdmFyIHJlcXVpcmU6IGFueTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12YXJcbmRlY2xhcmUgdmFyIFF1aWxsOiBhbnk7XG4vLyBsZXQgUXVpbGw6IGFueSA9IHdpbmRvd1snUXVpbGwnXTtcblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21PcHRpb24ge1xuICAgIGltcG9ydDogc3RyaW5nO1xuICAgIHdoaXRlbGlzdDogYW55W107XG59XG5cbmNvbnN0IGdldEZvcm1hdCA9IChmb3JtYXQ/OiBRdWlsbEZvcm1hdCwgY29uZmlnRm9ybWF0PzogUXVpbGxGb3JtYXQpOiBRdWlsbEZvcm1hdCA9PiB7XG4gICAgY29uc3QgcGFzc2VkRm9ybWF0ID0gZm9ybWF0IHx8IGNvbmZpZ0Zvcm1hdDtcbiAgICByZXR1cm4gcGFzc2VkRm9ybWF0IHx8ICdodG1sJztcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBRdWlsbEVkaXRvckNvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFF1aWxsRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdxdWlsbC1lZGl0b3InLFxuICAgIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50IHNlbGVjdD1cIltxdWlsbC1lZGl0b3ItdG9vbGJhcl1cIj48L25nLWNvbnRlbnQ+IGAsXG59KVxuZXhwb3J0IGNsYXNzIFF1aWxsRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBWYWxpZGF0b3Ige1xuICAgIHF1aWxsRWRpdG9yOiBhbnk7XG4gICAgZWRpdG9yRWxlbTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgY29udGVudDogYW55O1xuICAgIHByb3RlY3RlZCBsb2FkZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZm9ybWF0PzogJ29iamVjdCcgfCAnaHRtbCcgfCAndGV4dCcgfCAnanNvbic7XG4gICAgQElucHV0KCkgdGhlbWU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbW9kdWxlcz86IFF1aWxsTW9kdWxlcztcbiAgICBASW5wdXQoKSBkZWJ1Zz86ICd3YXJuJyB8ICdsb2cnIHwgJ2Vycm9yJyB8IGZhbHNlO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG1heExlbmd0aD86IG51bWJlcjtcbiAgICBASW5wdXQoKSBtaW5MZW5ndGg/OiBudW1iZXI7XG4gICAgQElucHV0KCkgZm9ybWF0cz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgICBASW5wdXQoKSBjdXN0b21Ub29sYmFyUG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScgPSAndG9wJztcbiAgICBASW5wdXQoKSBzdHlsZXM6IGFueSA9IG51bGw7XG4gICAgQElucHV0KCkgc2Nyb2xsaW5nQ29udGFpbmVyPzogSFRNTEVsZW1lbnQgfCBzdHJpbmcgfCBudWxsO1xuICAgIEBJbnB1dCgpIGJvdW5kcz86IEhUTUxFbGVtZW50IHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpIGN1c3RvbU9wdGlvbnM6IEN1c3RvbU9wdGlvbltdID0gW107XG4gICAgQElucHV0KCkgdHJhY2tDaGFuZ2VzPzogJ3VzZXInIHwgJ2FsbCc7XG4gICAgQElucHV0KCkgaGFzSW1hZ2VGZWF0dXJlOiBib29sZWFuO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uRWRpdG9yQ3JlYXRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uQ29udGVudENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDb250ZW50Q2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8U2VsZWN0aW9uQ2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25Gb2N1czogRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgZWRpdG9yOiBhbnk7XG4gICAgICAgIHNvdXJjZTogc3RyaW5nO1xuICAgIH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGVkaXRvcjogYW55O1xuICAgICAgICBzb3VyY2U6IHN0cmluZztcbiAgICB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHJlYWRPbmx5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7XG4gICAgfVxuICAgIHNldCByZWFkT25seSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3JlYWRPbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVhZE9ubHk/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gICAgfVxuICAgIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBzYW5pdGl6ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplO1xuICAgIH1cbiAgICBzZXQgc2FuaXRpemUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9zYW5pdGl6ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3Nhbml0aXplID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgc3RyaWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RyaWN0O1xuICAgIH1cbiAgICBzZXQgc3RyaWN0KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fc3RyaWN0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc3RyaWN0ID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBwcmVzZXJ2ZVdoaXRlc3BhY2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVzZXJ2ZVdoaXRlc3BhY2U7XG4gICAgfVxuICAgIHNldCBwcmVzZXJ2ZVdoaXRlc3BhY2UodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9wcmVzZXJ2ZVdoaXRlc3BhY2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9wcmVzZXJ2ZVdoaXRlc3BhY2UgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZGlzYWJsZWQgPSBmYWxzZTsgLy8gdXNlZCB0byBzdG9yZSBpbml0aWFsIHZhbHVlIGJlZm9yZSBWaWV3SW5pdFxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IGFueSxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoUVVJTExfQ09ORklHX1RPS0VOKSBwcml2YXRlIGNvbmZpZzogUXVpbGxDb25maWcsXG4gICAgICAgIHByaXZhdGUgbG9hZGVyOiBMb2FkZXJTZXJ2aWNlLFxuICAgICkge31cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eSxuby1lbXB0eS1mdW5jdGlvbixAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24sIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1mdW5jdGlvbi1yZXR1cm4tdHlwZVxuICAgIG9uTW9kZWxDaGFuZ2UoX21vZGVsVmFsdWU/OiBhbnkpIHt9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LCBuby1lbXB0eS1mdW5jdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uLCBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtZnVuY3Rpb24tcmV0dXJuLXR5cGVcbiAgICBvbk1vZGVsVG91Y2hlZCgpIHt9XG5cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlR2V0dGVyID0gKHF1aWxsRWRpdG9yOiBhbnksIGVkaXRvckVsZW1lbnQ6IEhUTUxFbGVtZW50KTogc3RyaW5nIHwgYW55ID0+IHtcbiAgICAgICAgbGV0IGh0bWw6IHN0cmluZyB8IG51bGwgPSBlZGl0b3JFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5xbC1lZGl0b3InKT8uaW5uZXJIVE1MO1xuICAgICAgICBpZiAoaHRtbCA9PT0gJzxwPjxicj48L3A+JyB8fCBodG1sID09PSAnPGRpdj48YnI+PGRpdj4nKSB7XG4gICAgICAgICAgICBodG1sID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbW9kZWxWYWx1ZSA9IGh0bWw7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IGdldEZvcm1hdCh0aGlzLmZvcm1hdCwgdGhpcy5jb25maWcuZm9ybWF0KTtcblxuICAgICAgICBpZiAoZm9ybWF0ID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgIG1vZGVsVmFsdWUgPSBxdWlsbEVkaXRvci5nZXRUZXh0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgbW9kZWxWYWx1ZSA9IHF1aWxsRWRpdG9yLmdldENvbnRlbnRzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbW9kZWxWYWx1ZSA9IEpTT04uc3RyaW5naWZ5KHF1aWxsRWRpdG9yLmdldENvbnRlbnRzKCkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIG1vZGVsVmFsdWUgPSBxdWlsbEVkaXRvci5nZXRUZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9kZWxWYWx1ZTtcbiAgICB9O1xuXG4gICAgQElucHV0KClcbiAgICB2YWx1ZVNldHRlciA9IChxdWlsbEVkaXRvcjogYW55LCB2YWx1ZTogYW55KTogYW55ID0+IHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gZ2V0Rm9ybWF0KHRoaXMuZm9ybWF0LCB0aGlzLmNvbmZpZy5mb3JtYXQpO1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnaHRtbCcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNhbml0aXplKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmRvbVNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHF1aWxsRWRpdG9yLmNsaXBib2FyZC5jb252ZXJ0KHsgaHRtbDogdmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbeyBpbnNlcnQ6IHZhbHVlIH1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIGNvbnN0IGxvYWRlciA9IG5ldyBMb2FkZXJTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMubG9hZGVyLmxvYWQoKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBzZXR1cCBrZXlib2FyZCBiaW5kaW5ncyBmcm9tIEJldHRlclRhYmxlIGlmIHByZXNlbnRcbiAgICAgICAgICAgICAgICBjb25zdCBRdWlsbEJldHRlclRhYmxlID0gd2luZG93WydxdWlsbEJldHRlclRhYmxlJ107XG4gICAgICAgICAgICAgICAgaWYoUXVpbGxCZXR0ZXJUYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgICAgICAgICAgICAgICAgICAgaWYoIXdpbmRvd1snUXVpbGwnXS5pbXBvcnRzLmhhc093blByb3BlcnR5KCdtb2R1bGVzL2JldHRlci10YWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dbJ1F1aWxsJ10ucmVnaXN0ZXIoeyAnbW9kdWxlcy9iZXR0ZXItdGFibGUnOiBRdWlsbEJldHRlclRhYmxlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmKCF0aGlzLmNvbmZpZy5tb2R1bGVzLmtleWJvYXJkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5tb2R1bGVzLmtleWJvYXJkID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpbmdzOiBRdWlsbEJldHRlclRhYmxlPy5rZXlib2FyZEJpbmRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIVF1aWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFF1aWxsID0gcmVxdWlyZSgncXVpbGwnKVxuICAgICAgICAgICAgICAgICAgICBRdWlsbCA9IHdpbmRvd1snUXVpbGwnXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVycmlkZVNjcm9sbEJlaGF2aW9yKFF1aWxsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lmluc2VydEFkamFjZW50SFRNTChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Ub29sYmFyUG9zaXRpb24gPT09ICd0b3AnID8gJ2JlZm9yZWVuZCcgOiAnYWZ0ZXJiZWdpbicsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2VydmVXaGl0ZXNwYWNlID8gJzxwcmUgcXVpbGwtZWRpdG9yLWVsZW1lbnQ+PC9wcmU+JyA6ICc8ZGl2IHF1aWxsLWVkaXRvci1lbGVtZW50PjwvZGl2PidcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5lZGl0b3JFbGVtID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3F1aWxsLWVkaXRvci1lbGVtZW50XScpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdG9vbGJhckVsZW0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbcXVpbGwtZWRpdG9yLXRvb2xiYXJdJyk7XG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZXMgPSB0aGlzLm1vZHVsZXMgfHwgdGhpcy5jb25maWcubW9kdWxlcyB8fCBkZWZhdWx0TW9kdWxlcztcbiAgICAgICAgICAgICAgICBpZiAobW9kdWxlcy50b29sYmFyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlcy50b29sYmFyID0gZGVmYXVsdE1vZHVsZXMudG9vbGJhcjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVyICE9PSB1bmRlZmluZWQgPyB0aGlzLnBsYWNlaG9sZGVyIDogdGhpcy5jb25maWcucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlaG9sZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXIgPSAnSW5zZXJ0IHRleHQgaGVyZSAuLi4nO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0b29sYmFyRWxlbSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZG90LW5vdGF0aW9uLEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlc1sndG9vbGJhciddID0gdG9vbGJhckVsZW07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0ltYWdlRmVhdHVyZSkge1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGVzWyd1cGxvYWRlciddID0geyBoYW5kbGVyOiAoKSA9PiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1vZHVsZXNbJ3VwbG9hZGVyJ10gPSB7IG1pbWV0eXBlczogWydpbWFnZS9wbmcnLCAnaW1hZ2UvanBlZyddIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3R5bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuc3R5bGVzKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVkaXRvckVsZW0sIGtleSwgdGhpcy5zdHlsZXNba2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tT3B0aW9ucy5mb3JFYWNoKChjdXN0b21PcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Q3VzdG9tT3B0aW9uID0gUXVpbGwuaW1wb3J0KGN1c3RvbU9wdGlvbi5pbXBvcnQpO1xuICAgICAgICAgICAgICAgICAgICBuZXdDdXN0b21PcHRpb24ud2hpdGVsaXN0ID0gY3VzdG9tT3B0aW9uLndoaXRlbGlzdDtcbiAgICAgICAgICAgICAgICAgICAgUXVpbGwucmVnaXN0ZXIobmV3Q3VzdG9tT3B0aW9uLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGxldCBib3VuZHMgPSB0aGlzLmJvdW5kcyAmJiB0aGlzLmJvdW5kcyA9PT0gJ3NlbGYnID8gdGhpcy5lZGl0b3JFbGVtIDogdGhpcy5ib3VuZHM7XG4gICAgICAgICAgICAgICAgaWYgKCFib3VuZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgYm91bmRzID0gdGhpcy5jb25maWcuYm91bmRzID8gdGhpcy5jb25maWcuYm91bmRzIDogdGhpcy5kb2MuYm9keTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZGVidWcgPSB0aGlzLmRlYnVnO1xuICAgICAgICAgICAgICAgIGlmICghZGVidWcgJiYgZGVidWcgIT09IGZhbHNlICYmIHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlYnVnID0gdGhpcy5jb25maWcuZGVidWc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHJlYWRPbmx5ID0gdGhpcy5yZWFkT25seTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlYWRPbmx5ICYmIHRoaXMucmVhZE9ubHkgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5ID0gdGhpcy5jb25maWcucmVhZE9ubHkgIT09IHVuZGVmaW5lZCA/IHRoaXMuY29uZmlnLnJlYWRPbmx5IDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHNjcm9sbGluZ0NvbnRhaW5lciA9IHRoaXMuc2Nyb2xsaW5nQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgIGlmICghc2Nyb2xsaW5nQ29udGFpbmVyICYmIHRoaXMuc2Nyb2xsaW5nQ29udGFpbmVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbGluZ0NvbnRhaW5lciA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zY3JvbGxpbmdDb250YWluZXIgPT09IG51bGwgfHwgdGhpcy5jb25maWcuc2Nyb2xsaW5nQ29udGFpbmVyID8gdGhpcy5jb25maWcuc2Nyb2xsaW5nQ29udGFpbmVyIDogbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZm9ybWF0cyA9IHRoaXMuZm9ybWF0cztcbiAgICAgICAgICAgICAgICBpZiAoIWZvcm1hdHMgJiYgZm9ybWF0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1hdHMgPSB0aGlzLmNvbmZpZy5mb3JtYXRzIHx8IHRoaXMuY29uZmlnLmZvcm1hdHMgPT09IG51bGwgPyB0aGlzLmNvbmZpZy5mb3JtYXRzIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBRdWlsbC5mb3JtYXRzID0geyAuLi5RdWlsbC5mb3JtYXRzLCBbdGhpcy5pZF06IGZvcm1hdHMgfTtcblxuICAgICAgICAgICAgICAgIGlmIChmb3JtYXRzICYmIGZvcm1hdHMuaW5kZXhPZigndGFibGUnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm1vZHVsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAnYmV0dGVyLXRhYmxlJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yID0gbmV3IFF1aWxsKHRoaXMuZWRpdG9yRWxlbSwge1xuICAgICAgICAgICAgICAgICAgICBib3VuZHMsXG4gICAgICAgICAgICAgICAgICAgIGRlYnVnLFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXRzLFxuICAgICAgICAgICAgICAgICAgICBtb2R1bGVzLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgcmVhZE9ubHksXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbGluZ0NvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgc3RyaWN0OiB0aGlzLnN0cmljdCxcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IHRoaXMudGhlbWUgfHwgKHRoaXMuY29uZmlnLnRoZW1lID8gdGhpcy5jb25maWcudGhlbWUgOiAnc25vdycpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3IuY29udGFpbmVyLmZpcnN0Q2hpbGQuaWQgPSB0aGlzLmlkO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXQgPSBnZXRGb3JtYXQodGhpcy5mb3JtYXQsIHRoaXMuY29uZmlnLmZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldENvbnRlbnRzKHRoaXMuY29udGVudCwgJ3NpbGVudCcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldFRleHQodGhpcy5jb250ZW50LCAnc2lsZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5zZXRDb250ZW50cyhKU09OLnBhcnNlKHRoaXMuY29udGVudCksICdzaWxlbnQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldFRleHQodGhpcy5jb250ZW50LCAnc2lsZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zYW5pdGl6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudCA9IHRoaXMuZG9tU2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCB0aGlzLmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudHMgPSB0aGlzLnF1aWxsRWRpdG9yLmNsaXBib2FyZC5jb252ZXJ0KHRoaXMuY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldENvbnRlbnRzKGNvbnRlbnRzLCAnc2lsZW50Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLmhpc3RvcnkuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplIGRpc2FibGVkIHN0YXR1cyBiYXNlZCBvbiB0aGlzLmRpc2FibGVkIGFzIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAgICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub25FZGl0b3JDcmVhdGVkLmVtaXQodGhpcy5xdWlsbEVkaXRvcik7XG5cbiAgICAgICAgICAgICAgICAvLyBtYXJrIG1vZGVsIGFzIHRvdWNoZWQgaWYgZWRpdG9yIGxvc3QgZm9jdXNcbiAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLm9uKCdzZWxlY3Rpb24tY2hhbmdlJywgdGhpcy5zZWxlY3Rpb25DaGFuZ2VIYW5kbGVyKTtcblxuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBtb2RlbCBpZiB0ZXh0IGNoYW5nZXNcbiAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLm9uKCd0ZXh0LWNoYW5nZScsIHRoaXMudGV4dENoYW5nZUhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZWxlY3Rpb25DaGFuZ2VIYW5kbGVyID0gKHJhbmdlOiBSYW5nZSB8IG51bGwsIG9sZFJhbmdlOiBSYW5nZSB8IG51bGwsIHNvdXJjZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJhbmdlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkJsdXIuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvcjogdGhpcy5xdWlsbEVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvbGRSYW5nZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yOiB0aGlzLnF1aWxsRWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgICAgIGVkaXRvcjogdGhpcy5xdWlsbEVkaXRvcixcbiAgICAgICAgICAgICAgICBvbGRSYW5nZSxcbiAgICAgICAgICAgICAgICByYW5nZSxcbiAgICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFyYW5nZSAmJiB0aGlzLm9uTW9kZWxUb3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGV4dENoYW5nZUhhbmRsZXIgPSAoZGVsdGE6IGFueSwgb2xkRGVsdGE6IGFueSwgc291cmNlOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICAgICAgLy8gb25seSBlbWl0IGNoYW5nZXMgZW1pdHRlZCBieSB1c2VyIGludGVyYWN0aW9uc1xuXG4gICAgICAgIGNvbnN0IHRleHQgPSB0aGlzLnF1aWxsRWRpdG9yLmdldFRleHQoKTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMucXVpbGxFZGl0b3IuZ2V0Q29udGVudHMoKTtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICBsZXQgaHRtbDogc3RyaW5nIHwgbnVsbCA9IHRoaXMuZWRpdG9yRWxlbSEucXVlcnlTZWxlY3RvcignLnFsLWVkaXRvcicpIS5pbm5lckhUTUw7XG4gICAgICAgIGlmIChodG1sID09PSAnPHA+PGJyPjwvcD4nIHx8IGh0bWwgPT09ICc8ZGl2Pjxicj48ZGl2PicpIHtcbiAgICAgICAgICAgIGh0bWwgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFja0NoYW5nZXMgPSB0aGlzLnRyYWNrQ2hhbmdlcyB8fCB0aGlzLmNvbmZpZy50cmFja0NoYW5nZXM7XG4gICAgICAgICAgICBpZiAoKHNvdXJjZSA9PT0gUXVpbGwuc291cmNlcy5VU0VSIHx8ICh0cmFja0NoYW5nZXMgJiYgdHJhY2tDaGFuZ2VzID09PSAnYWxsJykpICYmIHRoaXMub25Nb2RlbENoYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZShcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZUdldHRlcih0aGlzLnF1aWxsRWRpdG9yLCB0aGlzLmVkaXRvckVsZW0hKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMub25Db250ZW50Q2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgIGRlbHRhLFxuICAgICAgICAgICAgICAgIGVkaXRvcjogdGhpcy5xdWlsbEVkaXRvcixcbiAgICAgICAgICAgICAgICBodG1sLFxuICAgICAgICAgICAgICAgIG9sZERlbHRhLFxuICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iub2ZmKCdzZWxlY3Rpb24tY2hhbmdlJywgdGhpcy5zZWxlY3Rpb25DaGFuZ2VIYW5kbGVyKTtcbiAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iub2ZmKCd0ZXh0LWNoYW5nZScsIHRoaXMudGV4dENoYW5nZUhhbmRsZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5pZCkge1xuICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5jb250YWluZXIuZmlyc3RDaGlsZC5pZCA9IGNoYW5nZXMuaWQuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgUXVpbGwuZm9ybWF0cyA9IHsgLi4uUXVpbGwuZm9ybWF0cywgW3RoaXMuaWRdOiB0aGlzLmZvcm1hdHMgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1sncmVhZE9ubHknXSkge1xuICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5lbmFibGUoIWNoYW5nZXNbJ3JlYWRPbmx5J10uY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1sncGxhY2Vob2xkZXInXSkge1xuICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5yb290LmRhdGFzZXQucGxhY2Vob2xkZXIgPSBjaGFuZ2VzWydwbGFjZWhvbGRlciddLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1snc3R5bGVzJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdHlsaW5nID0gY2hhbmdlc1snc3R5bGVzJ10uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNTdHlsaW5nID0gY2hhbmdlc1snc3R5bGVzJ10ucHJldmlvdXNWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKHByZXZpb3VzU3R5bGluZykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHByZXZpb3VzU3R5bGluZykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmVkaXRvckVsZW0sIGtleSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3VycmVudFN0eWxpbmcpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50U3R5bGluZykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVkaXRvckVsZW0sIGtleSwgdGhpcy5zdHlsZXNba2V5XSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXNbJ2Zvcm1hdHMnXSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEZvcm1hdHMgPSBjaGFuZ2VzWydmb3JtYXRzJ10uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgUXVpbGwuZm9ybWF0cyA9IHsgLi4uUXVpbGwuZm9ybWF0cywgW3RoaXMuaWRdOiBjdXJyZW50Rm9ybWF0cyB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShjdXJyZW50VmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBjdXJyZW50VmFsdWU7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IGdldEZvcm1hdCh0aGlzLmZvcm1hdCwgdGhpcy5jb25maWcuZm9ybWF0KTtcblxuICAgICAgICBpZiAodGhpcy5xdWlsbEVkaXRvcikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldFRleHQoY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnF1aWxsRWRpdG9yLnNldENvbnRlbnRzKHRoaXMudmFsdWVTZXR0ZXIodGhpcy5xdWlsbEVkaXRvciwgdGhpcy5jb250ZW50KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucXVpbGxFZGl0b3Iuc2V0VGV4dCgnJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0aGlzLmRpc2FibGVkKTogdm9pZCB7XG4gICAgICAgIC8vIHN0b3JlIGluaXRpYWwgdmFsdWUgdG8gc2V0IGFwcHJvcHJpYXRlIGRpc2FibGVkIHN0YXR1cyBhZnRlciBWaWV3SW5pdFxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgaWYgKHRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5kaXNhYmxlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWlsbEVkaXRvci5lbmFibGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKG1vZGVsVmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoKTogYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLnF1aWxsRWRpdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVycjoge1xuICAgICAgICAgICAgbWluTGVuZ3RoRXJyb3I/OiB7XG4gICAgICAgICAgICAgICAgZ2l2ZW46IG51bWJlcjtcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IG51bWJlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBtYXhMZW5ndGhFcnJvcj86IHtcbiAgICAgICAgICAgICAgICBnaXZlbjogbnVtYmVyO1xuICAgICAgICAgICAgICAgIG1heExlbmd0aDogbnVtYmVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlcXVpcmVkRXJyb3I/OiB7IGVtcHR5OiBib29sZWFuIH07XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgbGV0IHZhbGlkID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCB0ZXh0TGVuZ3RoID0gdGhpcy5xdWlsbEVkaXRvci5nZXRUZXh0KCkudHJpbSgpLmxlbmd0aDtcblxuICAgICAgICBpZiAodGhpcy5taW5MZW5ndGggJiYgdGV4dExlbmd0aCAmJiB0ZXh0TGVuZ3RoIDwgdGhpcy5taW5MZW5ndGgpIHtcbiAgICAgICAgICAgIGVyci5taW5MZW5ndGhFcnJvciA9IHtcbiAgICAgICAgICAgICAgICBnaXZlbjogdGV4dExlbmd0aCxcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IHRoaXMubWluTGVuZ3RoLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1heExlbmd0aCAmJiB0ZXh0TGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIGVyci5tYXhMZW5ndGhFcnJvciA9IHtcbiAgICAgICAgICAgICAgICBnaXZlbjogdGV4dExlbmd0aCxcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGg6IHRoaXMubWF4TGVuZ3RoLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVkICYmICF0ZXh0TGVuZ3RoKSB7XG4gICAgICAgICAgICBlcnIucmVxdWlyZWRFcnJvciA9IHtcbiAgICAgICAgICAgICAgICBlbXB0eTogdHJ1ZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsaWQgPyBudWxsIDogZXJyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE92ZXJyaWRlIHRoZSBkZWZhdWx0IFF1aWxsIHNjcm9sbCBiZWhhdmlvciB0byB0YWtlIGludG8gYWNjb3VudCB0aGUgZm9ybWF0cyBhcnJheSBhbmQgc2tpcCBub24tZm91bmQgb25lcy4gVGhlblxuICAgICAqIHJlZ2lzdGVycyB0aGUgcGx1Z2luIHRvIHRoZSBRdWlsbCBlZGl0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gUXVpbGxJbnN0YW5jZSBUaGUgUXVpbGwgY2xhc3MgKG5vdCB0aGUgaW5zdGFuY2UpXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIG92ZXJyaWRlU2Nyb2xsQmVoYXZpb3IoUXVpbGxJbnN0YW5jZTogYW55KTogdm9pZCB7XG4gICAgICAgIC8vIHRoZSBCdWlsdC1pbiBTY3JvbGwgQ2xhc3MgaXMgbm90IGV4cG9ydGVkLCBzbyB3ZSBuZWVkIHRvIGltcG9ydCBpdFxuICAgICAgICBjb25zdCBCdWlsdGluU2Nyb2xsID0gUXVpbGxJbnN0YW5jZS5pbXBvcnQoJ2Jsb3RzL3Njcm9sbCcpO1xuICAgICAgICAvKipcbiAgICAgICAgICogT3ZlcnJpZGUgdGhlIGRlZmF1bHQgUXVpbGwgc2Nyb2xsIGJlaGF2aW9yIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSBmb3JtYXRzIGFycmF5IGFuZCBza2lwIG5vbi1mb3VuZCBvbmVzLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3MgU2Nyb2xsIGV4dGVuZHMgQnVpbHRpblNjcm9sbCB7XG4gICAgICAgICAgICBmb3JtYXRBdChpbmRleDogbnVtYmVyLCBsZW5ndGg6IG51bWJlciwgZm9ybWF0OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50SWQgPSB0aGlzLmRvbU5vZGUuaWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5zdGFuY2VGb3JtYXRzID0gUXVpbGxJbnN0YW5jZS5mb3JtYXRzW2VsZW1lbnRJZF07XG4gICAgICAgICAgICAgICAgLy8gY2hlY2tzIHRoZSBmb3JtYXRzIGFycmF5IHRvIHNlZSBpZiB0aGUgZm9ybWF0IGlzIGJsYWNrbGlzdGVkXG4gICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlRm9ybWF0cyAmJiBpbnN0YW5jZUZvcm1hdHMuZmluZCgoZikgPT4gZiA9PT0gZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVlIHdpdGggZGVmYXVsdCBiZWhhdmlvclxuICAgICAgICAgICAgICAgIHN1cGVyLmZvcm1hdEF0KGluZGV4LCBsZW5ndGgsIGZvcm1hdCwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKiByZWdpc3RlciB0aGUgU2Nyb2xsIG92ZXJyaWRlICovXG4gICAgICAgIFF1aWxsSW5zdGFuY2UucmVnaXN0ZXIoJ2Jsb3RzL3Njcm9sbCcsIFNjcm9sbCwgdHJ1ZSk7XG4gICAgfVxufVxuIl19
@@ -1,3 +1,4 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const QUILL_CONFIG_TOKEN = new InjectionToken('config');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwtZWRpdG9yLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9leHRlcm5hbHMvcXVpbGwvcXVpbGwtZWRpdG9yLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXNFL0MsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQWMsUUFBUSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBRdWlsbFRvb2xiYXJDb25maWcgPSBBcnJheTxcbiAgICBBcnJheTxcbiAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgfCB7XG4gICAgICAgICAgICAgIGluZGVudD86IHN0cmluZztcbiAgICAgICAgICAgICAgbGlzdD86IHN0cmluZztcbiAgICAgICAgICAgICAgZGlyZWN0aW9uPzogc3RyaW5nO1xuICAgICAgICAgICAgICBoZWFkZXI/OiBudW1iZXIgfCBBcnJheTxib29sZWFuIHwgbnVtYmVyPjtcbiAgICAgICAgICAgICAgY29sb3I/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZD86IHN0cmluZ1tdO1xuICAgICAgICAgICAgICBhbGlnbj86IHN0cmluZ1tdO1xuICAgICAgICAgICAgICBzY3JpcHQ/OiBzdHJpbmc7XG4gICAgICAgICAgICAgIGZvbnQ/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgc2l6ZT86IEFycmF5PGJvb2xlYW4gfCBzdHJpbmc+O1xuICAgICAgICAgIH1cbiAgICA+XG4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1aWxsTW9kdWxlcyB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIGNsaXBib2FyZD86XG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBtYXRoZXJzPzogYW55W107XG4gICAgICAgICAgICAgIG1hdGNoVmlzdWFsPzogYm9vbGVhbjtcbiAgICAgICAgICB9XG4gICAgICAgIHwgYm9vbGVhbjtcbiAgICBoaXN0b3J5PzpcbiAgICAgICAgfCB7XG4gICAgICAgICAgICAgIGRlbGF5PzogbnVtYmVyO1xuICAgICAgICAgICAgICBtYXhTdGFjaz86IG51bWJlcjtcbiAgICAgICAgICAgICAgdXNlck9ubHk/OiBib29sZWFuO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBib29sZWFuO1xuICAgIGtleWJvYXJkPzpcbiAgICAgICAgfCB7XG4gICAgICAgICAgICAgIGJpbmRpbmdzPzogYW55O1xuICAgICAgICAgIH1cbiAgICAgICAgfCBib29sZWFuO1xuICAgIHN5bnRheD86IGJvb2xlYW47XG4gICAgdGFibGU/OiBib29sZWFuO1xuICAgIHRvb2xiYXI/OlxuICAgICAgICB8IFF1aWxsVG9vbGJhckNvbmZpZ1xuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IHtcbiAgICAgICAgICAgICAgY29udGFpbmVyPzogc3RyaW5nIHwgc3RyaW5nW10gfCBRdWlsbFRvb2xiYXJDb25maWc7XG4gICAgICAgICAgICAgIGhhbmRsZXJzPzoge1xuICAgICAgICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfCBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBRdWlsbEZvcm1hdCA9ICdvYmplY3QnIHwgJ2pzb24nIHwgJ2h0bWwnIHwgJ3RleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1aWxsQ29uZmlnIHtcbiAgICBib3VuZHM/OiBIVE1MRWxlbWVudCB8IHN0cmluZztcbiAgICBkZWJ1Zz86ICdlcnJvcicgfCAnd2FybicgfCAnbG9nJyB8IGZhbHNlO1xuICAgIGZvcm1hdD86IFF1aWxsRm9ybWF0O1xuICAgIGZvcm1hdHM/OiBhbnk7XG4gICAgbW9kdWxlcz86IFF1aWxsTW9kdWxlcztcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICByZWFkT25seT86IGJvb2xlYW47XG4gICAgc2Nyb2xsaW5nQ29udGFpbmVyPzogSFRNTEVsZW1lbnQgfCBzdHJpbmcgfCBudWxsO1xuICAgIHRoZW1lPzogc3RyaW5nO1xuICAgIC8vIEN1c3RvbSBDb25maWcgdG8gdHJhY2sgYWxsIGNoYW5nZXMgb3Igb25seSBjaGFuZ2VzIGJ5ICd1c2VyJ1xuICAgIHRyYWNrQ2hhbmdlcz86ICd1c2VyJyB8ICdhbGwnO1xufVxuXG5leHBvcnQgY29uc3QgUVVJTExfQ09ORklHX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFF1aWxsQ29uZmlnPignY29uZmlnJyk7XG4iXX0=
3
+ export const QUILL_DYNAMIC_CONFIG_TOKEN = new InjectionToken('Dynamic loading config');
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwtZWRpdG9yLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9leHRlcm5hbHMvcXVpbGwvcXVpbGwtZWRpdG9yLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQStFL0MsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQWMsUUFBUSxDQUFDLENBQUM7QUFDNUUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQXFCLHdCQUF3QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBRdWlsbFRvb2xiYXJDb25maWcgPSBBcnJheTxcbiAgICBBcnJheTxcbiAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgfCB7XG4gICAgICAgICAgICAgIGluZGVudD86IHN0cmluZztcbiAgICAgICAgICAgICAgbGlzdD86IHN0cmluZztcbiAgICAgICAgICAgICAgZGlyZWN0aW9uPzogc3RyaW5nO1xuICAgICAgICAgICAgICBoZWFkZXI/OiBudW1iZXIgfCBBcnJheTxib29sZWFuIHwgbnVtYmVyPjtcbiAgICAgICAgICAgICAgY29sb3I/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZD86IHN0cmluZ1tdO1xuICAgICAgICAgICAgICBhbGlnbj86IHN0cmluZ1tdO1xuICAgICAgICAgICAgICBzY3JpcHQ/OiBzdHJpbmc7XG4gICAgICAgICAgICAgIGZvbnQ/OiBzdHJpbmdbXTtcbiAgICAgICAgICAgICAgc2l6ZT86IEFycmF5PGJvb2xlYW4gfCBzdHJpbmc+O1xuICAgICAgICAgIH1cbiAgICA+XG4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1aWxsTW9kdWxlcyB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIGNsaXBib2FyZD86XG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBtYXRoZXJzPzogYW55W107XG4gICAgICAgICAgICAgIG1hdGNoVmlzdWFsPzogYm9vbGVhbjtcbiAgICAgICAgICB9XG4gICAgICAgIHwgYm9vbGVhbjtcbiAgICBoaXN0b3J5PzpcbiAgICAgICAgfCB7XG4gICAgICAgICAgICAgIGRlbGF5PzogbnVtYmVyO1xuICAgICAgICAgICAgICBtYXhTdGFjaz86IG51bWJlcjtcbiAgICAgICAgICAgICAgdXNlck9ubHk/OiBib29sZWFuO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBib29sZWFuO1xuICAgIGtleWJvYXJkPzpcbiAgICAgICAgfCB7XG4gICAgICAgICAgICAgIGJpbmRpbmdzPzogYW55O1xuICAgICAgICAgIH1cbiAgICAgICAgfCBib29sZWFuO1xuICAgIHN5bnRheD86IGJvb2xlYW47XG4gICAgdGFibGU/OiBib29sZWFuO1xuICAgIHRvb2xiYXI/OlxuICAgICAgICB8IFF1aWxsVG9vbGJhckNvbmZpZ1xuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IHtcbiAgICAgICAgICAgICAgY29udGFpbmVyPzogc3RyaW5nIHwgc3RyaW5nW10gfCBRdWlsbFRvb2xiYXJDb25maWc7XG4gICAgICAgICAgICAgIGhhbmRsZXJzPzoge1xuICAgICAgICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfCBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBRdWlsbEZvcm1hdCA9ICdvYmplY3QnIHwgJ2pzb24nIHwgJ2h0bWwnIHwgJ3RleHQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1aWxsQ29uZmlnIHtcbiAgICBib3VuZHM/OiBIVE1MRWxlbWVudCB8IHN0cmluZztcbiAgICBkZWJ1Zz86ICdlcnJvcicgfCAnd2FybicgfCAnbG9nJyB8IGZhbHNlO1xuICAgIGZvcm1hdD86IFF1aWxsRm9ybWF0O1xuICAgIGZvcm1hdHM/OiBhbnk7XG4gICAgbW9kdWxlcz86IFF1aWxsTW9kdWxlcztcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICByZWFkT25seT86IGJvb2xlYW47XG4gICAgc2Nyb2xsaW5nQ29udGFpbmVyPzogSFRNTEVsZW1lbnQgfCBzdHJpbmcgfCBudWxsO1xuICAgIHRoZW1lPzogc3RyaW5nO1xuICAgIC8vIEN1c3RvbSBDb25maWcgdG8gdHJhY2sgYWxsIGNoYW5nZXMgb3Igb25seSBjaGFuZ2VzIGJ5ICd1c2VyJ1xuICAgIHRyYWNrQ2hhbmdlcz86ICd1c2VyJyB8ICdhbGwnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1aWxsRHluYW1pY0NvbmZpZyB7XG4gICAgLyoqIHBhdGggZm9yIHNjcmlwdHMgYW5kIGNzcyBlLmcuICcvYXNzZXRzL3F1aWxsLycgKi9cbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgLyoqIHBhdGggZm9yIHNjcmlwdHMgZS5nLiBbJy9hc3NldHMvcXVpbGwubWluLmpzJ10gKi9cbiAgICAvLyBzY3JpcHRzOiBzdHJpbmdbXTtcbiAgICAvKiogcGF0aCBmb3IgY3NzIGUuZy4gWycvYXNzZXRzL3F1aWxsLnNub3cuY3NzJ10gKi9cbiAgICAvLyBjc3M6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgUVVJTExfQ09ORklHX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFF1aWxsQ29uZmlnPignY29uZmlnJyk7XG5leHBvcnQgY29uc3QgUVVJTExfRFlOQU1JQ19DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UXVpbGxEeW5hbWljQ29uZmlnPignRHluYW1pYyBsb2FkaW5nIGNvbmZpZycpO1xuIl19
@@ -2,7 +2,13 @@ import { NgModule } from '@angular/core';
2
2
  import { defaultModules } from './quill-defaults';
3
3
  import { QuillEditorComponent } from './quill-editor.component';
4
4
  import { QUILL_CONFIG_TOKEN } from './quill-editor.interfaces';
5
+ import { CommonModule } from "@angular/common";
5
6
  import * as i0 from "@angular/core";
7
+ // TODO: integrate that module and all related code with the eui-editor module.
8
+ // Remove this sub-entry and move all the code to the eui-editor.
9
+ /**
10
+ * @deprecated please don't use it. It will be removed
11
+ */
6
12
  export class QuillModule {
7
13
  static forRoot(config) {
8
14
  return {
@@ -17,20 +23,20 @@ export class QuillModule {
17
23
  };
18
24
  }
19
25
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: QuillModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
20
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.6", ngImport: i0, type: QuillModule, declarations: [QuillEditorComponent], exports: [QuillEditorComponent] }); }
26
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.6", ngImport: i0, type: QuillModule, declarations: [QuillEditorComponent], imports: [CommonModule], exports: [QuillEditorComponent] }); }
21
27
  /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: QuillModule, providers: [
22
28
  {
23
29
  provide: QUILL_CONFIG_TOKEN,
24
30
  useValue: { modules: defaultModules },
25
31
  },
26
- ] }); }
32
+ ], imports: [CommonModule] }); }
27
33
  }
28
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: QuillModule, decorators: [{
29
35
  type: NgModule,
30
36
  args: [{
31
37
  declarations: [QuillEditorComponent],
32
38
  exports: [QuillEditorComponent],
33
- imports: [],
39
+ imports: [CommonModule],
34
40
  providers: [
35
41
  {
36
42
  provide: QUILL_CONFIG_TOKEN,
@@ -39,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
39
45
  ],
40
46
  }]
41
47
  }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZXh0ZXJuYWxzL3F1aWxsL3F1aWxsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFlLE1BQU0sMkJBQTJCLENBQUM7O0FBYTVFLE1BQU0sT0FBTyxXQUFXO0lBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBb0I7UUFDL0IsT0FBTztZQUNILFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQiwrREFBK0Q7b0JBQy9ELFFBQVEsRUFBRSxNQUFNLElBQUksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFO2lCQUNsRDthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7aUlBWlEsV0FBVztrSUFBWCxXQUFXLGlCQVZMLG9CQUFvQixhQUN6QixvQkFBb0I7a0lBU3JCLFdBQVcsYUFQVDtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUU7YUFDeEM7U0FDSjs7MkZBRVEsV0FBVztrQkFYdkIsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQy9CLE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFO3lCQUN4QztxQkFDSjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGRlZmF1bHRNb2R1bGVzIH0gZnJvbSAnLi9xdWlsbC1kZWZhdWx0cyc7XG5pbXBvcnQgeyBRdWlsbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vcXVpbGwtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRVUlMTF9DT05GSUdfVE9LRU4sIFF1aWxsQ29uZmlnIH0gZnJvbSAnLi9xdWlsbC1lZGl0b3IuaW50ZXJmYWNlcyc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbUXVpbGxFZGl0b3JDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtRdWlsbEVkaXRvckNvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFFVSUxMX0NPTkZJR19UT0tFTixcbiAgICAgICAgICAgIHVzZVZhbHVlOiB7IG1vZHVsZXM6IGRlZmF1bHRNb2R1bGVzIH0sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUXVpbGxNb2R1bGUge1xuICAgIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IFF1aWxsQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxRdWlsbE1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IFF1aWxsTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBRVUlMTF9DT05GSUdfVE9LRU4sXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItYXJyb3cvcHJlZmVyLWFycm93LWZ1bmN0aW9uc1xuICAgICAgICAgICAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnIHx8IHsgbW9kdWxlczogZGVmYXVsdE1vZHVsZXMgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZXh0ZXJuYWxzL3F1aWxsL3F1aWxsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFlLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUvQywrRUFBK0U7QUFDL0UscUVBQXFFO0FBRXJFOztHQUVHO0FBWUgsTUFBTSxPQUFPLFdBQVc7SUFDcEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFvQjtRQUMvQixPQUFPO1lBQ0gsUUFBUSxFQUFFLFdBQVc7WUFDckIsU0FBUyxFQUFFO2dCQUNQO29CQUNJLE9BQU8sRUFBRSxrQkFBa0I7b0JBQzNCLCtEQUErRDtvQkFDL0QsUUFBUSxFQUFFLE1BQU0sSUFBSSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUU7aUJBQ2xEO2FBQ0o7U0FDSixDQUFDO0lBQ04sQ0FBQztpSUFaUSxXQUFXO2tJQUFYLFdBQVcsaUJBVkwsb0JBQW9CLGFBRXpCLFlBQVksYUFEWixvQkFBb0I7a0lBU3JCLFdBQVcsYUFQVDtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUU7YUFDeEM7U0FDSixZQU5TLFlBQVk7OzJGQVFiLFdBQVc7a0JBWHZCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUMvQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFO3lCQUN4QztxQkFDSjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGRlZmF1bHRNb2R1bGVzIH0gZnJvbSAnLi9xdWlsbC1kZWZhdWx0cyc7XG5pbXBvcnQgeyBRdWlsbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vcXVpbGwtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRVUlMTF9DT05GSUdfVE9LRU4sIFF1aWxsQ29uZmlnIH0gZnJvbSAnLi9xdWlsbC1lZGl0b3IuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cbi8vIFRPRE86IGludGVncmF0ZSB0aGF0IG1vZHVsZSBhbmQgYWxsIHJlbGF0ZWQgY29kZSB3aXRoIHRoZSBldWktZWRpdG9yIG1vZHVsZS5cbi8vICAgICBSZW1vdmUgdGhpcyBzdWItZW50cnkgYW5kIG1vdmUgYWxsIHRoZSBjb2RlIHRvIHRoZSBldWktZWRpdG9yLlxuXG4vKipcbiAqIEBkZXByZWNhdGVkIHBsZWFzZSBkb24ndCB1c2UgaXQuIEl0IHdpbGwgYmUgcmVtb3ZlZFxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1F1aWxsRWRpdG9yQ29tcG9uZW50XSxcbiAgICBleHBvcnRzOiBbUXVpbGxFZGl0b3JDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBRVUlMTF9DT05GSUdfVE9LRU4sXG4gICAgICAgICAgICB1c2VWYWx1ZTogeyBtb2R1bGVzOiBkZWZhdWx0TW9kdWxlcyB9LFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFF1aWxsTW9kdWxlIHtcbiAgICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBRdWlsbENvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8UXVpbGxNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBRdWlsbE1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogUVVJTExfQ09ORklHX1RPS0VOLFxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWFycm93L3ByZWZlci1hcnJvdy1mdW5jdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZyB8fCB7IG1vZHVsZXM6IGRlZmF1bHRNb2R1bGVzIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19