@veloceapps/sdk 7.0.1-1 → 7.0.1-3

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,23 +2,23 @@ import { __decorate } from "tslib";
2
2
  import { DragDropModule } from '@angular/cdk/drag-drop';
3
3
  import { ScrollingModule } from '@angular/cdk/scrolling';
4
4
  import { CommonModule } from '@angular/common';
5
- import { Compiler, Injectable, NgModule } from '@angular/core';
5
+ import { Injectable, Injector, NgModule, createNgModule } from '@angular/core';
6
6
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
7
7
  import { DndModule } from 'ngx-drag-drop';
8
- import { combineLatest, from, map, of, switchMap } from 'rxjs';
9
- import { ElementChildrenComponent } from '../../../components/element-children/element-children.component';
10
- import { ElementDropHandleComponent } from '../../../components/element-drop-handle/element-drop-handle.component';
11
- import { ElementRendererComponent } from '../../../components/element-renderer/element-renderer.component';
12
- import { CustomTemplateDirective } from '../../../directives/custom-template.directive';
8
+ import { map, of } from 'rxjs';
9
+ import { ElementChildrenModule } from '../../../components/element-children/element-children.module';
10
+ import { ElementDropHandleModule } from '../../../components/element-drop-handle/element-drop-handle.module';
11
+ import { ElementRendererModule } from '../../../components/element-renderer/element-renderer.module';
12
+ import { CustomTemplateDirectiveModule } from '../../../directives/custom-template.directive';
13
13
  import { ElementsResolver, elementToMetadata } from '../../../utils';
14
14
  import { FederatedModule } from '../../federated/federated.module';
15
15
  import * as i0 from "@angular/core";
16
16
  export class CompilationService {
17
- constructor(compiler) {
18
- this.compiler = compiler;
17
+ constructor(injector) {
18
+ this.injector = injector;
19
19
  }
20
20
  compileUIDefinition$(uiDefinition) {
21
- return of([]).pipe(switchMap(() => {
21
+ return of([]).pipe(map(() => {
22
22
  const { children, pages, components, ...uiDefinitionMeta } = uiDefinition;
23
23
  this.uiDefinitionMeta = uiDefinitionMeta;
24
24
  const elements = [...(children ?? []), ...(pages ?? [])];
@@ -26,35 +26,35 @@ export class CompilationService {
26
26
  const metadata = elements.map(element => elementToMetadata(element));
27
27
  const sharedMetadata = sharedElements.map(element => elementToMetadata(element));
28
28
  this.elementsResolver = new ElementsResolver(uiDefinition, metadata, sharedMetadata);
29
- const module = this.getModule(this.elementsResolver.getNgComponents());
30
- return combineLatest([
31
- from(this.compiler.compileModuleAndAllComponentsAsync(module)),
32
- of(this.elementsResolver),
33
- ]);
34
- }), map(([module, elementsResolver]) => ({ module, elements: elementsResolver.elements })));
29
+ const componentTypes = this.elementsResolver.getNgComponents();
30
+ const module = this.getModule(componentTypes);
31
+ return {
32
+ moduleRef: createNgModule(module, this.injector),
33
+ elements: this.elementsResolver?.elements ?? [],
34
+ componentTypes,
35
+ };
36
+ }));
35
37
  }
36
38
  compileElement$(element) {
37
39
  if (!this.uiDefinitionMeta) {
38
40
  throw 'No UI Definition context';
39
41
  }
40
- return of(this.uiDefinitionMeta).pipe(switchMap(uiDefinition => {
42
+ return of(this.uiDefinitionMeta).pipe(map(uiDefinition => {
41
43
  const elementsResolver = this.elementsResolver ?? new ElementsResolver(uiDefinition, []);
42
44
  elementsResolver.addElement(element);
43
- const module = this.getModule(elementsResolver.getNgComponents());
44
- return combineLatest([from(this.compiler.compileModuleAndAllComponentsAsync(module)), of(elementsResolver)]);
45
- }), map(([module, elementsResolver]) => ({ module, elements: elementsResolver.elements })));
45
+ const componentTypes = elementsResolver.getNgComponents();
46
+ const module = this.getModule(componentTypes);
47
+ return {
48
+ moduleRef: createNgModule(module, this.injector),
49
+ elements: this.elementsResolver?.elements ?? [],
50
+ componentTypes,
51
+ };
52
+ }));
46
53
  }
47
- clearModuleCache(modules) {
48
- modules.forEach(module => this.compiler.clearCacheFor(module));
54
+ clear() {
49
55
  this.uiDefinitionMeta = undefined;
50
56
  }
51
57
  getModule(components) {
52
- const staticComponents = [
53
- ElementChildrenComponent,
54
- ElementRendererComponent,
55
- ElementDropHandleComponent,
56
- CustomTemplateDirective,
57
- ];
58
58
  let DynamicModule = class DynamicModule {
59
59
  };
60
60
  DynamicModule = __decorate([
@@ -63,21 +63,25 @@ export class CompilationService {
63
63
  CommonModule,
64
64
  FormsModule,
65
65
  ReactiveFormsModule,
66
- FederatedModule,
67
66
  DragDropModule,
68
67
  DndModule,
69
68
  ScrollingModule,
69
+ ElementChildrenModule,
70
+ ElementRendererModule,
71
+ ElementDropHandleModule,
72
+ CustomTemplateDirectiveModule,
73
+ FederatedModule,
70
74
  ],
71
- declarations: [...staticComponents, ...components],
75
+ declarations: Object.values(components),
72
76
  jit: true,
73
77
  })
74
78
  ], DynamicModule);
75
79
  return DynamicModule;
76
80
  }
77
81
  }
78
- CompilationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: CompilationService, deps: [{ token: i0.Compiler }], target: i0.ɵɵFactoryTarget.Injectable });
82
+ CompilationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: CompilationService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
79
83
  CompilationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: CompilationService });
80
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: CompilationService, decorators: [{
81
85
  type: Injectable
82
- }], ctorParameters: function () { return [{ type: i0.Compiler }]; } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2Ntcy9tb2R1bGVzL3J1bnRpbWUvc2VydmljZXMvY29tcGlsYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ25ILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBR3hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFHbkUsTUFBTSxPQUFPLGtCQUFrQjtJQUk3QixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lB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QyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxVQUF1QjtRQUN2QyxNQUFNLGdCQUFnQixHQUFHO1lBQ3ZCLHdCQUF3QjtZQUN4Qix3QkFBd0I7WUFDeEIsMEJBQTBCO1lBQzFCLHVCQUF1QjtTQUN4QixDQUFDO1FBZUYsSUFBTSxhQUFhLEdBQW5CLE1BQU0sYUFBYTtTQUFHLENBQUE7UUFBaEIsYUFBYTtZQWJsQixRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxtQkFBbUI7b0JBQ25CLGVBQWU7b0JBQ2YsY0FBYztvQkFDZCxTQUFTO29CQUNULGVBQWU7aUJBQ2hCO2dCQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxVQUFVLENBQUM7Z0JBQ2xELEdBQUcsRUFBRSxJQUFJO2FBQ1YsQ0FBQztXQUNJLGFBQWEsQ0FBRztRQUV0QixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOzsrR0E1RVUsa0JBQWtCO21IQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21waWxlciwgSW5qZWN0YWJsZSwgTmdNb2R1bGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVUlEZWZpbml0aW9uLCBVSURlZmluaXRpb25NZXRhZGF0YSB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IERuZE1vZHVsZSB9IGZyb20gJ25neC1kcmFnLWRyb3AnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZnJvbSwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbGVtZW50Q2hpbGRyZW5Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2VsZW1lbnQtY2hpbGRyZW4vZWxlbWVudC1jaGlsZHJlbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWxlbWVudERyb3BIYW5kbGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2VsZW1lbnQtZHJvcC1oYW5kbGUvZWxlbWVudC1kcm9wLWhhbmRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWxlbWVudFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9lbGVtZW50LXJlbmRlcmVyL2VsZW1lbnQtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9jdXN0b20tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbXBpbGF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vbW9kdWxlcy9ydW50aW1lL3R5cGVzL2NvbXBpbGF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEVsZW1lbnRNZXRhZGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbW1vbi50eXBlcyc7XG5pbXBvcnQgeyBFbGVtZW50c1Jlc29sdmVyLCBlbGVtZW50VG9NZXRhZGF0YSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEZlZGVyYXRlZE1vZHVsZSB9IGZyb20gJy4uLy4uL2ZlZGVyYXRlZC9mZWRlcmF0ZWQubW9kdWxlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbXBpbGF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgdWlEZWZpbml0aW9uTWV0YT86IFVJRGVmaW5pdGlvbk1ldGFkYXRhO1xuICBwcml2YXRlIGVsZW1lbnRzUmVzb2x2ZXI/OiBFbGVtZW50c1Jlc29sdmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyKSB7fVxuXG4gIHB1YmxpYyBjb21waWxlVUlEZWZpbml0aW9uJCh1aURlZmluaXRpb246IFVJRGVmaW5pdGlvbik6IE9ic2VydmFibGU8Q29tcGlsYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gb2YoW10pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlcywgY29tcG9uZW50cywgLi4udWlEZWZpbml0aW9uTWV0YSB9ID0gdWlEZWZpbml0aW9uO1xuICAgICAgICB0aGlzLnVpRGVmaW5pdGlvbk1ldGEgPSB1aURlZmluaXRpb25NZXRhO1xuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLihjaGlsZHJlbiA/PyBbXSksIC4uLihwYWdlcyA/PyBbXSldO1xuICAgICAgICBjb25zdCBzaGFyZWRFbGVtZW50cyA9IGNvbXBvbmVudHMgPz8gW107XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBlbGVtZW50cy5tYXAoZWxlbWVudCA9PiBlbGVtZW50VG9NZXRhZGF0YShlbGVtZW50KSk7XG4gICAgICAgIGNvbnN0IHNoYXJlZE1ldGFkYXRhID0gc2hhcmVkRWxlbWVudHMubWFwKGVsZW1lbnQgPT4gZWxlbWVudFRvTWV0YWRhdGEoZWxlbWVudCkpO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudHNSZXNvbHZlciA9IG5ldyBFbGVtZW50c1Jlc29sdmVyKHVpRGVmaW5pdGlvbiwgbWV0YWRhdGEsIHNoYXJlZE1ldGFkYXRhKTtcbiAgICAgICAgY29uc3QgbW9kdWxlID0gdGhpcy5nZXRNb2R1bGUodGhpcy5lbGVtZW50c1Jlc29sdmVyLmdldE5nQ29tcG9uZW50cygpKTtcblxuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgZnJvbSh0aGlzLmNvbXBpbGVyLmNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzQXN5bmMobW9kdWxlKSksXG4gICAgICAgICAgb2YodGhpcy5lbGVtZW50c1Jlc29sdmVyKSxcbiAgICAgICAgXSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoW21vZHVsZSwgZWxlbWVudHNSZXNvbHZlcl0pID0+ICh7IG1vZHVsZSwgZWxlbWVudHM6IGVsZW1lbnRzUmVzb2x2ZXIuZWxlbWVudHMgfSkpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZUVsZW1lbnQkKGVsZW1lbnQ6IEVsZW1lbnRNZXRhZGF0YSk6IE9ic2VydmFibGU8Q29tcGlsYXRpb25SZXN1bHQ+IHtcbiAgICBpZiAoIXRoaXMudWlEZWZpbml0aW9uTWV0YSkge1xuICAgICAgdGhyb3cgJ05vIFVJIERlZmluaXRpb24gY29udGV4dCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKHRoaXMudWlEZWZpbml0aW9uTWV0YSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCh1aURlZmluaXRpb24gPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50c1Jlc29sdmVyID0gdGhpcy5lbGVtZW50c1Jlc29sdmVyID8/IG5ldyBFbGVtZW50c1Jlc29sdmVyKHVpRGVmaW5pdGlvbiwgW10pO1xuICAgICAgICBlbGVtZW50c1Jlc29sdmVyLmFkZEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IHRoaXMuZ2V0TW9kdWxlKGVsZW1lbnRzUmVzb2x2ZXIuZ2V0TmdDb21wb25lbnRzKCkpO1xuXG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtmcm9tKHRoaXMuY29tcGlsZXIuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNBc3luYyhtb2R1bGUpKSwgb2YoZWxlbWVudHNSZXNvbHZlcildKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKChbbW9kdWxlLCBlbGVtZW50c1Jlc29sdmVyXSkgPT4gKHsgbW9kdWxlLCBlbGVtZW50czogZWxlbWVudHNSZXNvbHZlci5lbGVtZW50cyB9KSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhck1vZHVsZUNhY2hlKG1vZHVsZXM6IFR5cGU8TmdNb2R1bGU+W10pOiB2b2lkIHtcbiAgICBtb2R1bGVzLmZvckVhY2gobW9kdWxlID0+IHRoaXMuY29tcGlsZXIuY2xlYXJDYWNoZUZvcihtb2R1bGUpKTtcbiAgICB0aGlzLnVpRGVmaW5pdGlvbk1ldGEgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldE1vZHVsZShjb21wb25lbnRzOiBUeXBlPGFueT5bXSk6IFR5cGU8TmdNb2R1bGU+IHtcbiAgICBjb25zdCBzdGF0aWNDb21wb25lbnRzID0gW1xuICAgICAgRWxlbWVudENoaWxkcmVuQ29tcG9uZW50LFxuICAgICAgRWxlbWVudFJlbmRlcmVyQ29tcG9uZW50LFxuICAgICAgRWxlbWVudERyb3BIYW5kbGVDb21wb25lbnQsXG4gICAgICBDdXN0b21UZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBdO1xuXG4gICAgQE5nTW9kdWxlKHtcbiAgICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRmVkZXJhdGVkTW9kdWxlLFxuICAgICAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICAgICAgRG5kTW9kdWxlLFxuICAgICAgICBTY3JvbGxpbmdNb2R1bGUsXG4gICAgICBdLFxuICAgICAgZGVjbGFyYXRpb25zOiBbLi4uc3RhdGljQ29tcG9uZW50cywgLi4uY29tcG9uZW50c10sXG4gICAgICBqaXQ6IHRydWUsXG4gICAgfSlcbiAgICBjbGFzcyBEeW5hbWljTW9kdWxlIHt9XG5cbiAgICByZXR1cm4gRHluYW1pY01vZHVsZTtcbiAgfVxufVxuIl19
86
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2Ntcy9tb2R1bGVzL3J1bnRpbWUvc2VydmljZXMvY29tcGlsYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFRLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQWMsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNyRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUk5RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBR25FLE1BQU0sT0FBTyxrQkFBa0I7SUFJN0IsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFbkMsb0JBQW9C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QUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO2dCQUN2QyxHQUFHLEVBQUUsSUFBSTthQUNWLENBQUM7V0FDSSxhQUFhLENBQUc7UUFFdEIsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQzs7K0dBN0VVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nTW9kdWxlLCBUeXBlLCBjcmVhdGVOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBVSURlZmluaXRpb24sIFVJRGVmaW5pdGlvbk1ldGFkYXRhIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuaW1wb3J0IHsgRG5kTW9kdWxlIH0gZnJvbSAnbmd4LWRyYWctZHJvcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbGVtZW50Q2hpbGRyZW5Nb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2VsZW1lbnQtY2hpbGRyZW4vZWxlbWVudC1jaGlsZHJlbi5tb2R1bGUnO1xuaW1wb3J0IHsgRWxlbWVudERyb3BIYW5kbGVNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2VsZW1lbnQtZHJvcC1oYW5kbGUvZWxlbWVudC1kcm9wLWhhbmRsZS5tb2R1bGUnO1xuaW1wb3J0IHsgRWxlbWVudFJlbmRlcmVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9lbGVtZW50LXJlbmRlcmVyL2VsZW1lbnQtcmVuZGVyZXIubW9kdWxlJztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlRGlyZWN0aXZlTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9jdXN0b20tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uLy4uLy4uL2VuZ2luZS9tb2RlbHMvZW50aXR5JztcbmltcG9ydCB7IENvbXBpbGF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vbW9kdWxlcy9ydW50aW1lL3R5cGVzL2NvbXBpbGF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEVsZW1lbnRNZXRhZGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbW1vbi50eXBlcyc7XG5pbXBvcnQgeyBFbGVtZW50c1Jlc29sdmVyLCBlbGVtZW50VG9NZXRhZGF0YSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEZlZGVyYXRlZE1vZHVsZSB9IGZyb20gJy4uLy4uL2ZlZGVyYXRlZC9mZWRlcmF0ZWQubW9kdWxlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbXBpbGF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgdWlEZWZpbml0aW9uTWV0YT86IFVJRGVmaW5pdGlvbk1ldGFkYXRhO1xuICBwcml2YXRlIGVsZW1lbnRzUmVzb2x2ZXI/OiBFbGVtZW50c1Jlc29sdmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIHB1YmxpYyBjb21waWxlVUlEZWZpbml0aW9uJCh1aURlZmluaXRpb246IFVJRGVmaW5pdGlvbik6IE9ic2VydmFibGU8Q29tcGlsYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gb2YoW10pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlcywgY29tcG9uZW50cywgLi4udWlEZWZpbml0aW9uTWV0YSB9ID0gdWlEZWZpbml0aW9uO1xuICAgICAgICB0aGlzLnVpRGVmaW5pdGlvbk1ldGEgPSB1aURlZmluaXRpb25NZXRhO1xuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLihjaGlsZHJlbiA/PyBbXSksIC4uLihwYWdlcyA/PyBbXSldO1xuICAgICAgICBjb25zdCBzaGFyZWRFbGVtZW50cyA9IGNvbXBvbmVudHMgPz8gW107XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBlbGVtZW50cy5tYXAoZWxlbWVudCA9PiBlbGVtZW50VG9NZXRhZGF0YShlbGVtZW50KSk7XG4gICAgICAgIGNvbnN0IHNoYXJlZE1ldGFkYXRhID0gc2hhcmVkRWxlbWVudHMubWFwKGVsZW1lbnQgPT4gZWxlbWVudFRvTWV0YWRhdGEoZWxlbWVudCkpO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudHNSZXNvbHZlciA9IG5ldyBFbGVtZW50c1Jlc29sdmVyKHVpRGVmaW5pdGlvbiwgbWV0YWRhdGEsIHNoYXJlZE1ldGFkYXRhKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZXMgPSB0aGlzLmVsZW1lbnRzUmVzb2x2ZXIuZ2V0TmdDb21wb25lbnRzKCk7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IHRoaXMuZ2V0TW9kdWxlKGNvbXBvbmVudFR5cGVzKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1vZHVsZVJlZjogY3JlYXRlTmdNb2R1bGUobW9kdWxlLCB0aGlzLmluamVjdG9yKSxcbiAgICAgICAgICBlbGVtZW50czogdGhpcy5lbGVtZW50c1Jlc29sdmVyPy5lbGVtZW50cyA/PyBbXSxcbiAgICAgICAgICBjb21wb25lbnRUeXBlcyxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZUVsZW1lbnQkKGVsZW1lbnQ6IEVsZW1lbnRNZXRhZGF0YSk6IE9ic2VydmFibGU8Q29tcGlsYXRpb25SZXN1bHQ+IHtcbiAgICBpZiAoIXRoaXMudWlEZWZpbml0aW9uTWV0YSkge1xuICAgICAgdGhyb3cgJ05vIFVJIERlZmluaXRpb24gY29udGV4dCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKHRoaXMudWlEZWZpbml0aW9uTWV0YSkucGlwZShcbiAgICAgIG1hcCh1aURlZmluaXRpb24gPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50c1Jlc29sdmVyID0gdGhpcy5lbGVtZW50c1Jlc29sdmVyID8/IG5ldyBFbGVtZW50c1Jlc29sdmVyKHVpRGVmaW5pdGlvbiwgW10pO1xuICAgICAgICBlbGVtZW50c1Jlc29sdmVyLmFkZEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFR5cGVzID0gZWxlbWVudHNSZXNvbHZlci5nZXROZ0NvbXBvbmVudHMoKTtcbiAgICAgICAgY29uc3QgbW9kdWxlID0gdGhpcy5nZXRNb2R1bGUoY29tcG9uZW50VHlwZXMpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbW9kdWxlUmVmOiBjcmVhdGVOZ01vZHVsZShtb2R1bGUsIHRoaXMuaW5qZWN0b3IpLFxuICAgICAgICAgIGVsZW1lbnRzOiB0aGlzLmVsZW1lbnRzUmVzb2x2ZXI/LmVsZW1lbnRzID8/IFtdLFxuICAgICAgICAgIGNvbXBvbmVudFR5cGVzLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnVpRGVmaW5pdGlvbk1ldGEgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldE1vZHVsZShjb21wb25lbnRzOiBSZWNvcmQ8c3RyaW5nLCBUeXBlPEVudGl0eT4+KTogVHlwZTxOZ01vZHVsZT4ge1xuICAgIEBOZ01vZHVsZSh7XG4gICAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIERyYWdEcm9wTW9kdWxlLFxuICAgICAgICBEbmRNb2R1bGUsXG4gICAgICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICAgICAgRWxlbWVudENoaWxkcmVuTW9kdWxlLFxuICAgICAgICBFbGVtZW50UmVuZGVyZXJNb2R1bGUsXG4gICAgICAgIEVsZW1lbnREcm9wSGFuZGxlTW9kdWxlLFxuICAgICAgICBDdXN0b21UZW1wbGF0ZURpcmVjdGl2ZU1vZHVsZSxcbiAgICAgICAgRmVkZXJhdGVkTW9kdWxlLFxuICAgICAgXSxcbiAgICAgIGRlY2xhcmF0aW9uczogT2JqZWN0LnZhbHVlcyhjb21wb25lbnRzKSxcbiAgICAgIGppdDogdHJ1ZSxcbiAgICB9KVxuICAgIGNsYXNzIER5bmFtaWNNb2R1bGUge31cblxuICAgIHJldHVybiBEeW5hbWljTW9kdWxlO1xuICB9XG59XG4iXX0=
@@ -1,14 +1,14 @@
1
1
  import { Injectable, Injector } from '@angular/core';
2
2
  import { applyPatch } from 'rfc6902';
3
- import { BehaviorSubject, distinctUntilChanged, map, of, startWith, Subject, switchMap, tap } from 'rxjs';
3
+ import { BehaviorSubject, Subject, distinctUntilChanged, map, of, startWith, switchMap, tap } from 'rxjs';
4
4
  import { findElementByPath } from '../../../utils/ui-definition.utils';
5
5
  import { CMS_COMPILATION_SERVICE } from '../tokens';
6
6
  import * as i0 from "@angular/core";
7
7
  export class RuntimeService {
8
8
  constructor(injector) {
9
9
  this.injector = injector;
10
- this.modules = [];
11
- this.componentFactories = {};
10
+ this.moduleRefs = [];
11
+ this.componentTypes = {};
12
12
  this.applicationTree = [];
13
13
  this.isInitialized$ = new BehaviorSubject(false);
14
14
  this.updated$ = new Subject();
@@ -21,7 +21,11 @@ export class RuntimeService {
21
21
  }
22
22
  return this.compilationService.compileUIDefinition$(uiDefinition).pipe(map(result => {
23
23
  this.applicationTree = result.elements;
24
- this.addComponentFactories(result.module.componentFactories);
24
+ this.componentTypes = {
25
+ ...this.componentTypes,
26
+ ...result.componentTypes,
27
+ };
28
+ this.moduleRefs.push(result.moduleRef);
25
29
  return result.elements;
26
30
  }), tap(() => this.isInitialized$.next(true)));
27
31
  }
@@ -47,28 +51,30 @@ export class RuntimeService {
47
51
  return this.updated$.pipe(startWith(undefined), map(() => findElementByPath(this.applicationTree, path)), distinctUntilChanged());
48
52
  }
49
53
  clear() {
50
- this.compilationService.clearModuleCache(this.modules);
51
- this.modules = [];
54
+ this.compilationService.clear();
55
+ this.moduleRefs.forEach(m => m.destroy());
56
+ this.moduleRefs = [];
52
57
  this.applicationTree = [];
53
- this.componentFactories = {};
58
+ this.componentTypes = {};
54
59
  this.isInitialized$.next(false);
55
60
  }
56
61
  addElement$(operation) {
57
62
  return this.compilationService.compileElement$(operation.value).pipe(map(result => {
58
- this.addComponentFactories(result.module.componentFactories);
63
+ this.componentTypes = {
64
+ ...this.componentTypes,
65
+ ...result.componentTypes,
66
+ };
67
+ this.moduleRefs.push(result.moduleRef);
59
68
  applyPatch(this.applicationTree, [{ ...operation, value: result.elements[0] }]);
60
69
  }));
61
70
  }
62
71
  deleteElement(operation) {
63
72
  applyPatch(this.applicationTree, [operation]);
64
73
  }
65
- addComponentFactories(list) {
66
- list.forEach(item => (this.componentFactories[item.componentType.path] = item));
67
- }
68
74
  }
69
75
  RuntimeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RuntimeService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
70
76
  RuntimeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RuntimeService });
71
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: RuntimeService, decorators: [{
72
78
  type: Injectable
73
79
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL21vZHVsZXMvcnVudGltZS9zZXJ2aWNlcy9ydW50aW1lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixVQUFVLEVBQUUsUUFBUSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsVUFBVSxFQUFTLE1BQU0sU0FBUyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUlwRCxNQUFNLE9BQU8sY0FBYztJQVV6QixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBVC9CLFlBQU8sR0FBcUIsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUEwQyxFQUFFLENBQUM7UUFDL0Qsb0JBQWUsR0FBc0IsRUFBRSxDQUFDO1FBRXhDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFLcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVNLFdBQVcsQ0FBQyxZQUEyQixFQUFFLE1BQXlCO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXJCLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZjtRQUVELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FDcEUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDN0QsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFZO1FBQzdCLElBQUksV0FBVyxHQUFvQixFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFakQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN4QixRQUFRLFNBQVMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3BCLEtBQUssS0FBSyxDQUFDLENBQUM7b0JBQ1YsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM3RSxNQUFNO2lCQUNQO2dCQUNELEtBQUssUUFBUSxDQUFDLENBQUM7b0JBQ2IsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6RSxNQUFNO2lCQUNQO2dCQUNEO29CQUNFLFdBQVcsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsSUFBWTtRQUNyQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN2QixTQUFTLENBQUMsU0FBUyxDQUFDLEVBQ3BCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQ3hELG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sV0FBVyxDQUFDLFNBQXVCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUNsRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzdELFVBQVUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBRSxHQUFHLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FBQyxTQUEwQjtRQUM5QyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQTZCO1FBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsYUFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7OzJHQW5GVSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudEZhY3RvcnksIEluamVjdGFibGUsIEluamVjdG9yLCBOZ01vZHVsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVUlEZWZpbml0aW9uIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlQYXRjaCwgUGF0Y2ggfSBmcm9tICdyZmM2OTAyJztcbmltcG9ydCB7IEFkZE9wZXJhdGlvbiwgUmVtb3ZlT3BlcmF0aW9uIH0gZnJvbSAncmZjNjkwMi9kaWZmJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENNU1ByZXZpZXdDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3ByZXZpZXcvcHJldmlldy50eXBlcyc7XG5pbXBvcnQgeyBFbGVtZW50TWV0YWRhdGEgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBmaW5kRWxlbWVudEJ5UGF0aCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3VpLWRlZmluaXRpb24udXRpbHMnO1xuaW1wb3J0IHsgQ01TX0NPTVBJTEFUSU9OX1NFUlZJQ0UgfSBmcm9tICcuLi90b2tlbnMnO1xuaW1wb3J0IHR5cGUgeyBDb21waWxhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbXBpbGF0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUnVudGltZVNlcnZpY2Uge1xuICBwdWJsaWMgbW9kdWxlczogVHlwZTxOZ01vZHVsZT5bXSA9IFtdO1xuICBwdWJsaWMgY29tcG9uZW50RmFjdG9yaWVzOiBSZWNvcmQ8c3RyaW5nLCBDb21wb25lbnRGYWN0b3J5PGFueT4+ID0ge307XG4gIHB1YmxpYyBhcHBsaWNhdGlvblRyZWU6IEVsZW1lbnRNZXRhZGF0YVtdID0gW107XG4gIHB1YmxpYyBjb25maWc/OiBDTVNQcmV2aWV3Q29uZmlnO1xuICBwdWJsaWMgaXNJbml0aWFsaXplZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIHVwZGF0ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIGNvbXBpbGF0aW9uU2VydmljZTogQ29tcGlsYXRpb25TZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5jb21waWxhdGlvblNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChDTVNfQ09NUElMQVRJT05fU0VSVklDRSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSQodWlEZWZpbml0aW9uPzogVUlEZWZpbml0aW9uLCBjb25maWc/OiBDTVNQcmV2aWV3Q29uZmlnKTogT2JzZXJ2YWJsZTxFbGVtZW50TWV0YWRhdGFbXT4ge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuXG4gICAgaWYgKCF1aURlZmluaXRpb24pIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29tcGlsYXRpb25TZXJ2aWNlLmNvbXBpbGVVSURlZmluaXRpb24kKHVpRGVmaW5pdGlvbikucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICB0aGlzLmFwcGxpY2F0aW9uVHJlZSA9IHJlc3VsdC5lbGVtZW50cztcbiAgICAgICAgdGhpcy5hZGRDb21wb25lbnRGYWN0b3JpZXMocmVzdWx0Lm1vZHVsZS5jb21wb25lbnRGYWN0b3JpZXMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmVsZW1lbnRzO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5pc0luaXRpYWxpemVkJC5uZXh0KHRydWUpKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFwcGx5UGF0Y2gkKHBhdGNoOiBQYXRjaCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGxldCBvYnNlcnZhYmxlJDogT2JzZXJ2YWJsZTxhbnk+ID0gb2YodW5kZWZpbmVkKTtcblxuICAgIHBhdGNoLmZvckVhY2gob3BlcmF0aW9uID0+IHtcbiAgICAgIHN3aXRjaCAob3BlcmF0aW9uLm9wKSB7XG4gICAgICAgIGNhc2UgJ2FkZCc6IHtcbiAgICAgICAgICBvYnNlcnZhYmxlJCA9IG9ic2VydmFibGUkLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMuYWRkRWxlbWVudCQob3BlcmF0aW9uKSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3JlbW92ZSc6IHtcbiAgICAgICAgICBvYnNlcnZhYmxlJCA9IG9ic2VydmFibGUkLnBpcGUobWFwKCgpID0+IHRoaXMuZGVsZXRlRWxlbWVudChvcGVyYXRpb24pKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBvYnNlcnZhYmxlJCA9IG9mKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2JzZXJ2YWJsZSQucGlwZSh0YXAoKCkgPT4gdGhpcy51cGRhdGVkJC5uZXh0KCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb21waWxlZEVsZW1lbnQkKHBhdGg6IHN0cmluZyk6IE9ic2VydmFibGU8RWxlbWVudE1ldGFkYXRhIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZCQucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgbWFwKCgpID0+IGZpbmRFbGVtZW50QnlQYXRoKHRoaXMuYXBwbGljYXRpb25UcmVlLCBwYXRoKSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5jb21waWxhdGlvblNlcnZpY2UuY2xlYXJNb2R1bGVDYWNoZSh0aGlzLm1vZHVsZXMpO1xuICAgIHRoaXMubW9kdWxlcyA9IFtdO1xuICAgIHRoaXMuYXBwbGljYXRpb25UcmVlID0gW107XG4gICAgdGhpcy5jb21wb25lbnRGYWN0b3JpZXMgPSB7fTtcbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFbGVtZW50JChvcGVyYXRpb246IEFkZE9wZXJhdGlvbik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbXBpbGF0aW9uU2VydmljZS5jb21waWxlRWxlbWVudCQob3BlcmF0aW9uLnZhbHVlKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMuYWRkQ29tcG9uZW50RmFjdG9yaWVzKHJlc3VsdC5tb2R1bGUuY29tcG9uZW50RmFjdG9yaWVzKTtcbiAgICAgICAgYXBwbHlQYXRjaCh0aGlzLmFwcGxpY2F0aW9uVHJlZSwgW3sgLi4ub3BlcmF0aW9uLCB2YWx1ZTogcmVzdWx0LmVsZW1lbnRzWzBdIH1dKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUVsZW1lbnQob3BlcmF0aW9uOiBSZW1vdmVPcGVyYXRpb24pOiB2b2lkIHtcbiAgICBhcHBseVBhdGNoKHRoaXMuYXBwbGljYXRpb25UcmVlLCBbb3BlcmF0aW9uXSk7XG4gIH1cblxuICBwcml2YXRlIGFkZENvbXBvbmVudEZhY3RvcmllcyhsaXN0OiBDb21wb25lbnRGYWN0b3J5PGFueT5bXSk6IHZvaWQge1xuICAgIGxpc3QuZm9yRWFjaChpdGVtID0+ICh0aGlzLmNvbXBvbmVudEZhY3Rvcmllc1soaXRlbS5jb21wb25lbnRUeXBlIGFzIGFueSkucGF0aF0gPSBpdGVtKSk7XG4gIH1cbn1cbiJdfQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL21vZHVsZXMvcnVudGltZS9zZXJ2aWNlcy9ydW50aW1lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBUyxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFNUMsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUl0SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBSXBELE1BQU0sT0FBTyxjQUFjO0lBVXpCLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFUL0IsZUFBVSxHQUE0QixFQUFFLENBQUM7UUFDekMsbUJBQWMsR0FBaUMsRUFBRSxDQUFDO1FBQ2xELG9CQUFlLEdBQXNCLEVBQUUsQ0FBQztRQUV4QyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBS3BDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxXQUFXLENBQUMsWUFBMkIsRUFBRSxNQUF5QjtRQUN2RSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLE9BQU8sRUFBRSxDQUFD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QUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2QyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhLENBQUMsU0FBMEI7UUFDOUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7OzJHQXhGVSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBOZ01vZHVsZSwgTmdNb2R1bGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVJRGVmaW5pdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IFBhdGNoLCBhcHBseVBhdGNoIH0gZnJvbSAncmZjNjkwMic7XG5pbXBvcnQgeyBBZGRPcGVyYXRpb24sIFJlbW92ZU9wZXJhdGlvbiB9IGZyb20gJ3JmYzY5MDIvZGlmZic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIG9mLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDTVNQcmV2aWV3Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9wcmV2aWV3L3ByZXZpZXcudHlwZXMnO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vLi4vZW5naW5lL21vZGVscy9lbnRpdHknO1xuaW1wb3J0IHsgRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgZmluZEVsZW1lbnRCeVBhdGggfSBmcm9tICcuLi8uLi8uLi91dGlscy91aS1kZWZpbml0aW9uLnV0aWxzJztcbmltcG9ydCB7IENNU19DT01QSUxBVElPTl9TRVJWSUNFIH0gZnJvbSAnLi4vdG9rZW5zJztcbmltcG9ydCB0eXBlIHsgQ29tcGlsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9jb21waWxhdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVTZXJ2aWNlIHtcbiAgcHVibGljIG1vZHVsZVJlZnM6IE5nTW9kdWxlUmVmPE5nTW9kdWxlPltdID0gW107XG4gIHB1YmxpYyBjb21wb25lbnRUeXBlczogUmVjb3JkPHN0cmluZywgVHlwZTxFbnRpdHk+PiA9IHt9O1xuICBwdWJsaWMgYXBwbGljYXRpb25UcmVlOiBFbGVtZW50TWV0YWRhdGFbXSA9IFtdO1xuICBwdWJsaWMgY29uZmlnPzogQ01TUHJldmlld0NvbmZpZztcbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHB1YmxpYyB1cGRhdGVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBjb21waWxhdGlvblNlcnZpY2U6IENvbXBpbGF0aW9uU2VydmljZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMuY29tcGlsYXRpb25TZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQ01TX0NPTVBJTEFUSU9OX1NFUlZJQ0UpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUkKHVpRGVmaW5pdGlvbj86IFVJRGVmaW5pdGlvbiwgY29uZmlnPzogQ01TUHJldmlld0NvbmZpZyk6IE9ic2VydmFibGU8RWxlbWVudE1ldGFkYXRhW10+IHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICAgIGlmICghdWlEZWZpbml0aW9uKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbXBpbGF0aW9uU2VydmljZS5jb21waWxlVUlEZWZpbml0aW9uJCh1aURlZmluaXRpb24pLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5hcHBsaWNhdGlvblRyZWUgPSByZXN1bHQuZWxlbWVudHM7XG4gICAgICAgIHRoaXMuY29tcG9uZW50VHlwZXMgPSB7XG4gICAgICAgICAgLi4udGhpcy5jb21wb25lbnRUeXBlcyxcbiAgICAgICAgICAuLi5yZXN1bHQuY29tcG9uZW50VHlwZXMsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubW9kdWxlUmVmcy5wdXNoKHJlc3VsdC5tb2R1bGVSZWYpO1xuICAgICAgICByZXR1cm4gcmVzdWx0LmVsZW1lbnRzO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5pc0luaXRpYWxpemVkJC5uZXh0KHRydWUpKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFwcGx5UGF0Y2gkKHBhdGNoOiBQYXRjaCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGxldCBvYnNlcnZhYmxlJDogT2JzZXJ2YWJsZTx2b2lkPiA9IG9mKHVuZGVmaW5lZCk7XG5cbiAgICBwYXRjaC5mb3JFYWNoKG9wZXJhdGlvbiA9PiB7XG4gICAgICBzd2l0Y2ggKG9wZXJhdGlvbi5vcCkge1xuICAgICAgICBjYXNlICdhZGQnOiB7XG4gICAgICAgICAgb2JzZXJ2YWJsZSQgPSBvYnNlcnZhYmxlJC5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLmFkZEVsZW1lbnQkKG9wZXJhdGlvbikpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdyZW1vdmUnOiB7XG4gICAgICAgICAgb2JzZXJ2YWJsZSQgPSBvYnNlcnZhYmxlJC5waXBlKG1hcCgoKSA9PiB0aGlzLmRlbGV0ZUVsZW1lbnQob3BlcmF0aW9uKSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgb2JzZXJ2YWJsZSQgPSBvZigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9ic2VydmFibGUkLnBpcGUodGFwKCgpID0+IHRoaXMudXBkYXRlZCQubmV4dCgpKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tcGlsZWRFbGVtZW50JChwYXRoOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVsZW1lbnRNZXRhZGF0YSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZWQkLnBpcGUoXG4gICAgICBzdGFydFdpdGgodW5kZWZpbmVkKSxcbiAgICAgIG1hcCgoKSA9PiBmaW5kRWxlbWVudEJ5UGF0aCh0aGlzLmFwcGxpY2F0aW9uVHJlZSwgcGF0aCkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcGlsYXRpb25TZXJ2aWNlLmNsZWFyKCk7XG4gICAgdGhpcy5tb2R1bGVSZWZzLmZvckVhY2gobSA9PiBtLmRlc3Ryb3koKSk7XG4gICAgdGhpcy5tb2R1bGVSZWZzID0gW107XG4gICAgdGhpcy5hcHBsaWNhdGlvblRyZWUgPSBbXTtcbiAgICB0aGlzLmNvbXBvbmVudFR5cGVzID0ge307XG4gICAgdGhpcy5pc0luaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRWxlbWVudCQob3BlcmF0aW9uOiBBZGRPcGVyYXRpb24pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb21waWxhdGlvblNlcnZpY2UuY29tcGlsZUVsZW1lbnQkKG9wZXJhdGlvbi52YWx1ZSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgICB0aGlzLmNvbXBvbmVudFR5cGVzID0ge1xuICAgICAgICAgIC4uLnRoaXMuY29tcG9uZW50VHlwZXMsXG4gICAgICAgICAgLi4ucmVzdWx0LmNvbXBvbmVudFR5cGVzLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm1vZHVsZVJlZnMucHVzaChyZXN1bHQubW9kdWxlUmVmKTtcbiAgICAgICAgYXBwbHlQYXRjaCh0aGlzLmFwcGxpY2F0aW9uVHJlZSwgW3sgLi4ub3BlcmF0aW9uLCB2YWx1ZTogcmVzdWx0LmVsZW1lbnRzWzBdIH1dKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZUVsZW1lbnQob3BlcmF0aW9uOiBSZW1vdmVPcGVyYXRpb24pOiB2b2lkIHtcbiAgICBhcHBseVBhdGNoKHRoaXMuYXBwbGljYXRpb25UcmVlLCBbb3BlcmF0aW9uXSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsYXRpb24udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvbW9kdWxlcy9ydW50aW1lL3R5cGVzL2NvbXBpbGF0aW9uLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoQ29tcG9uZW50RmFjdG9yaWVzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29tbW9uLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxhdGlvblJlc3VsdCB7XG4gIGVsZW1lbnRzOiBFbGVtZW50TWV0YWRhdGFbXTtcbiAgbW9kdWxlOiBNb2R1bGVXaXRoQ29tcG9uZW50RmFjdG9yaWVzPE5nTW9kdWxlPjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsYXRpb24udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvbW9kdWxlcy9ydW50aW1lL3R5cGVzL2NvbXBpbGF0aW9uLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTmdNb2R1bGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uLy4uLy4uL2VuZ2luZS9tb2RlbHMvZW50aXR5JztcbmltcG9ydCB7IEVsZW1lbnRNZXRhZGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbW1vbi50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsYXRpb25SZXN1bHQge1xuICBlbGVtZW50czogRWxlbWVudE1ldGFkYXRhW107XG4gIG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8TmdNb2R1bGU+O1xuICBjb21wb25lbnRUeXBlczogUmVjb3JkPHN0cmluZywgVHlwZTxFbnRpdHk+Pjtcbn1cbiJdfQ==
@@ -29,7 +29,10 @@ export class ElementsResolver {
29
29
  this.renderableElements = this.getRenderableElements(this.elements);
30
30
  }
31
31
  getNgComponents() {
32
- return this.renderableElements.map(el => this.resolveElement(el)).filter(isDefined);
32
+ return this.renderableElements.filter(isDefined).reduce((trunk, el) => ({
33
+ ...trunk,
34
+ [el.path]: this.resolveElement(el),
35
+ }), {});
33
36
  }
34
37
  transpile(el) {
35
38
  if (!el.script) {
@@ -186,4 +189,4 @@ export class ElementsResolver {
186
189
  return result;
187
190
  }
188
191
  }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudHMtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvdXRpbHMvZWxlbWVudHMtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE1BQU0sT0FBTyxnQkFBZ0I7SUFNM0IsWUFDVSxLQUEyQixFQUNuQyxRQUEyQixFQUMzQixpQkFBb0MsRUFBRTtRQUY5QixVQUFLLEdBQUwsS0FBSyxDQUFzQjtRQUo3Qix1QkFBa0IsR0FBc0IsRUFBRSxDQUFDO1FBQzNDLG1CQUFjLEdBQXNCLEVBQUUsQ0FBQztRQU83QyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV2RSxJQUFJ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LE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUF3QjtRQUMvQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFaEIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakYsSUFBSSxnQkFBZ0IsRUFBRTtZQUNwQixvRkFBb0Y7WUFDcEYsTUFBTSxJQUFJLGdCQUFnQixDQUFDO1NBQzVCO1FBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO1NBQzFCO1FBRUQsT0FBTyxNQUFNLElBQUksU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxNQUFnQztRQUMvRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDO1FBRXpCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxLQUFLLENBQUM7UUFFaEIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0cmFuc2Zvcm0gfSBmcm9tICdAYmFiZWwvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IFVJRGVmaW5pdGlvbk1ldGFkYXRhIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuaW1wb3J0IHsgZmxhdHRlbiwga2ViYWJDYXNlLCBzZXQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgREVGQVVMVF9QTFVHSU5TIH0gZnJvbSAnLi4vY21zLmRlZmF1bHQnO1xuaW1wb3J0IHsgQ09ORklHIH0gZnJvbSAnLi4vY21zLmVsZW1lbnRzJztcbmltcG9ydCB7IExBWU9VVCB9IGZyb20gJy4uL2Ntcy5sYXlvdXRzJztcbmltcG9ydCB7XG4gIERFRkFVTFRfUExVR0lOU19UT0tFTixcbiAgRUxFTUVOVF9DT05GSUcsXG4gIEVMRU1FTlRfTUVUQURBVEEsXG4gIFNIQVJFRF9FTEVNRU5UX01FVEFEQVRBLFxuICBVSV9ERUZJTklUSU9OX01FVEFEQVRBLFxuICBWRU5ET1JfTUFQLFxufSBmcm9tICcuLi9pbmplY3Rpb24tdG9rZW5zJztcbmltcG9ydCB7IEVsZW1lbnRNZXRhZGF0YSwgRWxlbWVudFN0eWxlRGVjbGFyYXRpb24gfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyB2ZW5kb3JNYXAgfSBmcm9tICcuLi92ZW5kb3ItbWFwJztcblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRzUmVzb2x2ZXIge1xuICBwdWJsaWMgZWxlbWVudHM6IEVsZW1lbnRNZXRhZGF0YVtdO1xuXG4gIHByaXZhdGUgcmVuZGVyYWJsZUVsZW1lbnRzOiBFbGVtZW50TWV0YWRhdGFbXSA9IFtdO1xuICBwcml2YXRlIHNoYXJlZEVsZW1lbnRzOiBFbGVtZW50TWV0YWRhdGFbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdWlEZWY6IFVJRGVmaW5pdGlvbk1ldGFkYXRhLFxuICAgIGVsZW1lbnRzOiBFbGVtZW50TWV0YWRhdGFbXSxcbiAgICBzaGFyZWRFbGVtZW50czogRWxlbWVudE1ldGFkYXRhW10gPSBbXSxcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNwaWxlZEVsZW1lbnRzID0gdGhpcy50cmFuc3BpbGVTY3JpcHRzKGVsZW1lbnRzKTtcbiAgICBjb25zdCB0cmFuc3BpbGVkU2hhcmVkRWxlbWVudHMgPSB0aGlzLnRyYW5zcGlsZVNjcmlwdHMoc2hhcmVkRWxlbWVudHMpO1xuXG4gICAgdGhpcy5zaGFyZWRFbGVtZW50cyA9IHRoaXMuZmxhdHRlbkVsZW1lbnRzKHRyYW5zcGlsZWRFbGVtZW50cylcbiAgICAgIC5maWx0ZXIoZWwgPT4gdGhpcy5pc1NoYXJlZEVsZW1lbnQoZWwpKVxuICAgICAgLmNvbmNhdCh0cmFuc3BpbGVkU2hhcmVkRWxlbWVudHMpO1xuXG4gICAgdGhpcy5lbGVtZW50cyA9IHRyYW5zcGlsZWRFbGVtZW50cy5tYXAoZWwgPT4gdGhpcy5wcm9jZXNzRWxlbWVudE1ldGFkYXRhKGVsKSkuZmlsdGVyKGlzRGVmaW5lZCk7XG5cbiAgICB0aGlzLnJlbmRlcmFibGVFbGVtZW50cyA9IHRoaXMuZ2V0UmVuZGVyYWJsZUVsZW1lbnRzKHRoaXMuZWxlbWVudHMpO1xuICB9XG5cbiAgcHVibGljIGFkZEVsZW1lbnQoZWxlbWVudDogRWxlbWVudE1ldGFkYXRhKTogdm9pZCB7XG4gICAgaWYgKGVsZW1lbnQuaXNTaGFyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc3BpbGVkRWxlbWVudHMgPSB0aGlzLnRyYW5zcGlsZVNjcmlwdHMoW2VsZW1lbnRdKTtcbiAgICB0aGlzLmVsZW1lbnRzID0gdHJhbnNwaWxlZEVsZW1lbnRzLm1hcChlbCA9PiB0aGlzLnByb2Nlc3NFbGVtZW50TWV0YWRhdGEoZWwpKS5maWx0ZXIoaXNEZWZpbmVkKTtcbiAgICB0aGlzLnJlbmRlcmFibGVFbGVtZW50cyA9IHRoaXMuZ2V0UmVuZGVyYWJsZUVsZW1lbnRzKHRoaXMuZWxlbWVudHMpO1xuICB9XG5cbiAgcHVibGljIGdldE5nQ29tcG9uZW50cygpOiBUeXBlPGFueT5bXSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyYWJsZUVsZW1lbnRzLm1hcChlbCA9PiB0aGlzLnJlc29sdmVFbGVtZW50KGVsKSkuZmlsdGVyKGlzRGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zcGlsZShlbDogRWxlbWVudE1ldGFkYXRhKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWVsLnNjcmlwdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zZm9ybWVkID0gdHJhbnNmb3JtKGVsLnNjcmlwdCwge1xuICAgICAgZmlsZW5hbWU6IGVsLm5hbWUgKyAnLnRzJyxcbiAgICAgIHByZXNldHM6IFsndHlwZXNjcmlwdCddLFxuICAgICAgc291cmNlTWFwczogJ2lubGluZScsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWQuY29kZSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zcGlsZVNjcmlwdHMoZWxlbWVudHM6IEVsZW1lbnRNZXRhZGF0YVtdKTogRWxlbWVudE1ldGFkYXRhW10ge1xuICAgIHJldHVybiBlbGVtZW50cy5tYXAoZWwgPT4gKHtcbiAgICAgIC4uLmVsLFxuICAgICAgc2NyaXB0OiB0aGlzLnRyYW5zcGlsZShlbCksXG4gICAgICBjaGlsZHJlbjogdGhpcy50cmFuc3BpbGVTY3JpcHRzKGVsLmNoaWxkcmVuKSxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGZsYXR0ZW5FbGVtZW50cyhlbGVtZW50czogRWxlbWVudE1ldGFkYXRhW10pOiBFbGVtZW50TWV0YWRhdGFbXSB7XG4gICAgcmV0dXJuIGZsYXR0ZW4oZWxlbWVudHMubWFwKGVsID0+IFtlbCwgLi4udGhpcy5mbGF0dGVuRWxlbWVudHMoZWwuY2hpbGRyZW4pXSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1NoYXJlZEVsZW1lbnQoZWw6IEVsZW1lbnRNZXRhZGF0YSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKGVsLmlzU2hhcmVkKSAmJiBlbC50eXBlICE9PSAnUkVGRVJFTkNFJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVuZGVyYWJsZUVsZW1lbnRzKGVsZW1lbnRzOiBFbGVtZW50TWV0YWRhdGFbXSk6IEVsZW1lbnRNZXRhZGF0YVtdIHtcbiAgICBjb25zdCByZW5kZXJhYmxlOiBFbGVtZW50TWV0YWRhdGFbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBlbCBvZiBlbGVtZW50cykge1xuICAgICAgaWYgKCF0aGlzLmlzU2hhcmVkRWxlbWVudChlbCkpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBlbC5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gIXRoaXMuaXNTaGFyZWRFbGVtZW50KGNoaWxkKSk7XG4gICAgICAgIGNvbnN0IHJlbmRlcmFibGVDaGlsZHJlbiA9IHRoaXMuZ2V0UmVuZGVyYWJsZUVsZW1lbnRzKGNoaWxkcmVuKTtcbiAgICAgICAgcmVuZGVyYWJsZS5wdXNoKHsgLi4uZWwsIGNoaWxkcmVuIH0sIC4uLnJlbmRlcmFibGVDaGlsZHJlbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbmRlcmFibGU7XG4gIH1cblxuICBwcml2YXRlIGdldFNoYXJlZEVsZW1lbnQoZWxlbWVudDogRWxlbWVudE1ldGFkYXRhKTogRWxlbWVudE1ldGFkYXRhIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWVsZW1lbnQucmVmZXJlbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2hhcmVkRWxlbWVudHMuZmluZChlbCA9PiBlbGVtZW50LnJlZmVyZW5jZSA9PT0gZWwubmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVFbGVtZW50VGVtcGxhdGUoZWxlbWVudDogRWxlbWVudE1ldGFkYXRhKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb25maWcgPSBDT05GSUdbZWxlbWVudC50eXBlXTtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9ICFjb25maWcuc3VwcHJlc3NUZW1wbGF0ZSA/IGVsZW1lbnQudGVtcGxhdGUgOiAnJztcblxuICAgIHJldHVybiB0ZW1wbGF0ZSB8fCBjb25maWcuZGVmYXVsdFRlbXBsYXRlIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRWxlbWVudFN0eWxlcyhlbGVtZW50OiBFbGVtZW50TWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbmZpZyA9IENPTkZJR1tlbGVtZW50LnR5cGVdO1xuICAgIGxldCBzdHlsZXMgPSAhY29uZmlnLnN1cHByZXNzU3R5bGVzID8gZWxlbWVudC5zdHlsZXMgPz8gJycgOiAnJztcblxuICAgIGNvbnN0IGxheW91dCA9IGVsZW1lbnQubGF5b3V0ICYmIExBWU9VVFtlbGVtZW50LmxheW91dF07XG4gICAgaWYgKGxheW91dD8uc3R5bGVzKSB7XG4gICAgICBzdHlsZXMgKz0gbGF5b3V0LnN0eWxlcztcbiAgICB9XG5cbiAgICByZXR1cm4gc3R5bGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzRWxlbWVudE1ldGFkYXRhKHNvdXJjZUVsZW1lbnQ6IEVsZW1lbnRNZXRhZGF0YSk6IEVsZW1lbnRNZXRhZGF0YSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGZpbmFsRWxlbWVudDogRWxlbWVudE1ldGFkYXRhO1xuXG4gICAgaWYgKHNvdXJjZUVsZW1lbnQudHlwZSA9PT0gJ1JFRkVSRU5DRScpIHtcbiAgICAgIGNvbnN0IHNoYXJlZEVsZW1lbnQgPSB0aGlzLmdldFNoYXJlZEVsZW1lbnQoc291cmNlRWxlbWVudCk7XG5cbiAgICAgIGlmICghc2hhcmVkRWxlbWVudCkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFNoYXJlZCBlbGVtZW50IFwiJHtzb3VyY2VFbGVtZW50LnJlZmVyZW5jZX1cIiBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBmaW5hbEVsZW1lbnQgPSB7XG4gICAgICAgIC4uLnNvdXJjZUVsZW1lbnQsXG4gICAgICAgIGNoaWxkcmVuOiB0aGlzLmdldFNoYXJlZENoaWxkcmVuKHNoYXJlZEVsZW1lbnQuY2hpbGRyZW4sIHNvdXJjZUVsZW1lbnQucGF0aCksXG4gICAgICAgIHR5cGU6IHNoYXJlZEVsZW1lbnQudHlwZSxcbiAgICAgICAgdGVtcGxhdGU6IHNoYXJlZEVsZW1lbnQudGVtcGxhdGUsXG4gICAgICAgIHN0eWxlczogKHNoYXJlZEVsZW1lbnQuc3R5bGVzID8/ICcnKSArICdcXG4nICsgKHNvdXJjZUVsZW1lbnQuc3R5bGVzID8/ICcnKSxcbiAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgLi4uc2hhcmVkRWxlbWVudC5pbnB1dHMsXG4gICAgICAgICAgLi4uc291cmNlRWxlbWVudC5pbnB1dHMsXG4gICAgICAgIH0sXG4gICAgICAgIG91dHB1dHM6IHtcbiAgICAgICAgICAuLi5zaGFyZWRFbGVtZW50Lm91dHB1dHMsXG4gICAgICAgICAgLi4uc291cmNlRWxlbWVudC5vdXRwdXRzLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmluYWxFbGVtZW50ID0gc291cmNlRWxlbWVudDtcbiAgICAgIGRlbGV0ZSBzb3VyY2VFbGVtZW50LnJlZmVyZW5jZTtcbiAgICB9XG5cbiAgICBmaW5hbEVsZW1lbnQudGVtcGxhdGUgPSB0aGlzLnJlc29sdmVFbGVtZW50VGVtcGxhdGUoZmluYWxFbGVtZW50KTtcbiAgICBmaW5hbEVsZW1lbnQuc3R5bGVzID0gdGhpcy5yZXNvbHZlRWxlbWVudFN0eWxlcyhmaW5hbEVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmZpbmFsRWxlbWVudCxcbiAgICAgIGNoaWxkcmVuOiBmaW5hbEVsZW1lbnQuY2hpbGRyZW4ubWFwKGNoaWxkID0+IHRoaXMucHJvY2Vzc0VsZW1lbnRNZXRhZGF0YShjaGlsZCkpLmZpbHRlcihpc0RlZmluZWQpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFNoYXJlZENoaWxkcmVuKGNoaWxkcmVuOiBFbGVtZW50TWV0YWRhdGFbXSwgcGFyZW50UGF0aD86IHN0cmluZyk6IEVsZW1lbnRNZXRhZGF0YVtdIHtcbiAgICByZXR1cm4gY2hpbGRyZW4ubWFwKGMgPT4ge1xuICAgICAgaWYgKCFjLnBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFtlbE5hbWVdID0gYy5wYXRoLnNwbGl0KCcvJykucmV2ZXJzZSgpO1xuICAgICAgY29uc3QgcGF0aCA9IHBhcmVudFBhdGggKyAnLycgKyBlbE5hbWU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmMsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGNoaWxkcmVuOiB0aGlzLmdldFNoYXJlZENoaWxkcmVuKGMuY2hpbGRyZW4sIHBhdGgpLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUVsZW1lbnQoZWxlbWVudDogRWxlbWVudE1ldGFkYXRhKTogVHlwZTxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb25maWcgPSBDT05GSUdbZWxlbWVudC50eXBlXTtcbiAgICBjb25zdCBkZWZhdWx0UGx1Z2lucyA9IERFRkFVTFRfUExVR0lOU1t0aGlzLnVpRGVmLnR5cGVdID8/IFtdO1xuXG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgVW5rbm93biBlbGVtZW50IHR5cGUgXCIke2VsZW1lbnQudHlwZX1cImApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0eWxlcyA9IHRoaXMuZ2V0RWxlbWVudFN0eWxlcyhlbGVtZW50KTtcblxuICAgIGNvbnN0IGNvbXBvbmVudDogQ29tcG9uZW50ID0ge1xuICAgICAgc2VsZWN0b3I6ICd2bC1lbGVtZW50JyxcbiAgICAgIHRlbXBsYXRlOiBlbGVtZW50LnRlbXBsYXRlLFxuICAgICAgLi4uKHN0eWxlcyA/IHsgc3R5bGVzOiBbc3R5bGVzXSB9IDoge30pLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogREVGQVVMVF9QTFVHSU5TX1RPS0VOLCB1c2VWYWx1ZTogZGVmYXVsdFBsdWdpbnMgfSxcbiAgICAgICAgeyBwcm92aWRlOiBVSV9ERUZJTklUSU9OX01FVEFEQVRBLCB1c2VWYWx1ZTogdGhpcy51aURlZiB9LFxuICAgICAgICB7IHByb3ZpZGU6IEVMRU1FTlRfTUVUQURBVEEsIHVzZVZhbHVlOiBlbGVtZW50IH0sXG4gICAgICAgIHsgcHJvdmlkZTogU0hBUkVEX0VMRU1FTlRfTUVUQURBVEEsIHVzZVZhbHVlOiB0aGlzLmdldFNoYXJlZEVsZW1lbnQoZWxlbWVudCkgfSxcbiAgICAgICAgeyBwcm92aWRlOiBFTEVNRU5UX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9LFxuICAgICAgICB7IHByb3ZpZGU6IFZFTkRPUl9NQVAsIHVzZVZhbHVlOiB2ZW5kb3JNYXAgfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIGNvbnN0IGNtcCA9IENvbXBvbmVudChjb21wb25lbnQpKGNsYXNzIEMgZXh0ZW5kcyBjb25maWcuY29tcG9uZW50IHt9KTtcblxuICAgIHNldChjbXAsICdwYXRoJywgZWxlbWVudC5wYXRoKTtcblxuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBwcml2YXRlIGdldEVsZW1lbnRTdHlsZXMoZWxlbWVudDogRWxlbWVudE1ldGFkYXRhKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG5cbiAgICBjb25zdCBjb25maWd1cmVkU3R5bGVzID0gdGhpcy5jb252ZXJ0SW5saW5lU3R5bGVzVG9DU1MoZWxlbWVudC5jb25maWd1cmVkU3R5bGVzKTtcbiAgICBpZiAoY29uZmlndXJlZFN0eWxlcykge1xuICAgICAgLy8gb3JkZXIgaXMgaW1wb3J0YW50OiBzdHlsZXMgd3JpdHRlbiBieSB1c2VyIGluIENTUyBjb2RlIHNob3VsZCBoYXMgaGlnaGVyIHByaW9yaXR5XG4gICAgICByZXN1bHQgKz0gY29uZmlndXJlZFN0eWxlcztcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC5zdHlsZXMpIHtcbiAgICAgIHJlc3VsdCArPSBlbGVtZW50LnN0eWxlcztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0IHx8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydElubGluZVN0eWxlc1RvQ1NTKHN0eWxlcz86IEVsZW1lbnRTdHlsZURlY2xhcmF0aW9uKTogc3RyaW5nIHtcbiAgICBpZiAoIXN0eWxlcykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzdHlsZXMpO1xuICAgIGxldCByZXN1bHQgPSAnOmhvc3Qge1xcbic7XG5cbiAgICBlbnRyaWVzLmZvckVhY2goKFtzdHlsZSwgdmFsdWVdKSA9PiB7XG4gICAgICByZXN1bHQgKz0gYCAgJHtrZWJhYkNhc2Uoc3R5bGUpfToke3ZhbHVlfTtcXG5gO1xuICAgIH0pO1xuXG4gICAgcmVzdWx0ICs9ICd9XFxuJztcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudHMtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvdXRpbHMvZWxlbWVudHMtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE1BQU0sT0FBTyxnQkFBZ0I7SUFNM0IsWUFDVSxLQUEyQixFQUNuQyxRQUEyQixFQUMzQixpQkFBb0MsRUFBRTtRQUY5QixVQUFLLEdBQUwsS0FBSyxDQUFzQjtRQUo3Qix1QkFBa0IsR0FBc0IsRUFBRSxDQUFDO1FBQzNDLG1CQUFjLEdBQXNCLEVBQUUsQ0FBQztRQU83QyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV2RSxJQUFJ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LENBQUMsQ0FBQyxNQUFNLENBQUUsU0FBUSxNQUFNLENBQUMsU0FBUztTQUFHLENBQUMsQ0FBQztRQUV0RSxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0IsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBd0I7UUFDL0MsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pGLElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsb0ZBQW9GO1lBQ3BGLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQztTQUM1QjtRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUMxQjtRQUVELE9BQU8sTUFBTSxJQUFJLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRU8sd0JBQXdCLENBQUMsTUFBZ0M7UUFDL0QsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQztRQUV6QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNqQyxNQUFNLElBQUksS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksS0FBSyxDQUFDO1FBRWhCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnQGJhYmVsL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBVSURlZmluaXRpb25NZXRhZGF0YSB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IGZsYXR0ZW4sIGtlYmFiQ2FzZSwgc2V0IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERFRkFVTFRfUExVR0lOUyB9IGZyb20gJy4uL2Ntcy5kZWZhdWx0JztcbmltcG9ydCB7IENPTkZJRyB9IGZyb20gJy4uL2Ntcy5lbGVtZW50cyc7XG5pbXBvcnQgeyBMQVlPVVQgfSBmcm9tICcuLi9jbXMubGF5b3V0cyc7XG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuLi9lbmdpbmUvbW9kZWxzL2VudGl0eSc7XG5pbXBvcnQge1xuICBERUZBVUxUX1BMVUdJTlNfVE9LRU4sXG4gIEVMRU1FTlRfQ09ORklHLFxuICBFTEVNRU5UX01FVEFEQVRBLFxuICBTSEFSRURfRUxFTUVOVF9NRVRBREFUQSxcbiAgVUlfREVGSU5JVElPTl9NRVRBREFUQSxcbiAgVkVORE9SX01BUCxcbn0gZnJvbSAnLi4vaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBFbGVtZW50TWV0YWRhdGEsIEVsZW1lbnRTdHlsZURlY2xhcmF0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgdmVuZG9yTWFwIH0gZnJvbSAnLi4vdmVuZG9yLW1hcCc7XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50c1Jlc29sdmVyIHtcbiAgcHVibGljIGVsZW1lbnRzOiBFbGVtZW50TWV0YWRhdGFbXTtcblxuICBwcml2YXRlIHJlbmRlcmFibGVFbGVtZW50czogRWxlbWVudE1ldGFkYXRhW10gPSBbXTtcbiAgcHJpdmF0ZSBzaGFyZWRFbGVtZW50czogRWxlbWVudE1ldGFkYXRhW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHVpRGVmOiBVSURlZmluaXRpb25NZXRhZGF0YSxcbiAgICBlbGVtZW50czogRWxlbWVudE1ldGFkYXRhW10sXG4gICAgc2hhcmVkRWxlbWVudHM6IEVsZW1lbnRNZXRhZGF0YVtdID0gW10sXG4gICkge1xuICAgIGNvbnN0IHRyYW5zcGlsZWRFbGVtZW50cyA9IHRoaXMudHJhbnNwaWxlU2NyaXB0cyhlbGVtZW50cyk7XG4gICAgY29uc3QgdHJhbnNwaWxlZFNoYXJlZEVsZW1lbnRzID0gdGhpcy50cmFuc3BpbGVTY3JpcHRzKHNoYXJlZEVsZW1lbnRzKTtcblxuICAgIHRoaXMuc2hhcmVkRWxlbWVudHMgPSB0aGlzLmZsYXR0ZW5FbGVtZW50cyh0cmFuc3BpbGVkRWxlbWVudHMpXG4gICAgICAuZmlsdGVyKGVsID0+IHRoaXMuaXNTaGFyZWRFbGVtZW50KGVsKSlcbiAgICAgIC5jb25jYXQodHJhbnNwaWxlZFNoYXJlZEVsZW1lbnRzKTtcblxuICAgIHRoaXMuZWxlbWVudHMgPSB0cmFuc3BpbGVkRWxlbWVudHMubWFwKGVsID0+IHRoaXMucHJvY2Vzc0VsZW1lbnRNZXRhZGF0YShlbCkpLmZpbHRlcihpc0RlZmluZWQpO1xuXG4gICAgdGhpcy5yZW5kZXJhYmxlRWxlbWVudHMgPSB0aGlzLmdldFJlbmRlcmFibGVFbGVtZW50cyh0aGlzLmVsZW1lbnRzKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnRNZXRhZGF0YSk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50LmlzU2hhcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNwaWxlZEVsZW1lbnRzID0gdGhpcy50cmFuc3BpbGVTY3JpcHRzKFtlbGVtZW50XSk7XG4gICAgdGhpcy5lbGVtZW50cyA9IHRyYW5zcGlsZWRFbGVtZW50cy5tYXAoZWwgPT4gdGhpcy5wcm9jZXNzRWxlbWVudE1ldGFkYXRhKGVsKSkuZmlsdGVyKGlzRGVmaW5lZCk7XG4gICAgdGhpcy5yZW5kZXJhYmxlRWxlbWVudHMgPSB0aGlzLmdldFJlbmRlcmFibGVFbGVtZW50cyh0aGlzLmVsZW1lbnRzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROZ0NvbXBvbmVudHMoKTogUmVjb3JkPHN0cmluZywgVHlwZTxFbnRpdHk+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyYWJsZUVsZW1lbnRzLmZpbHRlcihpc0RlZmluZWQpLnJlZHVjZShcbiAgICAgICh0cnVuaywgZWwpID0+ICh7XG4gICAgICAgIC4uLnRydW5rLFxuICAgICAgICBbZWwucGF0aF06IHRoaXMucmVzb2x2ZUVsZW1lbnQoZWwpLFxuICAgICAgfSksXG4gICAgICB7fSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc3BpbGUoZWw6IEVsZW1lbnRNZXRhZGF0YSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFlbC5zY3JpcHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHRyYW5zZm9ybShlbC5zY3JpcHQsIHtcbiAgICAgIGZpbGVuYW1lOiBlbC5uYW1lICsgJy50cycsXG4gICAgICBwcmVzZXRzOiBbJ3R5cGVzY3JpcHQnXSxcbiAgICAgIHNvdXJjZU1hcHM6ICdpbmxpbmUnLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkLmNvZGUgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc3BpbGVTY3JpcHRzKGVsZW1lbnRzOiBFbGVtZW50TWV0YWRhdGFbXSk6IEVsZW1lbnRNZXRhZGF0YVtdIHtcbiAgICByZXR1cm4gZWxlbWVudHMubWFwKGVsID0+ICh7XG4gICAgICAuLi5lbCxcbiAgICAgIHNjcmlwdDogdGhpcy50cmFuc3BpbGUoZWwpLFxuICAgICAgY2hpbGRyZW46IHRoaXMudHJhbnNwaWxlU2NyaXB0cyhlbC5jaGlsZHJlbiksXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmbGF0dGVuRWxlbWVudHMoZWxlbWVudHM6IEVsZW1lbnRNZXRhZGF0YVtdKTogRWxlbWVudE1ldGFkYXRhW10ge1xuICAgIHJldHVybiBmbGF0dGVuKGVsZW1lbnRzLm1hcChlbCA9PiBbZWwsIC4uLnRoaXMuZmxhdHRlbkVsZW1lbnRzKGVsLmNoaWxkcmVuKV0pKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTaGFyZWRFbGVtZW50KGVsOiBFbGVtZW50TWV0YWRhdGEpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbihlbC5pc1NoYXJlZCkgJiYgZWwudHlwZSAhPT0gJ1JFRkVSRU5DRSc7XG4gIH1cblxuICBwcml2YXRlIGdldFJlbmRlcmFibGVFbGVtZW50cyhlbGVtZW50czogRWxlbWVudE1ldGFkYXRhW10pOiBFbGVtZW50TWV0YWRhdGFbXSB7XG4gICAgY29uc3QgcmVuZGVyYWJsZTogRWxlbWVudE1ldGFkYXRhW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcbiAgICAgIGlmICghdGhpcy5pc1NoYXJlZEVsZW1lbnQoZWwpKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZWwuY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+ICF0aGlzLmlzU2hhcmVkRWxlbWVudChjaGlsZCkpO1xuICAgICAgICBjb25zdCByZW5kZXJhYmxlQ2hpbGRyZW4gPSB0aGlzLmdldFJlbmRlcmFibGVFbGVtZW50cyhjaGlsZHJlbik7XG4gICAgICAgIHJlbmRlcmFibGUucHVzaCh7IC4uLmVsLCBjaGlsZHJlbiB9LCAuLi5yZW5kZXJhYmxlQ2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZW5kZXJhYmxlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaGFyZWRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnRNZXRhZGF0YSk6IEVsZW1lbnRNZXRhZGF0YSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFlbGVtZW50LnJlZmVyZW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNoYXJlZEVsZW1lbnRzLmZpbmQoZWwgPT4gZWxlbWVudC5yZWZlcmVuY2UgPT09IGVsLm5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRWxlbWVudFRlbXBsYXRlKGVsZW1lbnQ6IEVsZW1lbnRNZXRhZGF0YSk6IHN0cmluZyB7XG4gICAgY29uc3QgY29uZmlnID0gQ09ORklHW2VsZW1lbnQudHlwZV07XG4gICAgY29uc3QgdGVtcGxhdGUgPSAhY29uZmlnLnN1cHByZXNzVGVtcGxhdGUgPyBlbGVtZW50LnRlbXBsYXRlIDogJyc7XG5cbiAgICByZXR1cm4gdGVtcGxhdGUgfHwgY29uZmlnLmRlZmF1bHRUZW1wbGF0ZSB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUVsZW1lbnRTdHlsZXMoZWxlbWVudDogRWxlbWVudE1ldGFkYXRhKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb25maWcgPSBDT05GSUdbZWxlbWVudC50eXBlXTtcbiAgICBsZXQgc3R5bGVzID0gIWNvbmZpZy5zdXBwcmVzc1N0eWxlcyA/IGVsZW1lbnQuc3R5bGVzID8/ICcnIDogJyc7XG5cbiAgICBjb25zdCBsYXlvdXQgPSBlbGVtZW50LmxheW91dCAmJiBMQVlPVVRbZWxlbWVudC5sYXlvdXRdO1xuICAgIGlmIChsYXlvdXQ/LnN0eWxlcykge1xuICAgICAgc3R5bGVzICs9IGxheW91dC5zdHlsZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0eWxlcztcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0VsZW1lbnRNZXRhZGF0YShzb3VyY2VFbGVtZW50OiBFbGVtZW50TWV0YWRhdGEpOiBFbGVtZW50TWV0YWRhdGEgfCB1bmRlZmluZWQge1xuICAgIGxldCBmaW5hbEVsZW1lbnQ6IEVsZW1lbnRNZXRhZGF0YTtcblxuICAgIGlmIChzb3VyY2VFbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKSB7XG4gICAgICBjb25zdCBzaGFyZWRFbGVtZW50ID0gdGhpcy5nZXRTaGFyZWRFbGVtZW50KHNvdXJjZUVsZW1lbnQpO1xuXG4gICAgICBpZiAoIXNoYXJlZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBTaGFyZWQgZWxlbWVudCBcIiR7c291cmNlRWxlbWVudC5yZWZlcmVuY2V9XCIgbm90IGZvdW5kYCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZmluYWxFbGVtZW50ID0ge1xuICAgICAgICAuLi5zb3VyY2VFbGVtZW50LFxuICAgICAgICBjaGlsZHJlbjogdGhpcy5nZXRTaGFyZWRDaGlsZHJlbihzaGFyZWRFbGVtZW50LmNoaWxkcmVuLCBzb3VyY2VFbGVtZW50LnBhdGgpLFxuICAgICAgICB0eXBlOiBzaGFyZWRFbGVtZW50LnR5cGUsXG4gICAgICAgIHRlbXBsYXRlOiBzaGFyZWRFbGVtZW50LnRlbXBsYXRlLFxuICAgICAgICBzdHlsZXM6IChzaGFyZWRFbGVtZW50LnN0eWxlcyA/PyAnJykgKyAnXFxuJyArIChzb3VyY2VFbGVtZW50LnN0eWxlcyA/PyAnJyksXG4gICAgICAgIGlucHV0czoge1xuICAgICAgICAgIC4uLnNoYXJlZEVsZW1lbnQuaW5wdXRzLFxuICAgICAgICAgIC4uLnNvdXJjZUVsZW1lbnQuaW5wdXRzLFxuICAgICAgICB9LFxuICAgICAgICBvdXRwdXRzOiB7XG4gICAgICAgICAgLi4uc2hhcmVkRWxlbWVudC5vdXRwdXRzLFxuICAgICAgICAgIC4uLnNvdXJjZUVsZW1lbnQub3V0cHV0cyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbmFsRWxlbWVudCA9IHNvdXJjZUVsZW1lbnQ7XG4gICAgICBkZWxldGUgc291cmNlRWxlbWVudC5yZWZlcmVuY2U7XG4gICAgfVxuXG4gICAgZmluYWxFbGVtZW50LnRlbXBsYXRlID0gdGhpcy5yZXNvbHZlRWxlbWVudFRlbXBsYXRlKGZpbmFsRWxlbWVudCk7XG4gICAgZmluYWxFbGVtZW50LnN0eWxlcyA9IHRoaXMucmVzb2x2ZUVsZW1lbnRTdHlsZXMoZmluYWxFbGVtZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5maW5hbEVsZW1lbnQsXG4gICAgICBjaGlsZHJlbjogZmluYWxFbGVtZW50LmNoaWxkcmVuLm1hcChjaGlsZCA9PiB0aGlzLnByb2Nlc3NFbGVtZW50TWV0YWRhdGEoY2hpbGQpKS5maWx0ZXIoaXNEZWZpbmVkKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaGFyZWRDaGlsZHJlbihjaGlsZHJlbjogRWxlbWVudE1ldGFkYXRhW10sIHBhcmVudFBhdGg/OiBzdHJpbmcpOiBFbGVtZW50TWV0YWRhdGFbXSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuLm1hcChjID0+IHtcbiAgICAgIGlmICghYy5wYXRoKSB7XG4gICAgICAgIHJldHVybiBjO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBbZWxOYW1lXSA9IGMucGF0aC5zcGxpdCgnLycpLnJldmVyc2UoKTtcbiAgICAgIGNvbnN0IHBhdGggPSBwYXJlbnRQYXRoICsgJy8nICsgZWxOYW1lO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jLFxuICAgICAgICBwYXRoLFxuICAgICAgICBjaGlsZHJlbjogdGhpcy5nZXRTaGFyZWRDaGlsZHJlbihjLmNoaWxkcmVuLCBwYXRoKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnRNZXRhZGF0YSk6IFR5cGU8RW50aXR5PiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY29uZmlnID0gQ09ORklHW2VsZW1lbnQudHlwZV07XG4gICAgY29uc3QgZGVmYXVsdFBsdWdpbnMgPSBERUZBVUxUX1BMVUdJTlNbdGhpcy51aURlZi50eXBlXSA/PyBbXTtcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFVua25vd24gZWxlbWVudCB0eXBlIFwiJHtlbGVtZW50LnR5cGV9XCJgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdHlsZXMgPSB0aGlzLmdldEVsZW1lbnRTdHlsZXMoZWxlbWVudCk7XG5cbiAgICBjb25zdCBjb21wb25lbnQ6IENvbXBvbmVudCA9IHtcbiAgICAgIHNlbGVjdG9yOiAndmwtZWxlbWVudCcsXG4gICAgICB0ZW1wbGF0ZTogZWxlbWVudC50ZW1wbGF0ZSxcbiAgICAgIC4uLihzdHlsZXMgPyB7IHN0eWxlczogW3N0eWxlc10gfSA6IHt9KSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IERFRkFVTFRfUExVR0lOU19UT0tFTiwgdXNlVmFsdWU6IGRlZmF1bHRQbHVnaW5zIH0sXG4gICAgICAgIHsgcHJvdmlkZTogVUlfREVGSU5JVElPTl9NRVRBREFUQSwgdXNlVmFsdWU6IHRoaXMudWlEZWYgfSxcbiAgICAgICAgeyBwcm92aWRlOiBFTEVNRU5UX01FVEFEQVRBLCB1c2VWYWx1ZTogZWxlbWVudCB9LFxuICAgICAgICB7IHByb3ZpZGU6IFNIQVJFRF9FTEVNRU5UX01FVEFEQVRBLCB1c2VWYWx1ZTogdGhpcy5nZXRTaGFyZWRFbGVtZW50KGVsZW1lbnQpIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRUxFTUVOVF9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfSxcbiAgICAgICAgeyBwcm92aWRlOiBWRU5ET1JfTUFQLCB1c2VWYWx1ZTogdmVuZG9yTWFwIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICBjb25zdCBjbXAgPSBDb21wb25lbnQoY29tcG9uZW50KShjbGFzcyBDIGV4dGVuZHMgY29uZmlnLmNvbXBvbmVudCB7fSk7XG5cbiAgICBzZXQoY21wLCAncGF0aCcsIGVsZW1lbnQucGF0aCk7XG5cbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbGVtZW50U3R5bGVzKGVsZW1lbnQ6IEVsZW1lbnRNZXRhZGF0YSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuXG4gICAgY29uc3QgY29uZmlndXJlZFN0eWxlcyA9IHRoaXMuY29udmVydElubGluZVN0eWxlc1RvQ1NTKGVsZW1lbnQuY29uZmlndXJlZFN0eWxlcyk7XG4gICAgaWYgKGNvbmZpZ3VyZWRTdHlsZXMpIHtcbiAgICAgIC8vIG9yZGVyIGlzIGltcG9ydGFudDogc3R5bGVzIHdyaXR0ZW4gYnkgdXNlciBpbiBDU1MgY29kZSBzaG91bGQgaGFzIGhpZ2hlciBwcmlvcml0eVxuICAgICAgcmVzdWx0ICs9IGNvbmZpZ3VyZWRTdHlsZXM7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQuc3R5bGVzKSB7XG4gICAgICByZXN1bHQgKz0gZWxlbWVudC5zdHlsZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdCB8fCB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRJbmxpbmVTdHlsZXNUb0NTUyhzdHlsZXM/OiBFbGVtZW50U3R5bGVEZWNsYXJhdGlvbik6IHN0cmluZyB7XG4gICAgaWYgKCFzdHlsZXMpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoc3R5bGVzKTtcbiAgICBsZXQgcmVzdWx0ID0gJzpob3N0IHtcXG4nO1xuXG4gICAgZW50cmllcy5mb3JFYWNoKChbc3R5bGUsIHZhbHVlXSkgPT4ge1xuICAgICAgcmVzdWx0ICs9IGAgICR7a2ViYWJDYXNlKHN0eWxlKX06JHt2YWx1ZX07XFxuYDtcbiAgICB9KTtcblxuICAgIHJlc3VsdCArPSAnfVxcbic7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=