@hestia-earth/ui-components 0.27.55 → 0.27.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/engine/engine-models-stage-deep/engine-models-stage-deep.component.d.ts +39 -0
- package/engine/index.d.ts +1 -0
- package/esm2022/engine/engine-models-stage-deep/engine-models-stage-deep.component.mjs +85 -0
- package/esm2022/engine/index.mjs +2 -1
- package/esm2022/node/node-store.service.mjs +6 -5
- package/esm2022/node/node.service.mjs +22 -1
- package/fesm2022/hestia-earth-ui-components.mjs +97 -6
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/node/node-store.service.d.ts +3 -1
- package/node/node.service.d.ts +11 -0
- package/package.json +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { JSONLD, NodeType } from '@hestia-earth/schema';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
interface IJSONLDExtended extends JSONLD<NodeType> {
|
|
4
|
+
stage?: number;
|
|
5
|
+
maxstage?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class EngineModelsStageDeepComponent<T extends NodeType> {
|
|
8
|
+
private readonly nodeService;
|
|
9
|
+
private readonly nodeStoreService;
|
|
10
|
+
protected readonly faAngleRight: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
11
|
+
protected readonly faAngleDown: import("@fortawesome/fontawesome-common-types").IconDefinition;
|
|
12
|
+
protected readonly node: import("@angular/core").InputSignal<IJSONLDExtended>;
|
|
13
|
+
protected readonly expanded: import("@angular/core").ModelSignal<boolean>;
|
|
14
|
+
protected readonly showVersion: import("@angular/core").ModelSignal<boolean>;
|
|
15
|
+
/**
|
|
16
|
+
* When nesting the components, avoid allowing expansion on the top-level node.
|
|
17
|
+
*/
|
|
18
|
+
protected readonly expandedNode: import("@angular/core").InputSignal<IJSONLDExtended>;
|
|
19
|
+
protected readonly id: import("@angular/core").Signal<string>;
|
|
20
|
+
protected readonly type: import("@angular/core").Signal<NodeType>;
|
|
21
|
+
protected readonly nodeColour: import("@angular/core").Signal<any>;
|
|
22
|
+
protected readonly loading: import("@angular/core").WritableSignal<boolean>;
|
|
23
|
+
private readonly relatedNodes;
|
|
24
|
+
private readonly relatedNodes$;
|
|
25
|
+
protected readonly nodesLength: import("@angular/core").Signal<number>;
|
|
26
|
+
private readonly nodes;
|
|
27
|
+
protected readonly expandableNodes: import("@angular/core").Signal<IJSONLDExtended[]>;
|
|
28
|
+
private readonly defaultMaxStage;
|
|
29
|
+
protected readonly stage: import("@angular/core").Signal<number>;
|
|
30
|
+
protected readonly maxstage: import("@angular/core").Signal<any>;
|
|
31
|
+
protected readonly inProgress: import("@angular/core").Signal<boolean>;
|
|
32
|
+
protected readonly canExpand: import("@angular/core").Signal<number>;
|
|
33
|
+
constructor();
|
|
34
|
+
private findNode;
|
|
35
|
+
protected trackNode(node: IJSONLDExtended): string;
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EngineModelsStageDeepComponent<any>, never>;
|
|
37
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EngineModelsStageDeepComponent<any>, "he-engine-models-stage-deep", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "showVersion": { "alias": "showVersion"; "required": false; "isSignal": true; }; "expandedNode": { "alias": "expandedNode"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; "showVersion": "showVersionChange"; }, never, never, true, never>;
|
|
38
|
+
}
|
|
39
|
+
export {};
|
package/engine/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './aggregation-engine.service';
|
|
2
2
|
export * from './engine.service';
|
|
3
3
|
export { EngineModelsStageComponent } from './engine-models-stage/engine-models-stage.component';
|
|
4
|
+
export { EngineModelsStageDeepComponent } from './engine-models-stage-deep/engine-models-stage-deep.component';
|
|
4
5
|
export { EngineModelsVersionLinkComponent } from './engine-models-version-link/engine-models-version-link.component';
|
|
5
6
|
export { EngineOrchestratorEditComponent } from './engine-orchestrator-edit/engine-orchestrator-edit.component';
|
|
6
7
|
export { EngineRequirementsFormComponent } from './engine-requirements-form/engine-requirements-form.component';
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Component, computed, effect, inject, input, model, signal } from '@angular/core';
|
|
2
|
+
import { jsonldPath, NodeType } from '@hestia-earth/schema';
|
|
3
|
+
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { DataState } from '@hestia-earth/api';
|
|
5
|
+
import { filter, map, mergeMap, tap, toArray } from 'rxjs/operators';
|
|
6
|
+
import { combineLatest, from, of } from 'rxjs';
|
|
7
|
+
import { FaIconComponent } from '@fortawesome/angular-fontawesome';
|
|
8
|
+
import { faAngleDown, faAngleRight } from '@fortawesome/free-solid-svg-icons';
|
|
9
|
+
import { distinctUntilChangedDeep } from '../../common/rxjs-utils';
|
|
10
|
+
import { TimesPipe } from '../../common/times.pipe';
|
|
11
|
+
import { SkeletonTextComponent } from '../../common/skeleton-text/skeleton-text.component';
|
|
12
|
+
import { NODE_MAX_STAGE, HeNodeService, nodeColours } from '../../node/node.service';
|
|
13
|
+
import { HeNodeStoreService, mergeDataWithHeaders } from '../../node/node-store.service';
|
|
14
|
+
import { EngineModelsVersionLinkComponent } from '../engine-models-version-link/engine-models-version-link.component';
|
|
15
|
+
import { NodeLinkComponent } from '../../node/node-link/node-link.component';
|
|
16
|
+
import * as i0 from "@angular/core";
|
|
17
|
+
const nestedNodesByType = {
|
|
18
|
+
[NodeType.Cycle]: (node) => [
|
|
19
|
+
node.site,
|
|
20
|
+
node.otherSites,
|
|
21
|
+
node.inputs?.map(input => input.impactAssessment)?.flat()
|
|
22
|
+
],
|
|
23
|
+
[NodeType.ImpactAssessment]: (node) => [node.cycle]
|
|
24
|
+
};
|
|
25
|
+
const relatedNodesByType = {
|
|
26
|
+
[NodeType.Site]: [NodeType.Cycle]
|
|
27
|
+
};
|
|
28
|
+
export class EngineModelsStageDeepComponent {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.nodeService = inject(HeNodeService);
|
|
31
|
+
this.nodeStoreService = inject(HeNodeStoreService);
|
|
32
|
+
this.faAngleRight = faAngleRight;
|
|
33
|
+
this.faAngleDown = faAngleDown;
|
|
34
|
+
this.node = input.required();
|
|
35
|
+
this.expanded = model(false);
|
|
36
|
+
this.showVersion = model(true);
|
|
37
|
+
/**
|
|
38
|
+
* When nesting the components, avoid allowing expansion on the top-level node.
|
|
39
|
+
*/
|
|
40
|
+
this.expandedNode = input();
|
|
41
|
+
this.id = computed(() => this.node()['@id']);
|
|
42
|
+
this.type = computed(() => this.node()['@type']);
|
|
43
|
+
this.nodeColour = computed(() => nodeColours[this.type()]);
|
|
44
|
+
this.loading = signal(true);
|
|
45
|
+
this.relatedNodes = signal([]);
|
|
46
|
+
this.relatedNodes$ = toObservable(this.relatedNodes);
|
|
47
|
+
this.nodesLength = toSignal(this.relatedNodes$.pipe(map(nodes => nodes?.length ?? 0)));
|
|
48
|
+
this.nodes = toSignal(combineLatest([this.relatedNodes$, this.nodeStoreService.nodes$()]).pipe(filter(([nodes]) => nodes?.length > 0), distinctUntilChangedDeep(), tap(() => this.loading.set(true)), mergeMap(([nodes, allNodes]) => from(nodes).pipe(mergeMap(node => this.findNode(allNodes, node)), toArray())), tap(() => this.loading.set(false))));
|
|
49
|
+
this.expandableNodes = computed(() => this.nodes()?.filter(n => this.expandedNode()?.['@type'] !== n['@type'] && this.expandedNode()?.['@id'] !== n['@id']) ?? []);
|
|
50
|
+
this.defaultMaxStage = computed(() => NODE_MAX_STAGE[this.type()]);
|
|
51
|
+
this.stage = computed(() => +this.node().stage);
|
|
52
|
+
this.maxstage = computed(() => +this.node().maxstage || this.defaultMaxStage());
|
|
53
|
+
this.inProgress = computed(() => this.stage() < this.maxstage());
|
|
54
|
+
this.canExpand = computed(() => this.expandableNodes()?.length);
|
|
55
|
+
effect(() => {
|
|
56
|
+
const node = this.node();
|
|
57
|
+
const nestedNodes = nestedNodesByType[node['@type']]?.(node)?.flat()?.filter(Boolean) ?? [];
|
|
58
|
+
const relatedNodes = relatedNodesByType[node['@type']] ?? [];
|
|
59
|
+
from(relatedNodes)
|
|
60
|
+
.pipe(mergeMap(nodeType => this.nodeService.getRelated$(node, nodeType).pipe(mergeMap(({ results }) => results))), toArray())
|
|
61
|
+
.subscribe(values => this.relatedNodes.set([...values, ...nestedNodes]));
|
|
62
|
+
}, { allowSignalWrites: true });
|
|
63
|
+
}
|
|
64
|
+
findNode(allNodes, node) {
|
|
65
|
+
const matchedNode = allNodes?.[node['@type']]?.find(v => v?.id === node['@id']);
|
|
66
|
+
return matchedNode
|
|
67
|
+
? of(matchedNode.recalculated)
|
|
68
|
+
: this.nodeService
|
|
69
|
+
.getWithHeaders$({
|
|
70
|
+
...node,
|
|
71
|
+
dataState: DataState.recalculated
|
|
72
|
+
})
|
|
73
|
+
.pipe(map(({ data, headers }) => mergeDataWithHeaders(data, headers)));
|
|
74
|
+
}
|
|
75
|
+
trackNode(node) {
|
|
76
|
+
return jsonldPath(node['@type'], node['@id']);
|
|
77
|
+
}
|
|
78
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EngineModelsStageDeepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: EngineModelsStageDeepComponent, isStandalone: true, selector: "he-engine-models-stage-deep", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, showVersion: { classPropertyName: "showVersion", publicName: "showVersion", isSignal: true, isRequired: false, transformFunction: null }, expandedNode: { classPropertyName: "expandedNode", publicName: "expandedNode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange", showVersion: "showVersionChange" }, ngImport: i0, template: "<div\n class=\"is-flex is-flex-direction-column is-gap-8 is-py-2 is-pl-2 | engine-models-stage--container is-type-{{ type }}\"\n [style.border-color]=\"nodeColour()\">\n <div class=\"is-flex is-flex-direction-row is-justify-content-space-between is-gap-8\">\n @if (canExpand()) {\n <div (click)=\"expanded.set(!expanded())\" pointer>\n <fa-icon [icon]=\"expanded() ? faAngleDown : faAngleRight\"></fa-icon>\n </div>\n }\n\n <div\n class=\"is-flex is-flex-direction-row is-justify-content-space-between is-gap-8 is-flex-wrap-wrap is-flex-grow-1\">\n <he-node-link class=\"is-flex-grow-1\" [node]=\"node()\" [showExternalLink]=\"true\">\n <span>{{ type() }} {{ id() }}</span>\n </he-node-link>\n\n <div class=\"is-flex is-flex-direction-column is-gap-4 | engine-models-stage--calculations\">\n <div class=\"is-flex is-gap-4 is-pr-2\">\n <span class=\"has-text-secondary has-text-weight-bold\">Calculations:</span>\n\n @if (inProgress()) {\n <span [class.has-text-danger]=\"stage() === 0\" [class.has-text-warning]=\"stage() > 0\">\n stage {{ stage() }} / {{ maxstage() }}\n </span>\n } @else {\n <span class=\"has-text-success\">complete</span>\n }\n </div>\n\n @if (showVersion()) {\n <he-engine-models-version-link [node]=\"node()\" [showDetails]=\"false\"></he-engine-models-version-link>\n }\n </div>\n </div>\n </div>\n\n @if (expanded()) {\n @if (loading() && nodesLength() > 0) {\n @for (node of nodesLength() | times; track $index) {\n <he-skeleton-text [width]=\"60\" />\n }\n }\n\n @for (relatedNode of expandableNodes(); track trackNode(relatedNode)) {\n <div class=\"related-node\">\n <he-engine-models-stage-deep\n [node]=\"relatedNode\"\n [expanded]=\"false\"\n [showVersion]=\"showVersion()\"\n [expandedNode]=\"expandedNode() || node()\" />\n </div>\n }\n }\n</div>\n", styles: [".engine-models-stage--container{border:1px solid transparent;border-radius:3px}.engine-models-stage--calculations{width:175px}he-engine-models-stage-deep ::ng-deep .engine-models-stage--container{border-right:0px;border-top-right-radius:0;border-bottom-right-radius:0}\n"], dependencies: [{ kind: "component", type: EngineModelsStageDeepComponent, selector: "he-engine-models-stage-deep", inputs: ["node", "expanded", "showVersion", "expandedNode"], outputs: ["expandedChange", "showVersionChange"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: EngineModelsVersionLinkComponent, selector: "he-engine-models-version-link", inputs: ["node", "showDetails"] }, { kind: "component", type: SkeletonTextComponent, selector: "he-skeleton-text", inputs: ["animated", "width", "height"] }, { kind: "pipe", type: TimesPipe, name: "times" }, { kind: "component", type: NodeLinkComponent, selector: "he-node-link", inputs: ["node", "showExternalLink", "linkClass"] }] }); }
|
|
80
|
+
}
|
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EngineModelsStageDeepComponent, decorators: [{
|
|
82
|
+
type: Component,
|
|
83
|
+
args: [{ selector: 'he-engine-models-stage-deep', standalone: true, imports: [FaIconComponent, EngineModelsVersionLinkComponent, SkeletonTextComponent, TimesPipe, NodeLinkComponent], template: "<div\n class=\"is-flex is-flex-direction-column is-gap-8 is-py-2 is-pl-2 | engine-models-stage--container is-type-{{ type }}\"\n [style.border-color]=\"nodeColour()\">\n <div class=\"is-flex is-flex-direction-row is-justify-content-space-between is-gap-8\">\n @if (canExpand()) {\n <div (click)=\"expanded.set(!expanded())\" pointer>\n <fa-icon [icon]=\"expanded() ? faAngleDown : faAngleRight\"></fa-icon>\n </div>\n }\n\n <div\n class=\"is-flex is-flex-direction-row is-justify-content-space-between is-gap-8 is-flex-wrap-wrap is-flex-grow-1\">\n <he-node-link class=\"is-flex-grow-1\" [node]=\"node()\" [showExternalLink]=\"true\">\n <span>{{ type() }} {{ id() }}</span>\n </he-node-link>\n\n <div class=\"is-flex is-flex-direction-column is-gap-4 | engine-models-stage--calculations\">\n <div class=\"is-flex is-gap-4 is-pr-2\">\n <span class=\"has-text-secondary has-text-weight-bold\">Calculations:</span>\n\n @if (inProgress()) {\n <span [class.has-text-danger]=\"stage() === 0\" [class.has-text-warning]=\"stage() > 0\">\n stage {{ stage() }} / {{ maxstage() }}\n </span>\n } @else {\n <span class=\"has-text-success\">complete</span>\n }\n </div>\n\n @if (showVersion()) {\n <he-engine-models-version-link [node]=\"node()\" [showDetails]=\"false\"></he-engine-models-version-link>\n }\n </div>\n </div>\n </div>\n\n @if (expanded()) {\n @if (loading() && nodesLength() > 0) {\n @for (node of nodesLength() | times; track $index) {\n <he-skeleton-text [width]=\"60\" />\n }\n }\n\n @for (relatedNode of expandableNodes(); track trackNode(relatedNode)) {\n <div class=\"related-node\">\n <he-engine-models-stage-deep\n [node]=\"relatedNode\"\n [expanded]=\"false\"\n [showVersion]=\"showVersion()\"\n [expandedNode]=\"expandedNode() || node()\" />\n </div>\n }\n }\n</div>\n", styles: [".engine-models-stage--container{border:1px solid transparent;border-radius:3px}.engine-models-stage--calculations{width:175px}he-engine-models-stage-deep ::ng-deep .engine-models-stage--container{border-right:0px;border-top-right-radius:0;border-bottom-right-radius:0}\n"] }]
|
|
84
|
+
}], ctorParameters: () => [] });
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbmdpbmUvZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwL2VuZ2luZS1tb2RlbHMtc3RhZ2UtZGVlcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvZW5naW5lL2VuZ2luZS1tb2RlbHMtc3RhZ2UtZGVlcC9lbmdpbmUtbW9kZWxzLXN0YWdlLWRlZXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQWlELFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDM0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQWdCLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25HLE9BQU8sRUFBUyxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQU83RSxNQUFNLGlCQUFpQixHQUVuQjtJQUNGLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBa0IsRUFBRSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUk7UUFDVCxJQUFJLENBQUMsVUFBVTtRQUNmLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLGdCQUF1QixDQUFDLEVBQUUsSUFBSSxFQUFFO0tBQ2pFO0lBQ0QsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLElBQTZCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztDQUM3RSxDQUFDO0FBRUYsTUFBTSxrQkFBa0IsR0FFcEI7SUFDRixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7Q0FDbEMsQ0FBQztBQVNGLE1BQU0sT0FBTyw4QkFBOEI7SUF1RHpDO1FBdERpQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUU1QyxpQkFBWSxHQUFHLFlBQVksQ0FBQztRQUM1QixnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUUxQixTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBbUIsQ0FBQztRQUV6QyxhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLGdCQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDOztXQUVHO1FBQ2dCLGlCQUFZLEdBQUcsS0FBSyxFQUFtQixDQUFDO1FBRXhDLE9BQUUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDeEMsU0FBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUU1QyxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXRELFlBQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekIsaUJBQVksR0FBRyxNQUFNLENBQXNDLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELGtCQUFhLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVwRixVQUFLLEdBQUcsUUFBUSxDQUMvQixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN0RSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUN0Qyx3QkFBd0IsRUFBRSxFQUMxQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDakMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQy9DLE9BQU8sRUFBRSxDQUNWLENBQ0YsRUFDRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDbkMsQ0FDRixDQUFDO1FBQ2lCLG9CQUFlLEdBQUcsUUFBUSxDQUMzQyxHQUFHLEVBQUUsQ0FDSCxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxDQUNsQixDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ2hHLElBQUksRUFBRSxDQUNWLENBQUM7UUFFZSxvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RCxVQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRTVELGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRzVFLE1BQU0sQ0FDSixHQUFHLEVBQUU7WUFDSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVGLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUU3RCxJQUFJLENBQUMsWUFBWSxDQUFDO2lCQUNmLElBQUksQ0FDSCxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFDM0csT0FBTyxFQUFFLENBQ1Y7aUJBQ0EsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RSxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFTyxRQUFRLENBQUMsUUFBZSxFQUFFLElBQXFDO1FBQ3JFLE1BQU0sV0FBVyxHQUFHLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEYsT0FBTyxXQUFXO1lBQ2hCLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFlBQStCLENBQUM7WUFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXO2lCQUNiLGVBQWUsQ0FBWTtnQkFDMUIsR0FBRyxJQUFJO2dCQUNQLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWTthQUNsQyxDQUFDO2lCQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQWtCLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFxQjtRQUN2QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQzsrR0F2RlUsOEJBQThCO21HQUE5Qiw4QkFBOEIsMHJCQzlDM0MsbWdFQXNEQSx3VURSYSw4QkFBOEIsdUxBSi9CLGVBQWUsa1BBQUUsZ0NBQWdDLDJHQUFFLHFCQUFxQixpR0FBRSxTQUFTLDhDQUFFLGlCQUFpQjs7NEZBSXJHLDhCQUE4QjtrQkFQMUMsU0FBUzsrQkFDRSw2QkFBNkIsY0FDM0IsSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLGdDQUFnQyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgbW9kZWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgSlNPTkxELCBqc29ubGRQYXRoLCBOb2RlVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHRhcCwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZyb20sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYUFuZ2xlRG93biwgZmFBbmdsZVJpZ2h0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcblxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWREZWVwIH0gZnJvbSAnLi4vLi4vY29tbW9uL3J4anMtdXRpbHMnO1xuaW1wb3J0IHsgVGltZXNQaXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3RpbWVzLnBpcGUnO1xuaW1wb3J0IHsgU2tlbGV0b25UZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL3NrZWxldG9uLXRleHQvc2tlbGV0b24tdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTk9ERV9NQVhfU1RBR0UsIEhlTm9kZVNlcnZpY2UsIElSZWxhdGVkTm9kZSwgbm9kZUNvbG91cnMgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUuc2VydmljZSc7XG5pbXBvcnQgeyBub2RlcywgSGVOb2RlU3RvcmVTZXJ2aWNlLCBtZXJnZURhdGFXaXRoSGVhZGVycyB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVuZ2luZU1vZGVsc1ZlcnNpb25MaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vZW5naW5lLW1vZGVscy12ZXJzaW9uLWxpbmsvZW5naW5lLW1vZGVscy12ZXJzaW9uLWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IE5vZGVMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLWxpbmsvbm9kZS1saW5rLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBJSlNPTkxERXh0ZW5kZWQgZXh0ZW5kcyBKU09OTEQ8Tm9kZVR5cGU+IHtcbiAgc3RhZ2U/OiBudW1iZXI7XG4gIG1heHN0YWdlPzogbnVtYmVyO1xufVxuXG5jb25zdCBuZXN0ZWROb2Rlc0J5VHlwZToge1xuICBbdHlwZSBpbiBOb2RlVHlwZV0/OiAobm9kZTogSUpTT05MREV4dGVuZGVkKSA9PiAoSlNPTkxEPE5vZGVUeXBlPiB8IEpTT05MRDxOb2RlVHlwZT5bXSlbXTtcbn0gPSB7XG4gIFtOb2RlVHlwZS5DeWNsZV06IChub2RlOiBJQ3ljbGVKU09OTEQpID0+IFtcbiAgICBub2RlLnNpdGUsXG4gICAgbm9kZS5vdGhlclNpdGVzLFxuICAgIG5vZGUuaW5wdXRzPy5tYXAoaW5wdXQgPT4gaW5wdXQuaW1wYWN0QXNzZXNzbWVudCBhcyBhbnkpPy5mbGF0KClcbiAgXSxcbiAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiAobm9kZTogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpID0+IFtub2RlLmN5Y2xlXVxufTtcblxuY29uc3QgcmVsYXRlZE5vZGVzQnlUeXBlOiB7XG4gIFt0eXBlIGluIE5vZGVUeXBlXT86IE5vZGVUeXBlW107XG59ID0ge1xuICBbTm9kZVR5cGUuU2l0ZV06IFtOb2RlVHlwZS5DeWNsZV1cbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWVuZ2luZS1tb2RlbHMtc3RhZ2UtZGVlcCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGYUljb25Db21wb25lbnQsIEVuZ2luZU1vZGVsc1ZlcnNpb25MaW5rQ29tcG9uZW50LCBTa2VsZXRvblRleHRDb21wb25lbnQsIFRpbWVzUGlwZSwgTm9kZUxpbmtDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2VuZ2luZS1tb2RlbHMtc3RhZ2UtZGVlcC5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgRW5naW5lTW9kZWxzU3RhZ2VEZWVwQ29tcG9uZW50PFQgZXh0ZW5kcyBOb2RlVHlwZT4ge1xuICBwcml2YXRlIHJlYWRvbmx5IG5vZGVTZXJ2aWNlID0gaW5qZWN0KEhlTm9kZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG5vZGVTdG9yZVNlcnZpY2UgPSBpbmplY3QoSGVOb2RlU3RvcmVTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFBbmdsZVJpZ2h0ID0gZmFBbmdsZVJpZ2h0O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFBbmdsZURvd24gPSBmYUFuZ2xlRG93bjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbm9kZSA9IGlucHV0LnJlcXVpcmVkPElKU09OTERFeHRlbmRlZD4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZXhwYW5kZWQgPSBtb2RlbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93VmVyc2lvbiA9IG1vZGVsKHRydWUpO1xuICAvKipcbiAgICogV2hlbiBuZXN0aW5nIHRoZSBjb21wb25lbnRzLCBhdm9pZCBhbGxvd2luZyBleHBhbnNpb24gb24gdGhlIHRvcC1sZXZlbCBub2RlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGV4cGFuZGVkTm9kZSA9IGlucHV0PElKU09OTERFeHRlbmRlZD4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm5vZGUoKVsnQGlkJ10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHlwZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubm9kZSgpWydAdHlwZSddKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbm9kZUNvbG91ciA9IGNvbXB1dGVkKCgpID0+IG5vZGVDb2xvdXJzW3RoaXMudHlwZSgpXSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWxhdGVkTm9kZXMgPSBzaWduYWw8KEpTT05MRDxOb2RlVHlwZT4gfCBJUmVsYXRlZE5vZGUpW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWxhdGVkTm9kZXMkID0gdG9PYnNlcnZhYmxlKHRoaXMucmVsYXRlZE5vZGVzKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vZGVzTGVuZ3RoID0gdG9TaWduYWwodGhpcy5yZWxhdGVkTm9kZXMkLnBpcGUobWFwKG5vZGVzID0+IG5vZGVzPy5sZW5ndGggPz8gMCkpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5vZGVzID0gdG9TaWduYWwoXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5yZWxhdGVkTm9kZXMkLCB0aGlzLm5vZGVTdG9yZVNlcnZpY2Uubm9kZXMkKCldKS5waXBlKFxuICAgICAgZmlsdGVyKChbbm9kZXNdKSA9PiBub2Rlcz8ubGVuZ3RoID4gMCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZERlZXAoKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KHRydWUpKSxcbiAgICAgIG1lcmdlTWFwKChbbm9kZXMsIGFsbE5vZGVzXSkgPT5cbiAgICAgICAgZnJvbShub2RlcykucGlwZShcbiAgICAgICAgICBtZXJnZU1hcChub2RlID0+IHRoaXMuZmluZE5vZGUoYWxsTm9kZXMsIG5vZGUpKSxcbiAgICAgICAgICB0b0FycmF5KClcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKSlcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBleHBhbmRhYmxlTm9kZXMgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5ub2RlcygpPy5maWx0ZXIoXG4gICAgICAgIG4gPT4gdGhpcy5leHBhbmRlZE5vZGUoKT8uWydAdHlwZSddICE9PSBuWydAdHlwZSddICYmIHRoaXMuZXhwYW5kZWROb2RlKCk/LlsnQGlkJ10gIT09IG5bJ0BpZCddXG4gICAgICApID8/IFtdXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TWF4U3RhZ2UgPSBjb21wdXRlZCgoKSA9PiBOT0RFX01BWF9TVEFHRVt0aGlzLnR5cGUoKV0pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RhZ2UgPSBjb21wdXRlZCgoKSA9PiArdGhpcy5ub2RlKCkuc3RhZ2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWF4c3RhZ2UgPSBjb21wdXRlZCgoKSA9PiArdGhpcy5ub2RlKCkubWF4c3RhZ2UgfHwgdGhpcy5kZWZhdWx0TWF4U3RhZ2UoKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpblByb2dyZXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGFnZSgpIDwgdGhpcy5tYXhzdGFnZSgpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuRXhwYW5kID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5leHBhbmRhYmxlTm9kZXMoKT8ubGVuZ3RoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGUoKTtcbiAgICAgICAgY29uc3QgbmVzdGVkTm9kZXMgPSBuZXN0ZWROb2Rlc0J5VHlwZVtub2RlWydAdHlwZSddXT8uKG5vZGUpPy5mbGF0KCk/LmZpbHRlcihCb29sZWFuKSA/PyBbXTtcbiAgICAgICAgY29uc3QgcmVsYXRlZE5vZGVzID0gcmVsYXRlZE5vZGVzQnlUeXBlW25vZGVbJ0B0eXBlJ11dID8/IFtdO1xuXG4gICAgICAgIGZyb20ocmVsYXRlZE5vZGVzKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAobm9kZVR5cGUgPT4gdGhpcy5ub2RlU2VydmljZS5nZXRSZWxhdGVkJChub2RlLCBub2RlVHlwZSkucGlwZShtZXJnZU1hcCgoeyByZXN1bHRzIH0pID0+IHJlc3VsdHMpKSksXG4gICAgICAgICAgICB0b0FycmF5KClcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSh2YWx1ZXMgPT4gdGhpcy5yZWxhdGVkTm9kZXMuc2V0KFsuLi52YWx1ZXMsIC4uLm5lc3RlZE5vZGVzXSkpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbmROb2RlKGFsbE5vZGVzOiBub2Rlcywgbm9kZTogSlNPTkxEPE5vZGVUeXBlPiB8IElSZWxhdGVkTm9kZSkge1xuICAgIGNvbnN0IG1hdGNoZWROb2RlID0gYWxsTm9kZXM/Lltub2RlWydAdHlwZSddXT8uZmluZCh2ID0+IHY/LmlkID09PSBub2RlWydAaWQnXSk7XG4gICAgcmV0dXJuIG1hdGNoZWROb2RlXG4gICAgICA/IG9mKG1hdGNoZWROb2RlLnJlY2FsY3VsYXRlZCBhcyBJSlNPTkxERXh0ZW5kZWQpXG4gICAgICA6IHRoaXMubm9kZVNlcnZpY2VcbiAgICAgICAgICAuZ2V0V2l0aEhlYWRlcnMkPEpTT05MRDxUPj4oe1xuICAgICAgICAgICAgLi4ubm9kZSxcbiAgICAgICAgICAgIGRhdGFTdGF0ZTogRGF0YVN0YXRlLnJlY2FsY3VsYXRlZFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUobWFwKCh7IGRhdGEsIGhlYWRlcnMgfSkgPT4gbWVyZ2VEYXRhV2l0aEhlYWRlcnM8SUpTT05MREV4dGVuZGVkPihkYXRhLCBoZWFkZXJzKSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrTm9kZShub2RlOiBJSlNPTkxERXh0ZW5kZWQpIHtcbiAgICByZXR1cm4ganNvbmxkUGF0aChub2RlWydAdHlwZSddLCBub2RlWydAaWQnXSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJpcy1mbGV4IGlzLWZsZXgtZGlyZWN0aW9uLWNvbHVtbiBpcy1nYXAtOCBpcy1weS0yIGlzLXBsLTIgfCBlbmdpbmUtbW9kZWxzLXN0YWdlLS1jb250YWluZXIgaXMtdHlwZS17eyB0eXBlIH19XCJcbiAgW3N0eWxlLmJvcmRlci1jb2xvcl09XCJub2RlQ29sb3VyKClcIj5cbiAgPGRpdiBjbGFzcz1cImlzLWZsZXggaXMtZmxleC1kaXJlY3Rpb24tcm93IGlzLWp1c3RpZnktY29udGVudC1zcGFjZS1iZXR3ZWVuIGlzLWdhcC04XCI+XG4gICAgQGlmIChjYW5FeHBhbmQoKSkge1xuICAgICAgPGRpdiAoY2xpY2spPVwiZXhwYW5kZWQuc2V0KCFleHBhbmRlZCgpKVwiIHBvaW50ZXI+XG4gICAgICAgIDxmYS1pY29uIFtpY29uXT1cImV4cGFuZGVkKCkgPyBmYUFuZ2xlRG93biA6IGZhQW5nbGVSaWdodFwiPjwvZmEtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiaXMtZmxleCBpcy1mbGV4LWRpcmVjdGlvbi1yb3cgaXMtanVzdGlmeS1jb250ZW50LXNwYWNlLWJldHdlZW4gaXMtZ2FwLTggaXMtZmxleC13cmFwLXdyYXAgaXMtZmxleC1ncm93LTFcIj5cbiAgICAgIDxoZS1ub2RlLWxpbmsgY2xhc3M9XCJpcy1mbGV4LWdyb3ctMVwiIFtub2RlXT1cIm5vZGUoKVwiIFtzaG93RXh0ZXJuYWxMaW5rXT1cInRydWVcIj5cbiAgICAgICAgPHNwYW4+e3sgdHlwZSgpIH19IHt7IGlkKCkgfX08L3NwYW4+XG4gICAgICA8L2hlLW5vZGUtbGluaz5cblxuICAgICAgPGRpdiBjbGFzcz1cImlzLWZsZXggaXMtZmxleC1kaXJlY3Rpb24tY29sdW1uIGlzLWdhcC00IHwgZW5naW5lLW1vZGVscy1zdGFnZS0tY2FsY3VsYXRpb25zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpcy1mbGV4IGlzLWdhcC00IGlzLXByLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImhhcy10ZXh0LXNlY29uZGFyeSBoYXMtdGV4dC13ZWlnaHQtYm9sZFwiPkNhbGN1bGF0aW9uczo8L3NwYW4+XG5cbiAgICAgICAgICBAaWYgKGluUHJvZ3Jlc3MoKSkge1xuICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmhhcy10ZXh0LWRhbmdlcl09XCJzdGFnZSgpID09PSAwXCIgW2NsYXNzLmhhcy10ZXh0LXdhcm5pbmddPVwic3RhZ2UoKSA+IDBcIj5cbiAgICAgICAgICAgICAgc3RhZ2Uge3sgc3RhZ2UoKSB9fSAvIHt7IG1heHN0YWdlKCkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGFzLXRleHQtc3VjY2Vzc1wiPmNvbXBsZXRlPC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChzaG93VmVyc2lvbigpKSB7XG4gICAgICAgICAgPGhlLWVuZ2luZS1tb2RlbHMtdmVyc2lvbi1saW5rIFtub2RlXT1cIm5vZGUoKVwiIFtzaG93RGV0YWlsc109XCJmYWxzZVwiPjwvaGUtZW5naW5lLW1vZGVscy12ZXJzaW9uLWxpbms+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICBAaWYgKGV4cGFuZGVkKCkpIHtcbiAgICBAaWYgKGxvYWRpbmcoKSAmJiBub2Rlc0xlbmd0aCgpID4gMCkge1xuICAgICAgQGZvciAobm9kZSBvZiBub2Rlc0xlbmd0aCgpIHwgdGltZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8aGUtc2tlbGV0b24tdGV4dCBbd2lkdGhdPVwiNjBcIiAvPlxuICAgICAgfVxuICAgIH1cblxuICAgIEBmb3IgKHJlbGF0ZWROb2RlIG9mIGV4cGFuZGFibGVOb2RlcygpOyB0cmFjayB0cmFja05vZGUocmVsYXRlZE5vZGUpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRlZC1ub2RlXCI+XG4gICAgICAgIDxoZS1lbmdpbmUtbW9kZWxzLXN0YWdlLWRlZXBcbiAgICAgICAgICBbbm9kZV09XCJyZWxhdGVkTm9kZVwiXG4gICAgICAgICAgW2V4cGFuZGVkXT1cImZhbHNlXCJcbiAgICAgICAgICBbc2hvd1ZlcnNpb25dPVwic2hvd1ZlcnNpb24oKVwiXG4gICAgICAgICAgW2V4cGFuZGVkTm9kZV09XCJleHBhbmRlZE5vZGUoKSB8fCBub2RlKClcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICB9XG48L2Rpdj5cbiJdfQ==
|
package/esm2022/engine/index.mjs
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export * from './aggregation-engine.service';
|
|
2
2
|
export * from './engine.service';
|
|
3
3
|
export { EngineModelsStageComponent } from './engine-models-stage/engine-models-stage.component';
|
|
4
|
+
export { EngineModelsStageDeepComponent } from './engine-models-stage-deep/engine-models-stage-deep.component';
|
|
4
5
|
export { EngineModelsVersionLinkComponent } from './engine-models-version-link/engine-models-version-link.component';
|
|
5
6
|
export { EngineOrchestratorEditComponent } from './engine-orchestrator-edit/engine-orchestrator-edit.component';
|
|
6
7
|
export { EngineRequirementsFormComponent } from './engine-requirements-form/engine-requirements-form.component';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUMvRyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUNySCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNoSCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWdncmVnYXRpb24tZW5naW5lLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9lbmdpbmUuc2VydmljZSc7XG5cbmV4cG9ydCB7IEVuZ2luZU1vZGVsc1N0YWdlQ29tcG9uZW50IH0gZnJvbSAnLi9lbmdpbmUtbW9kZWxzLXN0YWdlL2VuZ2luZS1tb2RlbHMtc3RhZ2UuY29tcG9uZW50JztcbmV4cG9ydCB7IEVuZ2luZU1vZGVsc1N0YWdlRGVlcENvbXBvbmVudCB9IGZyb20gJy4vZW5naW5lLW1vZGVscy1zdGFnZS1kZWVwL2VuZ2luZS1tb2RlbHMtc3RhZ2UtZGVlcC5jb21wb25lbnQnO1xuZXhwb3J0IHsgRW5naW5lTW9kZWxzVmVyc2lvbkxpbmtDb21wb25lbnQgfSBmcm9tICcuL2VuZ2luZS1tb2RlbHMtdmVyc2lvbi1saW5rL2VuZ2luZS1tb2RlbHMtdmVyc2lvbi1saW5rLmNvbXBvbmVudCc7XG5leHBvcnQgeyBFbmdpbmVPcmNoZXN0cmF0b3JFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi9lbmdpbmUtb3JjaGVzdHJhdG9yLWVkaXQvZW5naW5lLW9yY2hlc3RyYXRvci1lZGl0LmNvbXBvbmVudCc7XG5leHBvcnQgeyBFbmdpbmVSZXF1aXJlbWVudHNGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9lbmdpbmUtcmVxdWlyZW1lbnRzLWZvcm0vZW5naW5lLXJlcXVpcmVtZW50cy1mb3JtLmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -34,6 +34,10 @@ const sortNodes = (values) => values?.length
|
|
|
34
34
|
: [];
|
|
35
35
|
const isAggregated = (id = '') => !!id?.match(/^[a-zA-Z]+[-][a-zA-Z]+[-][\d]{4,}[-][\d]{4,}/g);
|
|
36
36
|
const pickHeaderKeys = ['stage', 'maxstage'];
|
|
37
|
+
export const mergeDataWithHeaders = (data, headers) => ({
|
|
38
|
+
...data,
|
|
39
|
+
...Object.fromEntries(pickHeaderKeys.map(key => [key, headers?.get(key)]).filter(([_key, value]) => !isEmpty(value)))
|
|
40
|
+
});
|
|
37
41
|
export class HeNodeStoreService {
|
|
38
42
|
constructor() {
|
|
39
43
|
this.nodeService = inject(HeNodeService);
|
|
@@ -51,10 +55,7 @@ export class HeNodeStoreService {
|
|
|
51
55
|
const index = this._nodesLoadRequests[node['@type']].length;
|
|
52
56
|
const request = forkJoin(dataStates.reduce((prev, dataState) => ({
|
|
53
57
|
...prev,
|
|
54
|
-
[dataState]: this.nodeService.getWithHeaders$({ ...node, dataState }, params).pipe(map(({ data, headers }) => (
|
|
55
|
-
...dataTransform(data),
|
|
56
|
-
...Object.fromEntries(pickHeaderKeys.map(key => [key, headers?.get(key)]).filter(([_key, value]) => !isEmpty(value)))
|
|
57
|
-
})), catchError(() => of(undefined)))
|
|
58
|
+
[dataState]: this.nodeService.getWithHeaders$({ ...node, dataState }, params).pipe(map(({ data, headers }) => mergeDataWithHeaders(dataTransform(data), headers)), catchError(() => of(undefined)))
|
|
58
59
|
}), {})).pipe(shareReplay({ bufferSize: 1, refCount: true }), map((values) => Object.fromEntries(Object.values(DataState).map(dataState => [
|
|
59
60
|
dataState,
|
|
60
61
|
values[dataState] || values[DataState.original] || node
|
|
@@ -131,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
131
132
|
providedIn: 'root'
|
|
132
133
|
}]
|
|
133
134
|
}] });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFjLGFBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUEyQi9DLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUV2RSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FLMUI7SUFDRixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNoQixPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7S0FDakM7SUFDRCxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztLQUNyQztJQUNELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2YsT0FB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QztJQUVNLFlBQVksQ0FBNkIsUUFBa0IsRUFBRSxTQUFvQixFQUFFLEVBQVc7UUFDbkcsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFJLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQzsrR0FoSlUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSlNPTkxELCBOb2RlVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgbWVyZ2VNYXAsIHNoYXJlUmVwbGF5LCB0b0FycmF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgZm9ya0pvaW4sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5cbmltcG9ydCB7IEhlTm9kZVNlcnZpY2UgfSBmcm9tICcuL25vZGUuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0b3JlZE5vZGUge1xuICBpbmRleDogbnVtYmVyO1xuICB0eXBlOiBOb2RlVHlwZTtcbiAgaWQ6IHN0cmluZztcbn1cblxudHlwZSBub2RlU3RhdGVzID0ge1xuICBbZGF0YVN0YXRlIGluIERhdGFTdGF0ZV0/OiBKU09OTEQ8Tm9kZVR5cGU+O1xufTtcblxudHlwZSBub2RlcyA9IHtcbiAgW25vZGVUeXBlIGluIE5vZGVUeXBlXT86IChub2RlU3RhdGVzICYgSVN0b3JlZE5vZGUpW107XG59O1xuXG50eXBlIG5vZGVMb2FkUmVxdWVzdCA9IHtcbiAgW2RhdGFTdGF0ZSBpbiBEYXRhU3RhdGVdOiBPYnNlcnZhYmxlPEpTT05MRDxOb2RlVHlwZT4+O1xufTtcblxudHlwZSBub2Rlc0xvYWRSZXF1ZXN0ID0ge1xuICBbbm9kZVR5cGUgaW4gTm9kZVR5cGVdPzoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgcmVxdWVzdDogT2JzZXJ2YWJsZTxub2RlU3RhdGVzICYgSVN0b3JlZE5vZGU+O1xuICB9W107XG59O1xuXG5jb25zdCBkZWZhdWx0RGF0YVN0YXRlcyA9IFtEYXRhU3RhdGUub3JpZ2luYWwsIERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWRdO1xuXG5leHBvcnQgY29uc3Qgbm9kZVR5cGVEYXRhU3RhdGU6IHtcbiAgW3R5cGUgaW4gTm9kZVR5cGVdPzoge1xuICAgIGRlZmF1bHQ6IERhdGFTdGF0ZVtdO1xuICAgIGFnZ3JlZ2F0ZWQ/OiBEYXRhU3RhdGVbXTtcbiAgfTtcbn0gPSB7XG4gIFtOb2RlVHlwZS5DeWNsZV06IHtcbiAgICBkZWZhdWx0OiBkZWZhdWx0RGF0YVN0YXRlcyxcbiAgICBhZ2dyZWdhdGVkOiBbRGF0YVN0YXRlLm9yaWdpbmFsXVxuICB9LFxuICBbTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudF06IHtcbiAgICBkZWZhdWx0OiBkZWZhdWx0RGF0YVN0YXRlcyxcbiAgICBhZ2dyZWdhdGVkOiBbRGF0YVN0YXRlLnJlY2FsY3VsYXRlZF1cbiAgfSxcbiAgW05vZGVUeXBlLlNpdGVdOiB7XG4gICAgZGVmYXVsdDogZGVmYXVsdERhdGFTdGF0ZXMsXG4gICAgYWdncmVnYXRlZDogW0RhdGFTdGF0ZS5vcmlnaW5hbF1cbiAgfVxufTtcblxuY29uc3Qgbm9kZVR5cGVEYXRhU3RhdGVzID0gKG5vZGVUeXBlOiBOb2RlVHlwZSwgYWdncmVnYXRlZCA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IGRhdGFTdGF0ZXNNYXBwaW5nID0gbm9kZVR5cGVEYXRhU3RhdGVbbm9kZVR5cGVdIHx8IHtcbiAgICBkZWZhdWx0OiBbRGF0YVN0YXRlLm9yaWdpbmFsXSxcbiAgICBhZ2dyZWdhdGVkOiBbRGF0YVN0YXRlLm9yaWdpbmFsXVxuICB9O1xuICByZXR1cm4gYWdncmVnYXRlZCA/IGRhdGFTdGF0ZXNNYXBwaW5nLmFnZ3JlZ2F0ZWQgOiBkYXRhU3RhdGVzTWFwcGluZy5kZWZhdWx0O1xufTtcblxuY29uc3Qgc29ydE5vZGVzID0gKHZhbHVlcz86IElTdG9yZWROb2RlW10pID0+XG4gIHZhbHVlcz8ubGVuZ3RoXG4gICAgPyBvcmRlckJ5KFxuICAgICAgICB2YWx1ZXMuZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgICBbJ29yaWdpbmFsLmFnZ3JlZ2F0ZWQnLCAnb3JpZ2luYWwuc2l0ZS5AaWQnLCAnb3JpZ2luYWwuY3ljbGUuQGlkJywgJ29yaWdpbmFsLkBpZCddLFxuICAgICAgICBbJ2FzYycsICdhc2MnLCAnYXNjJywgJ2FzYyddXG4gICAgICApXG4gICAgOiBbXTtcblxuY29uc3QgaXNBZ2dyZWdhdGVkID0gKGlkID0gJycpID0+ICEhaWQ/Lm1hdGNoKC9eW2EtekEtWl0rWy1dW2EtekEtWl0rWy1dW1xcZF17NCx9Wy1dW1xcZF17NCx9L2cpO1xuXG50eXBlIGRhdGFUcmFuc2Zvcm1GdW5jID0gPFQ+KG5vZGU6IFQpID0+IFQ7XG5jb25zdCBwaWNrSGVhZGVyS2V5cyA9IFsnc3RhZ2UnLCAnbWF4c3RhZ2UnXTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSGVOb2RlU3RvcmVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBub2RlU2VydmljZSA9IGluamVjdChIZU5vZGVTZXJ2aWNlKTtcblxuICBwcml2YXRlIF9ub2Rlc0xvYWRSZXF1ZXN0czogbm9kZXNMb2FkUmVxdWVzdCA9IHt9O1xuICBwcml2YXRlIF9ub2Rlczogbm9kZXMgPSB7fTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbm9kZXMkID0gbmV3IFJlcGxheVN1YmplY3Q8bm9kZXM+KDEpO1xuXG4gIHByaXZhdGUgZmluZE5vZGVJbmRleDxUIGV4dGVuZHMgUGljazxKU09OTEQ8Tm9kZVR5cGU+LCAnQHR5cGUnIHwgJ0BpZCc+Pihub2RlOiBUKSB7XG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLl9ub2Rlcz8uW25vZGVbJ0B0eXBlJ11dIHx8IFtdO1xuICAgIHJldHVybiBub2Rlcy5maW5kSW5kZXgobiA9PiBuLnR5cGUgPT09IG5vZGVbJ0B0eXBlJ10gJiYgbi5pZCA9PT0gbm9kZVsnQGlkJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTm9kZTxUIGV4dGVuZHMgUGljazxKU09OTEQ8Tm9kZVR5cGU+LCAnQHR5cGUnIHwgJ0BpZCc+PihcbiAgICBub2RlOiBULFxuICAgIHBhcmFtcyA9IHt9LFxuICAgIGRhdGFUcmFuc2Zvcm06IGRhdGFUcmFuc2Zvcm1GdW5jID0gZGF0YSA9PiBkYXRhXG4gICkge1xuICAgIGNvbnN0IGFnZ3JlZ2F0ZWQgPSAnYWdncmVnYXRlZCcgaW4gbm9kZSA/IChub2RlLmFnZ3JlZ2F0ZWQgYXMgYm9vbGVhbikgOiBpc0FnZ3JlZ2F0ZWQobm9kZVsnQGlkJ10pO1xuICAgIGNvbnN0IGRhdGFTdGF0ZXMgPSBub2RlVHlwZURhdGFTdGF0ZXMobm9kZVsnQHR5cGUnXSwgYWdncmVnYXRlZCk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0c1tub2RlWydAdHlwZSddXS5sZW5ndGg7XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gZm9ya0pvaW4oXG4gICAgICBkYXRhU3RhdGVzLnJlZHVjZShcbiAgICAgICAgKHByZXYsIGRhdGFTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIFtkYXRhU3RhdGVdOiB0aGlzLm5vZGVTZXJ2aWNlLmdldFdpdGhIZWFkZXJzJDxKU09OTEQ8Tm9kZVR5cGU+Pih7IC4uLm5vZGUsIGRhdGFTdGF0ZSB9LCBwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHsgZGF0YSwgaGVhZGVycyB9KSA9PiAoe1xuICAgICAgICAgICAgICAuLi5kYXRhVHJhbnNmb3JtKGRhdGEpLFxuICAgICAgICAgICAgICAuLi5PYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICAgICAgcGlja0hlYWRlcktleXMubWFwKGtleSA9PiBba2V5LCBoZWFkZXJzPy5nZXQoa2V5KV0pLmZpbHRlcigoW19rZXksIHZhbHVlXSkgPT4gIWlzRW1wdHkodmFsdWUpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHVuZGVmaW5lZCkpXG4gICAgICAgICAgKVxuICAgICAgICB9KSxcbiAgICAgICAge30gYXMgbm9kZUxvYWRSZXF1ZXN0XG4gICAgICApXG4gICAgKS5waXBlKFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICAgIG1hcChcbiAgICAgICAgKHZhbHVlczogbm9kZVN0YXRlcykgPT5cbiAgICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICBPYmplY3QudmFsdWVzKERhdGFTdGF0ZSkubWFwKGRhdGFTdGF0ZSA9PiBbXG4gICAgICAgICAgICAgIGRhdGFTdGF0ZSxcbiAgICAgICAgICAgICAgdmFsdWVzW2RhdGFTdGF0ZV0gfHwgdmFsdWVzW0RhdGFTdGF0ZS5vcmlnaW5hbF0gfHwgbm9kZVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICApIGFzIG5vZGVTdGF0ZXNcbiAgICAgICksXG4gICAgICBtYXAoXG4gICAgICAgIHZhbHVlcyA9PlxuICAgICAgICAgICh7XG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIHR5cGU6IG5vZGVbJ0B0eXBlJ10sXG4gICAgICAgICAgICBpZDogbm9kZVsnQGlkJ10sXG4gICAgICAgICAgICAuLi52YWx1ZXNcbiAgICAgICAgICB9KSBhcyBub2RlU3RhdGVzICYgSVN0b3JlZE5vZGVcbiAgICAgIClcbiAgICApO1xuXG4gICAgdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0ucHVzaCh7XG4gICAgICBpZDogbm9kZVsnQGlkJ10sXG4gICAgICByZXF1ZXN0XG4gICAgfSk7XG5cbiAgICByZXF1ZXN0LnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMuX25vZGVzW25vZGVbJ0B0eXBlJ11dID0gdGhpcy5fbm9kZXNbbm9kZVsnQHR5cGUnXV0gfHwgW107XG4gICAgICB0aGlzLl9ub2Rlc1tub2RlWydAdHlwZSddXVtpbmRleF0gPSBkYXRhO1xuICAgICAgdGhpcy5fbm9kZXMkLm5leHQodGhpcy5fbm9kZXMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggbm9kZSBkYXRhIGZyb20gdGhlIEFQSSwgYW5kIGFkZCB0byB0aGUgc3RvcmUuXG4gICAqXG4gICAqIEBwYXJhbSBub2RlXG4gICAqIEBwYXJhbSBwYXJhbXMgT3B0aW9uYWwgcXVlcnkgcGFyYW1ldGVycyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QgdG8gdGhlIEFQSS5cbiAgICogQHBhcmFtIGRhdGFUcmFuc2Zvcm0gRnVuY3Rpb24gdG8gdHJhbnNmb3JtIHRoZSByZWNlaXZlZCBkYXRhLlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGFkZE5vZGU8VCBleHRlbmRzIFBpY2s8SlNPTkxEPE5vZGVUeXBlPiwgJ0B0eXBlJyB8ICdAaWQnPj4oXG4gICAgbm9kZTogVCxcbiAgICBwYXJhbXMgPSB7fSxcbiAgICBkYXRhVHJhbnNmb3JtPzogZGF0YVRyYW5zZm9ybUZ1bmNcbiAgKSB7XG4gICAgdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0gPSB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0c1tub2RlWydAdHlwZSddXSB8fCBbXTtcbiAgICB0aGlzLl9ub2Rlc1tub2RlWydAdHlwZSddXSA9IHRoaXMuX25vZGVzW25vZGVbJ0B0eXBlJ11dIHx8IFtdO1xuXG4gICAgY29uc3QgZXhpc3RpbmdSZXF1ZXN0ID0gdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0uZmluZCgoeyBpZCB9KSA9PiBpZCA9PT0gbm9kZVsnQGlkJ10pO1xuICAgIHJldHVybiBleGlzdGluZ1JlcXVlc3QgPyBleGlzdGluZ1JlcXVlc3QucmVxdWVzdCA6IHRoaXMubG9hZE5vZGU8VD4obm9kZSwgcGFyYW1zLCBkYXRhVHJhbnNmb3JtKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVOb2RlQnlJbmRleChub2RlVHlwZTogTm9kZVR5cGUsIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCByZXF1ZXN0cyA9IHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVUeXBlXS5zbGljZSgpO1xuICAgIHJlcXVlc3RzLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVR5cGVdID0gcmVxdWVzdHM7XG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLl9ub2Rlc1tub2RlVHlwZV0uc2xpY2UoKTtcbiAgICBub2Rlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuX25vZGVzW25vZGVUeXBlXSA9IG5vZGVzO1xuICAgIHRoaXMuX25vZGVzJC5uZXh0KHRoaXMuX25vZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVOb2RlPFQgZXh0ZW5kcyBKU09OTEQ8Tm9kZVR5cGU+Pihub2RlOiBUKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbmROb2RlSW5kZXgobm9kZSk7XG4gICAgcmV0dXJuIGluZGV4ID49IDAgPyB0aGlzLnJlbW92ZU5vZGVCeUluZGV4KG5vZGVbJ0B0eXBlJ10sIGluZGV4KSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJOb2RlcygpIHtcbiAgICB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0cyA9IHt9O1xuICAgIHRoaXMuX25vZGVzID0ge307XG4gICAgdGhpcy5fbm9kZXMkLm5leHQodGhpcy5fbm9kZXMpO1xuICB9XG5cbiAgcHVibGljIG5vZGVzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbm9kZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIHNvcnRlZE5vZGVzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcyQoKS5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICBub2RlcyA9PlxuICAgICAgICAgIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhub2RlcykubWFwKChbbm9kZUtleSwgdmFsdWVzXSkgPT4gW25vZGVLZXksIHNvcnROb2Rlcyh2YWx1ZXMpXSkpIGFzIG5vZGVzXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpZHMkKG5vZGVUeXBlOiBOb2RlVHlwZSkge1xuICAgIHJldHVybiB0aGlzLm5vZGVzJCgpLnBpcGUoXG4gICAgICBtZXJnZU1hcCh2YWx1ZXMgPT4gdmFsdWVzW25vZGVUeXBlXSksXG4gICAgICBtYXAoKHsgaWQgfSkgPT4gaWQpLFxuICAgICAgdG9BcnJheSgpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kJDxUIGV4dGVuZHMgSlNPTkxEPE5vZGVUeXBlPj4oXG4gICAgbm9kZVR5cGU6IE5vZGVUeXBlLFxuICAgIGlkPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8eyBbZGF0YVN0YXRlIGluIERhdGFTdGF0ZV0/OiBUIH1bXT4ge1xuICAgIHJldHVybiB0aGlzLm5vZGVzJCgpLnBpcGUobWFwKHZhbHVlcyA9PiAoKHZhbHVlc1tub2RlVHlwZV0gYXMgYW55W10pIHx8IFtdKS5maWx0ZXIobm9kZSA9PiAhaWQgfHwgbm9kZS5pZCA9PT0gaWQpKSk7XG4gIH1cblxuICBwdWJsaWMgZmluZEJ5U3RhdGUkPFQgZXh0ZW5kcyBKU09OTEQ8Tm9kZVR5cGU+Pihub2RlVHlwZTogTm9kZVR5cGUsIGRhdGFTdGF0ZTogRGF0YVN0YXRlLCBpZD86IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZpbmQkPFQ+KG5vZGVUeXBlLCBpZCkucGlwZShtYXAodmFsdWVzID0+IHZhbHVlcy5tYXAodiA9PiB2W2RhdGFTdGF0ZV0pLmZpbHRlcihCb29sZWFuKSkpO1xuICB9XG59XG4iXX0=
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vZGUvbm9kZS1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFjLGFBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUE0Qi9DLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUV2RSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FLMUI7SUFDRixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNoQixPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7S0FDakM7SUFDRCxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1FBQzNCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztLQUNyQztJQUNELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2YsT0FB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QUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFTSxZQUFZLENBQTZCLFFBQWtCLEVBQUUsU0FBb0IsRUFBRSxFQUFXO1FBQ25HLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBSSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7K0dBM0lVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpTT05MRCwgTm9kZVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBEYXRhU3RhdGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwLCBzaGFyZVJlcGxheSwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIGZvcmtKb2luLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuXG5pbXBvcnQgeyBIZU5vZGVTZXJ2aWNlIH0gZnJvbSAnLi9ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0b3JlZE5vZGUge1xuICBpbmRleDogbnVtYmVyO1xuICB0eXBlOiBOb2RlVHlwZTtcbiAgaWQ6IHN0cmluZztcbn1cblxudHlwZSBub2RlU3RhdGVzID0ge1xuICBbZGF0YVN0YXRlIGluIERhdGFTdGF0ZV0/OiBKU09OTEQ8Tm9kZVR5cGU+O1xufTtcblxuZXhwb3J0IHR5cGUgbm9kZXMgPSB7XG4gIFtub2RlVHlwZSBpbiBOb2RlVHlwZV0/OiAobm9kZVN0YXRlcyAmIElTdG9yZWROb2RlKVtdO1xufTtcblxudHlwZSBub2RlTG9hZFJlcXVlc3QgPSB7XG4gIFtkYXRhU3RhdGUgaW4gRGF0YVN0YXRlXTogT2JzZXJ2YWJsZTxKU09OTEQ8Tm9kZVR5cGU+Pjtcbn07XG5cbnR5cGUgbm9kZXNMb2FkUmVxdWVzdCA9IHtcbiAgW25vZGVUeXBlIGluIE5vZGVUeXBlXT86IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHJlcXVlc3Q6IE9ic2VydmFibGU8bm9kZVN0YXRlcyAmIElTdG9yZWROb2RlPjtcbiAgfVtdO1xufTtcblxuY29uc3QgZGVmYXVsdERhdGFTdGF0ZXMgPSBbRGF0YVN0YXRlLm9yaWdpbmFsLCBEYXRhU3RhdGUucmVjYWxjdWxhdGVkXTtcblxuZXhwb3J0IGNvbnN0IG5vZGVUeXBlRGF0YVN0YXRlOiB7XG4gIFt0eXBlIGluIE5vZGVUeXBlXT86IHtcbiAgICBkZWZhdWx0OiBEYXRhU3RhdGVbXTtcbiAgICBhZ2dyZWdhdGVkPzogRGF0YVN0YXRlW107XG4gIH07XG59ID0ge1xuICBbTm9kZVR5cGUuQ3ljbGVdOiB7XG4gICAgZGVmYXVsdDogZGVmYXVsdERhdGFTdGF0ZXMsXG4gICAgYWdncmVnYXRlZDogW0RhdGFTdGF0ZS5vcmlnaW5hbF1cbiAgfSxcbiAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiB7XG4gICAgZGVmYXVsdDogZGVmYXVsdERhdGFTdGF0ZXMsXG4gICAgYWdncmVnYXRlZDogW0RhdGFTdGF0ZS5yZWNhbGN1bGF0ZWRdXG4gIH0sXG4gIFtOb2RlVHlwZS5TaXRlXToge1xuICAgIGRlZmF1bHQ6IGRlZmF1bHREYXRhU3RhdGVzLFxuICAgIGFnZ3JlZ2F0ZWQ6IFtEYXRhU3RhdGUub3JpZ2luYWxdXG4gIH1cbn07XG5cbmNvbnN0IG5vZGVUeXBlRGF0YVN0YXRlcyA9IChub2RlVHlwZTogTm9kZVR5cGUsIGFnZ3JlZ2F0ZWQgPSBmYWxzZSkgPT4ge1xuICBjb25zdCBkYXRhU3RhdGVzTWFwcGluZyA9IG5vZGVUeXBlRGF0YVN0YXRlW25vZGVUeXBlXSB8fCB7XG4gICAgZGVmYXVsdDogW0RhdGFTdGF0ZS5vcmlnaW5hbF0sXG4gICAgYWdncmVnYXRlZDogW0RhdGFTdGF0ZS5vcmlnaW5hbF1cbiAgfTtcbiAgcmV0dXJuIGFnZ3JlZ2F0ZWQgPyBkYXRhU3RhdGVzTWFwcGluZy5hZ2dyZWdhdGVkIDogZGF0YVN0YXRlc01hcHBpbmcuZGVmYXVsdDtcbn07XG5cbmNvbnN0IHNvcnROb2RlcyA9ICh2YWx1ZXM/OiBJU3RvcmVkTm9kZVtdKSA9PlxuICB2YWx1ZXM/Lmxlbmd0aFxuICAgID8gb3JkZXJCeShcbiAgICAgICAgdmFsdWVzLmZpbHRlcihCb29sZWFuKSxcbiAgICAgICAgWydvcmlnaW5hbC5hZ2dyZWdhdGVkJywgJ29yaWdpbmFsLnNpdGUuQGlkJywgJ29yaWdpbmFsLmN5Y2xlLkBpZCcsICdvcmlnaW5hbC5AaWQnXSxcbiAgICAgICAgWydhc2MnLCAnYXNjJywgJ2FzYycsICdhc2MnXVxuICAgICAgKVxuICAgIDogW107XG5cbmNvbnN0IGlzQWdncmVnYXRlZCA9IChpZCA9ICcnKSA9PiAhIWlkPy5tYXRjaCgvXlthLXpBLVpdK1stXVthLXpBLVpdK1stXVtcXGRdezQsfVstXVtcXGRdezQsfS9nKTtcblxudHlwZSBkYXRhVHJhbnNmb3JtRnVuYyA9IDxUPihub2RlOiBUKSA9PiBUO1xuY29uc3QgcGlja0hlYWRlcktleXMgPSBbJ3N0YWdlJywgJ21heHN0YWdlJ107XG5cbmV4cG9ydCBjb25zdCBtZXJnZURhdGFXaXRoSGVhZGVycyA9IDxUIGV4dGVuZHMgSlNPTkxEPE5vZGVUeXBlPj4oZGF0YTogVCwgaGVhZGVyczogSHR0cEhlYWRlcnMpOiBUID0+ICh7XG4gIC4uLmRhdGEsXG4gIC4uLk9iamVjdC5mcm9tRW50cmllcyhwaWNrSGVhZGVyS2V5cy5tYXAoa2V5ID0+IFtrZXksIGhlYWRlcnM/LmdldChrZXkpXSkuZmlsdGVyKChbX2tleSwgdmFsdWVdKSA9PiAhaXNFbXB0eSh2YWx1ZSkpKVxufSk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhlTm9kZVN0b3JlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZVNlcnZpY2UgPSBpbmplY3QoSGVOb2RlU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfbm9kZXNMb2FkUmVxdWVzdHM6IG5vZGVzTG9hZFJlcXVlc3QgPSB7fTtcbiAgcHJpdmF0ZSBfbm9kZXM6IG5vZGVzID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgX25vZGVzJCA9IG5ldyBSZXBsYXlTdWJqZWN0PG5vZGVzPigxKTtcblxuICBwcml2YXRlIGZpbmROb2RlSW5kZXg8VCBleHRlbmRzIFBpY2s8SlNPTkxEPE5vZGVUeXBlPiwgJ0B0eXBlJyB8ICdAaWQnPj4obm9kZTogVCkge1xuICAgIGNvbnN0IG5vZGVzID0gdGhpcy5fbm9kZXM/Lltub2RlWydAdHlwZSddXSB8fCBbXTtcbiAgICByZXR1cm4gbm9kZXMuZmluZEluZGV4KG4gPT4gbi50eXBlID09PSBub2RlWydAdHlwZSddICYmIG4uaWQgPT09IG5vZGVbJ0BpZCddKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE5vZGU8VCBleHRlbmRzIFBpY2s8SlNPTkxEPE5vZGVUeXBlPiwgJ0B0eXBlJyB8ICdAaWQnPj4oXG4gICAgbm9kZTogVCxcbiAgICBwYXJhbXMgPSB7fSxcbiAgICBkYXRhVHJhbnNmb3JtOiBkYXRhVHJhbnNmb3JtRnVuYyA9IGRhdGEgPT4gZGF0YVxuICApIHtcbiAgICBjb25zdCBhZ2dyZWdhdGVkID0gJ2FnZ3JlZ2F0ZWQnIGluIG5vZGUgPyAobm9kZS5hZ2dyZWdhdGVkIGFzIGJvb2xlYW4pIDogaXNBZ2dyZWdhdGVkKG5vZGVbJ0BpZCddKTtcbiAgICBjb25zdCBkYXRhU3RhdGVzID0gbm9kZVR5cGVEYXRhU3RhdGVzKG5vZGVbJ0B0eXBlJ10sIGFnZ3JlZ2F0ZWQpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0ubGVuZ3RoO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IGZvcmtKb2luKFxuICAgICAgZGF0YVN0YXRlcy5yZWR1Y2UoXG4gICAgICAgIChwcmV2LCBkYXRhU3RhdGUpID0+ICh7XG4gICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICBbZGF0YVN0YXRlXTogdGhpcy5ub2RlU2VydmljZS5nZXRXaXRoSGVhZGVycyQ8SlNPTkxEPE5vZGVUeXBlPj4oeyAuLi5ub2RlLCBkYXRhU3RhdGUgfSwgcGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWFwKCh7IGRhdGEsIGhlYWRlcnMgfSkgPT4gbWVyZ2VEYXRhV2l0aEhlYWRlcnMoZGF0YVRyYW5zZm9ybShkYXRhKSwgaGVhZGVycykpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih1bmRlZmluZWQpKVxuICAgICAgICAgIClcbiAgICAgICAgfSksXG4gICAgICAgIHt9IGFzIG5vZGVMb2FkUmVxdWVzdFxuICAgICAgKVxuICAgICkucGlwZShcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICAgICBtYXAoXG4gICAgICAgICh2YWx1ZXM6IG5vZGVTdGF0ZXMpID0+XG4gICAgICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhEYXRhU3RhdGUpLm1hcChkYXRhU3RhdGUgPT4gW1xuICAgICAgICAgICAgICBkYXRhU3RhdGUsXG4gICAgICAgICAgICAgIHZhbHVlc1tkYXRhU3RhdGVdIHx8IHZhbHVlc1tEYXRhU3RhdGUub3JpZ2luYWxdIHx8IG5vZGVcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgKSBhcyBub2RlU3RhdGVzXG4gICAgICApLFxuICAgICAgbWFwKFxuICAgICAgICB2YWx1ZXMgPT5cbiAgICAgICAgICAoe1xuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICB0eXBlOiBub2RlWydAdHlwZSddLFxuICAgICAgICAgICAgaWQ6IG5vZGVbJ0BpZCddLFxuICAgICAgICAgICAgLi4udmFsdWVzXG4gICAgICAgICAgfSkgYXMgbm9kZVN0YXRlcyAmIElTdG9yZWROb2RlXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVbJ0B0eXBlJ11dLnB1c2goe1xuICAgICAgaWQ6IG5vZGVbJ0BpZCddLFxuICAgICAgcmVxdWVzdFxuICAgIH0pO1xuXG4gICAgcmVxdWVzdC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLl9ub2Rlc1tub2RlWydAdHlwZSddXSA9IHRoaXMuX25vZGVzW25vZGVbJ0B0eXBlJ11dIHx8IFtdO1xuICAgICAgdGhpcy5fbm9kZXNbbm9kZVsnQHR5cGUnXV1baW5kZXhdID0gZGF0YTtcbiAgICAgIHRoaXMuX25vZGVzJC5uZXh0KHRoaXMuX25vZGVzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIG5vZGUgZGF0YSBmcm9tIHRoZSBBUEksIGFuZCBhZGQgdG8gdGhlIHN0b3JlLlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZVxuICAgKiBAcGFyYW0gcGFyYW1zIE9wdGlvbmFsIHF1ZXJ5IHBhcmFtZXRlcnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0IHRvIHRoZSBBUEkuXG4gICAqIEBwYXJhbSBkYXRhVHJhbnNmb3JtIEZ1bmN0aW9uIHRvIHRyYW5zZm9ybSB0aGUgcmVjZWl2ZWQgZGF0YS5cbiAgICogQHJldHVybnNcbiAgICovXG4gIHB1YmxpYyBhZGROb2RlPFQgZXh0ZW5kcyBQaWNrPEpTT05MRDxOb2RlVHlwZT4sICdAdHlwZScgfCAnQGlkJz4+KFxuICAgIG5vZGU6IFQsXG4gICAgcGFyYW1zID0ge30sXG4gICAgZGF0YVRyYW5zZm9ybT86IGRhdGFUcmFuc2Zvcm1GdW5jXG4gICkge1xuICAgIHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVbJ0B0eXBlJ11dID0gdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHNbbm9kZVsnQHR5cGUnXV0gfHwgW107XG4gICAgdGhpcy5fbm9kZXNbbm9kZVsnQHR5cGUnXV0gPSB0aGlzLl9ub2Rlc1tub2RlWydAdHlwZSddXSB8fCBbXTtcblxuICAgIGNvbnN0IGV4aXN0aW5nUmVxdWVzdCA9IHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVbJ0B0eXBlJ11dLmZpbmQoKHsgaWQgfSkgPT4gaWQgPT09IG5vZGVbJ0BpZCddKTtcbiAgICByZXR1cm4gZXhpc3RpbmdSZXF1ZXN0ID8gZXhpc3RpbmdSZXF1ZXN0LnJlcXVlc3QgOiB0aGlzLmxvYWROb2RlPFQ+KG5vZGUsIHBhcmFtcywgZGF0YVRyYW5zZm9ybSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlTm9kZUJ5SW5kZXgobm9kZVR5cGU6IE5vZGVUeXBlLCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcmVxdWVzdHMgPSB0aGlzLl9ub2Rlc0xvYWRSZXF1ZXN0c1tub2RlVHlwZV0uc2xpY2UoKTtcbiAgICByZXF1ZXN0cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuX25vZGVzTG9hZFJlcXVlc3RzW25vZGVUeXBlXSA9IHJlcXVlc3RzO1xuICAgIGNvbnN0IG5vZGVzID0gdGhpcy5fbm9kZXNbbm9kZVR5cGVdLnNsaWNlKCk7XG4gICAgbm9kZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLl9ub2Rlc1tub2RlVHlwZV0gPSBub2RlcztcbiAgICB0aGlzLl9ub2RlcyQubmV4dCh0aGlzLl9ub2Rlcyk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlTm9kZTxUIGV4dGVuZHMgSlNPTkxEPE5vZGVUeXBlPj4obm9kZTogVCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maW5kTm9kZUluZGV4KG5vZGUpO1xuICAgIHJldHVybiBpbmRleCA+PSAwID8gdGhpcy5yZW1vdmVOb2RlQnlJbmRleChub2RlWydAdHlwZSddLCBpbmRleCkgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGNsZWFyTm9kZXMoKSB7XG4gICAgdGhpcy5fbm9kZXNMb2FkUmVxdWVzdHMgPSB7fTtcbiAgICB0aGlzLl9ub2RlcyA9IHt9O1xuICAgIHRoaXMuX25vZGVzJC5uZXh0KHRoaXMuX25vZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBub2RlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzb3J0ZWROb2RlcyQoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMkKCkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgbm9kZXMgPT5cbiAgICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMobm9kZXMpLm1hcCgoW25vZGVLZXksIHZhbHVlc10pID0+IFtub2RlS2V5LCBzb3J0Tm9kZXModmFsdWVzKV0pKSBhcyBub2Rlc1xuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaWRzJChub2RlVHlwZTogTm9kZVR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcyQoKS5waXBlKFxuICAgICAgbWVyZ2VNYXAodmFsdWVzID0+IHZhbHVlc1tub2RlVHlwZV0pLFxuICAgICAgbWFwKCh7IGlkIH0pID0+IGlkKSxcbiAgICAgIHRvQXJyYXkoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmluZCQ8VCBleHRlbmRzIEpTT05MRDxOb2RlVHlwZT4+KFxuICAgIG5vZGVUeXBlOiBOb2RlVHlwZSxcbiAgICBpZD86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHsgW2RhdGFTdGF0ZSBpbiBEYXRhU3RhdGVdPzogVCB9W10+IHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcyQoKS5waXBlKG1hcCh2YWx1ZXMgPT4gKCh2YWx1ZXNbbm9kZVR5cGVdIGFzIGFueVtdKSB8fCBbXSkuZmlsdGVyKG5vZGUgPT4gIWlkIHx8IG5vZGUuaWQgPT09IGlkKSkpO1xuICB9XG5cbiAgcHVibGljIGZpbmRCeVN0YXRlJDxUIGV4dGVuZHMgSlNPTkxEPE5vZGVUeXBlPj4obm9kZVR5cGU6IE5vZGVUeXBlLCBkYXRhU3RhdGU6IERhdGFTdGF0ZSwgaWQ/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kJDxUPihub2RlVHlwZSwgaWQpLnBpcGUobWFwKHZhbHVlcyA9PiB2YWx1ZXMubWFwKHYgPT4gdltkYXRhU3RhdGVdKS5maWx0ZXIoQm9vbGVhbikpKTtcbiAgfVxufVxuIl19
|
|
@@ -18,6 +18,17 @@ const nodeTypeUrl = (apiBaseUrl, type) => (type ? `${apiBaseUrl}/${nodeTypeToPar
|
|
|
18
18
|
export const nodeUrl = (apiBaseUrl, { dataState, ...node }) => `${nodeTypeUrl(apiBaseUrl, node['@type'] || node.type)}/${node['@id'] || node.id}${dataState ? `?dataState=${dataState}` : ''}`;
|
|
19
19
|
export const nodeLogsUrl = (apiBaseUrl, { dataState, ...node }) => `${nodeUrl(apiBaseUrl, node)}/log${dataState ? `?dataState=${dataState}` : ''}`;
|
|
20
20
|
export const lookupUrl = (filename) => filename.startsWith('http') ? filename : `${glossaryBaseUrl(false)}/lookups/${filename}.csv`;
|
|
21
|
+
export const nodeColours = {
|
|
22
|
+
[NodeType.ImpactAssessment]: 'blue',
|
|
23
|
+
[NodeType.Cycle]: 'red',
|
|
24
|
+
[NodeType.Site]: 'green'
|
|
25
|
+
};
|
|
26
|
+
export class RelatedNodeResult {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.count = 0;
|
|
29
|
+
this.results = [];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
21
32
|
// TODO: should come from shared config with the calculation-pipeline
|
|
22
33
|
export const NODE_MAX_STAGE = {
|
|
23
34
|
[NodeType.Cycle]: 2,
|
|
@@ -48,6 +59,16 @@ export class HeNodeService {
|
|
|
48
59
|
.toPromise()
|
|
49
60
|
.catch(() => (node.dataState && defaultForState ? node : {}));
|
|
50
61
|
}
|
|
62
|
+
getRelated$(node, relatedType, limit = 100, offset = 0, relationship) {
|
|
63
|
+
return this.http
|
|
64
|
+
.get(`${this.nodeUrl(node)}/${nodeTypeToParam(relatedType)}`, {
|
|
65
|
+
params: filterParams({ limit, offset, relationship })
|
|
66
|
+
})
|
|
67
|
+
.pipe(catchError(() => of({ count: 0, results: [] })));
|
|
68
|
+
}
|
|
69
|
+
async getRelated(node, relatedType, limit = 100, offset = 0, relationship) {
|
|
70
|
+
return this.getRelated$(node, relatedType, limit, offset, relationship).toPromise();
|
|
71
|
+
}
|
|
51
72
|
getLog({ dataState, aggregated, ...node }) {
|
|
52
73
|
return this.http
|
|
53
74
|
.get(`${this.nodeUrl(node)}/log`, {
|
|
@@ -99,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
99
120
|
providedIn: 'root'
|
|
100
121
|
}]
|
|
101
122
|
}] });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vZGUvbm9kZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFzRCxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRzNELE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBa0IsRUFBRSxJQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFcEg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksRUFBYSxFQUFFLEVBQUUsQ0FDL0UsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFF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amVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhU3RhdGUsIG5vZGVUeXBlVG9QYXJhbSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElDeWNsZUpTT05MRCwgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIElTaXRlSlNPTkxELCBOb2RlVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcblxuaW1wb3J0IHsgZmlsdGVyUGFyYW1zLCBnbG9zc2FyeUJhc2VVcmwsIGhhbmRsZUFQSUVycm9yIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IEhlQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBJTm9kZU1pc3NpbmdMb29rdXBMb2cgfSBmcm9tICcuL25vZGUtbG9ncy1tb2RlbHMvbm9kZS1sb2dzLW1vZGVscy5tb2RlbCc7XG5cbmNvbnN0IG5vZGVUeXBlVXJsID0gKGFwaUJhc2VVcmw6IHN0cmluZywgdHlwZT86IE5vZGVUeXBlKSA9PiAodHlwZSA/IGAke2FwaUJhc2VVcmx9LyR7bm9kZVR5cGVUb1BhcmFtKHR5cGUpfWAgOiAnJyk7XG5cbi8qKlxuICogR2V0IHRoZSBmdWxsIHVybCB0byBmZXRjaCB0aGUgbm9kZSBkYXRhLlxuICpcbiAqIEBwYXJhbSBhcGlCYXNlVXJsIFRoZSB1cmwgb2YgdGhlIEFQSSBob3N0aW5nIHRoZSBkYXRhLlxuICogQHBhcmFtIG5vZGUgVGhlIG5vZGUgd2l0aCBhIHR5cGUsIGlkIGFuZCBvcHRpb25hbGx5IGEgZGF0YVN0YXRlXG4gKiBAcmV0dXJucyBUaGUgZnVsbCB1cmwuXG4gKi9cbmV4cG9ydCBjb25zdCBub2RlVXJsID0gKGFwaUJhc2VVcmw6IHN0cmluZywgeyBkYXRhU3RhdGUsIC4uLm5vZGUgfTogSUpTT05Ob2RlKSA9PlxuICBgJHtub2RlVHlwZVVybChhcGlCYXNlVXJsLCBub2RlWydAdHlwZSddIHx8IG5vZGUudHlwZSl9LyR7bm9kZVsnQGlkJ10gfHwgbm9kZS5pZH0ke1xuICAgIGRhdGFTdGF0ZSA/IGA/ZGF0YVN0YXRlPSR7ZGF0YVN0YXRlfWAgOiAnJ1xuICB9YDtcblxuZXhwb3J0IGNvbnN0IG5vZGVMb2dzVXJsID0gKGFwaUJhc2VVcmw6IHN0cmluZywgeyBkYXRhU3RhdGUsIC4uLm5vZGUgfTogSUpTT05Ob2RlKSA9PlxuICBgJHtub2RlVXJsKGFwaUJhc2VVcmwsIG5vZGUpfS9sb2cke2RhdGFTdGF0ZSA/IGA/ZGF0YVN0YXRlPSR7ZGF0YVN0YXRlfWAgOiAnJ31gO1xuXG5leHBvcnQgY29uc3QgbG9va3VwVXJsID0gKGZpbGVuYW1lOiBzdHJpbmcpID0+XG4gIGZpbGVuYW1lLnN0YXJ0c1dpdGgoJ2h0dHAnKSA/IGZpbGVuYW1lIDogYCR7Z2xvc3NhcnlCYXNlVXJsKGZhbHNlKX0vbG9va3Vwcy8ke2ZpbGVuYW1lfS5jc3ZgO1xuXG5leHBvcnQgaW50ZXJmYWNlIElKU09OTm9kZSB7XG4gICdAdHlwZSc/OiBOb2RlVHlwZTtcbiAgJ0BpZCc/OiBzdHJpbmc7XG4gIHR5cGU/OiBOb2RlVHlwZTtcbiAgaWQ/OiBzdHJpbmc7XG4gIGRhdGFTdGF0ZT86IERhdGFTdGF0ZTtcbiAgYWdncmVnYXRlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlbGF0ZWROb2RlIHtcbiAgJ0B0eXBlJzogTm9kZVR5cGU7XG4gICdAaWQnOiBzdHJpbmc7XG4gIFt4OiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUpTT05EYXRhIHtcbiAgW05vZGVUeXBlLkN5Y2xlXT86IElDeWNsZUpTT05MRFtdO1xuICBbTm9kZVR5cGUuU2l0ZV0/OiBJU2l0ZUpTT05MRFtdO1xuICBbTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudF0/OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlRXJyb3JMb2cge1xuICBlcnJvcjogc3RyaW5nO1xuICBzdGFjaz86IHN0cmluZztcbn1cblxuLy8gVE9ETzogc2hvdWxkIGNvbWUgZnJvbSBzaGFyZWQgY29uZmlnIHdpdGggdGhlIGNhbGN1bGF0aW9uLXBpcGVsaW5lXG5leHBvcnQgY29uc3QgTk9ERV9NQVhfU1RBR0UgPSB7XG4gIFtOb2RlVHlwZS5DeWNsZV06IDIsXG4gIFtOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50XTogMSxcbiAgW05vZGVUeXBlLlNpdGVdOiAyXG59O1xuXG50eXBlIG9uSGVhZGVyc0NhbGxiYWNrID0gKGhlYWRlcnM6IEh0dHBIZWFkZXJzKSA9PiBhbnk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEhlTm9kZVNlcnZpY2Uge1xuICBwcm90ZWN0ZWQgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJvdGVjdGVkIGNvbW1vblNlcnZpY2UgPSBpbmplY3QoSGVDb21tb25TZXJ2aWNlKTtcblxuICBwdWJsaWMgZ2V0V2l0aEhlYWRlcnMkPFQ+KHsgZGF0YVN0YXRlLCAuLi5ub2RlIH06IElKU09OTm9kZSwgcGFyYW1zID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFQ+KHRoaXMubm9kZVVybChub2RlKSwge1xuICAgICAgICBwYXJhbXM6IGZpbHRlclBhcmFtcyh7IGRhdGFTdGF0ZSwgLi4ucGFyYW1zIH0pLFxuICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXNwID0+ICh7XG4gICAgICAgICAgaGVhZGVyczogcmVzcC5oZWFkZXJzLFxuICAgICAgICAgIGRhdGE6IHJlc3AuYm9keVxuICAgICAgICB9KSlcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0JDxUPihub2RlOiBJSlNPTk5vZGUsIHBhcmFtcyA9IHt9LCBvbkhlYWRlcnM6IG9uSGVhZGVyc0NhbGxiYWNrID0gKCkgPT4gdHJ1ZSkge1xuICAgIHJldHVybiB0aGlzLmdldFdpdGhIZWFkZXJzJDxUPihub2RlLCBwYXJhbXMpLnBpcGUoXG4gICAgICB0YXAoKHsgaGVhZGVycyB9KSA9PiBvbkhlYWRlcnMoaGVhZGVycykpLFxuICAgICAgbWFwKCh7IGRhdGEgfSkgPT4gZGF0YSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldDxUPihub2RlOiBJSlNPTk5vZGUsIGRlZmF1bHRGb3JTdGF0ZSA9IHRydWUpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXQkPFQ+KG5vZGUpXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC5jYXRjaCgoKSA9PiAobm9kZS5kYXRhU3RhdGUgJiYgZGVmYXVsdEZvclN0YXRlID8gKG5vZGUgYXMgYW55IGFzIFQpIDogKHt9IGFzIFQpKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9nKHsgZGF0YVN0YXRlLCBhZ2dyZWdhdGVkLCAuLi5ub2RlIH06IElKU09OTm9kZSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoYCR7dGhpcy5ub2RlVXJsKG5vZGUpfS9sb2dgLCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICBwYXJhbXM6IGZpbHRlclBhcmFtcyhkYXRhU3RhdGUgPT09IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWQgPyB7IGRhdGFTdGF0ZSB9IDogeyBhZ2dyZWdhdGVkIH0pXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZignJykpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNaXNzaW5nTG9va3Vwc0xvZyQoeyBkYXRhU3RhdGUsIC4uLm5vZGUgfTogSUpTT05Ob2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SU5vZGVNaXNzaW5nTG9va3VwTG9nW10+KGAke3RoaXMubm9kZVVybChub2RlKX0vbG9nL2xvb2t1cHNgLCB7XG4gICAgICBwYXJhbXM6IGZpbHRlclBhcmFtcyh7IGRhdGFTdGF0ZSB9KVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nKHsgZGF0YVN0YXRlLCBhZ2dyZWdhdGVkLCAuLi5ub2RlIH06IElKU09OTm9kZSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8SU5vZGVFcnJvckxvZz4oYCR7dGhpcy5ub2RlVXJsKG5vZGUpfS9sb2cvZXJyb3JgLCB7XG4gICAgICAgIHBhcmFtczogZmlsdGVyUGFyYW1zKGRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLnJlY2FsY3VsYXRlZCA/IHsgZGF0YVN0YXRlIH0gOiB7IGFnZ3JlZ2F0ZWQgfSlcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC5jYXRjaChoYW5kbGVBUElFcnJvcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdHJpZ2dlclBpcGVsaW5lKHsgZGF0YVN0YXRlLCAuLi5ub2RlIH06IElKU09OTm9kZSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGAke3RoaXMubm9kZVVybChub2RlKX0vcGlwZWxpbmVgLCBmaWx0ZXJQYXJhbXMoeyBkYXRhU3RhdGUgfSksIHt9KVxuICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAuY2F0Y2goaGFuZGxlQVBJRXJyb3IpO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkUmF3JDxUID0gYW55Pih1cmw6IHN0cmluZywgcmVzcG9uc2VUeXBlOiBhbnkgPSAnanNvbicpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih1cmwsIHsgcmVzcG9uc2VUeXBlIH0pLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZigocmVzcG9uc2VUeXBlID09PSAnanNvbicgPyB7fSA6ICcnKSBhcyBUKSkpO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkUmF3PFQgPSBhbnk+KHVybDogc3RyaW5nLCByZXNwb25zZVR5cGU6IGFueSA9ICdqc29uJykge1xuICAgIHJldHVybiB0aGlzLmRvd25sb2FkUmF3JDxUPih1cmwsIHJlc3BvbnNlVHlwZSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgbm9kZVR5cGVVcmwodHlwZTogYW55KSB7XG4gICAgcmV0dXJuIG5vZGVUeXBlVXJsKHRoaXMuY29tbW9uU2VydmljZS5hcGlCYXNlVXJsLCB0eXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBub2RlVXJsKG5vZGU6IElKU09OTm9kZSkge1xuICAgIHJldHVybiBub2RlVXJsKHRoaXMuY29tbW9uU2VydmljZS5hcGlCYXNlVXJsLCBub2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBub2RlTG9nc1VybChub2RlOiBJSlNPTk5vZGUpIHtcbiAgICByZXR1cm4gbm9kZUxvZ3NVcmwodGhpcy5jb21tb25TZXJ2aWNlLmFwaUJhc2VVcmwsIG5vZGUpO1xuICB9XG59XG4iXX0=
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vZGUvbm9kZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFzRCxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRzNELE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBa0IsRUFBRSxJQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFcEg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksRUFBYSxFQUFFLEVBQUUsQ0FDL0UsR0FBRyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFF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ZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdGFTdGF0ZSwgbm9kZVR5cGVUb1BhcmFtIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUN5Y2xlSlNPTkxELCBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgSVNpdGVKU09OTEQsIE5vZGVUeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuXG5pbXBvcnQgeyBmaWx0ZXJQYXJhbXMsIGdsb3NzYXJ5QmFzZVVybCwgaGFuZGxlQVBJRXJyb3IgfSBmcm9tICcuLi9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgSGVDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IElOb2RlTWlzc2luZ0xvb2t1cExvZyB9IGZyb20gJy4vbm9kZS1sb2dzLW1vZGVscy9ub2RlLWxvZ3MtbW9kZWxzLm1vZGVsJztcblxuY29uc3Qgbm9kZVR5cGVVcmwgPSAoYXBpQmFzZVVybDogc3RyaW5nLCB0eXBlPzogTm9kZVR5cGUpID0+ICh0eXBlID8gYCR7YXBpQmFzZVVybH0vJHtub2RlVHlwZVRvUGFyYW0odHlwZSl9YCA6ICcnKTtcblxuLyoqXG4gKiBHZXQgdGhlIGZ1bGwgdXJsIHRvIGZldGNoIHRoZSBub2RlIGRhdGEuXG4gKlxuICogQHBhcmFtIGFwaUJhc2VVcmwgVGhlIHVybCBvZiB0aGUgQVBJIGhvc3RpbmcgdGhlIGRhdGEuXG4gKiBAcGFyYW0gbm9kZSBUaGUgbm9kZSB3aXRoIGEgdHlwZSwgaWQgYW5kIG9wdGlvbmFsbHkgYSBkYXRhU3RhdGVcbiAqIEByZXR1cm5zIFRoZSBmdWxsIHVybC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vZGVVcmwgPSAoYXBpQmFzZVVybDogc3RyaW5nLCB7IGRhdGFTdGF0ZSwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpID0+XG4gIGAke25vZGVUeXBlVXJsKGFwaUJhc2VVcmwsIG5vZGVbJ0B0eXBlJ10gfHwgbm9kZS50eXBlKX0vJHtub2RlWydAaWQnXSB8fCBub2RlLmlkfSR7XG4gICAgZGF0YVN0YXRlID8gYD9kYXRhU3RhdGU9JHtkYXRhU3RhdGV9YCA6ICcnXG4gIH1gO1xuXG5leHBvcnQgY29uc3Qgbm9kZUxvZ3NVcmwgPSAoYXBpQmFzZVVybDogc3RyaW5nLCB7IGRhdGFTdGF0ZSwgLi4ubm9kZSB9OiBJSlNPTk5vZGUpID0+XG4gIGAke25vZGVVcmwoYXBpQmFzZVVybCwgbm9kZSl9L2xvZyR7ZGF0YVN0YXRlID8gYD9kYXRhU3RhdGU9JHtkYXRhU3RhdGV9YCA6ICcnfWA7XG5cbmV4cG9ydCBjb25zdCBsb29rdXBVcmwgPSAoZmlsZW5hbWU6IHN0cmluZykgPT5cbiAgZmlsZW5hbWUuc3RhcnRzV2l0aCgnaHR0cCcpID8gZmlsZW5hbWUgOiBgJHtnbG9zc2FyeUJhc2VVcmwoZmFsc2UpfS9sb29rdXBzLyR7ZmlsZW5hbWV9LmNzdmA7XG5cbmV4cG9ydCBjb25zdCBub2RlQ29sb3VycyA9IHtcbiAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiAnYmx1ZScsXG4gIFtOb2RlVHlwZS5DeWNsZV06ICdyZWQnLFxuICBbTm9kZVR5cGUuU2l0ZV06ICdncmVlbidcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUpTT05Ob2RlIHtcbiAgJ0B0eXBlJz86IE5vZGVUeXBlO1xuICAnQGlkJz86IHN0cmluZztcbiAgdHlwZT86IE5vZGVUeXBlO1xuICBpZD86IHN0cmluZztcbiAgZGF0YVN0YXRlPzogRGF0YVN0YXRlO1xuICBhZ2dyZWdhdGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmVsYXRlZE5vZGUge1xuICAnQHR5cGUnOiBOb2RlVHlwZTtcbiAgJ0BpZCc6IHN0cmluZztcbiAgW3g6IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFJlbGF0ZWROb2RlUmVzdWx0IHtcbiAgY291bnQgPSAwO1xuICByZXN1bHRzOiBJUmVsYXRlZE5vZGVbXSA9IFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElKU09ORGF0YSB7XG4gIFtOb2RlVHlwZS5DeWNsZV0/OiBJQ3ljbGVKU09OTERbXTtcbiAgW05vZGVUeXBlLlNpdGVdPzogSVNpdGVKU09OTERbXTtcbiAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdPzogSUltcGFjdEFzc2Vzc21lbnRKU09OTERbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZUVycm9yTG9nIHtcbiAgZXJyb3I6IHN0cmluZztcbiAgc3RhY2s/OiBzdHJpbmc7XG59XG5cbi8vIFRPRE86IHNob3VsZCBjb21lIGZyb20gc2hhcmVkIGNvbmZpZyB3aXRoIHRoZSBjYWxjdWxhdGlvbi1waXBlbGluZVxuZXhwb3J0IGNvbnN0IE5PREVfTUFYX1NUQUdFID0ge1xuICBbTm9kZVR5cGUuQ3ljbGVdOiAyLFxuICBbTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudF06IDEsXG4gIFtOb2RlVHlwZS5TaXRlXTogMlxufTtcblxudHlwZSBvbkhlYWRlcnNDYWxsYmFjayA9IChoZWFkZXJzOiBIdHRwSGVhZGVycykgPT4gYW55O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBIZU5vZGVTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByb3RlY3RlZCBjb21tb25TZXJ2aWNlID0gaW5qZWN0KEhlQ29tbW9uU2VydmljZSk7XG5cbiAgcHVibGljIGdldFdpdGhIZWFkZXJzJDxUPih7IGRhdGFTdGF0ZSwgLi4ubm9kZSB9OiBJSlNPTk5vZGUsIHBhcmFtcyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxUPih0aGlzLm5vZGVVcmwobm9kZSksIHtcbiAgICAgICAgcGFyYW1zOiBmaWx0ZXJQYXJhbXMoeyBkYXRhU3RhdGUsIC4uLnBhcmFtcyB9KSxcbiAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJ1xuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzcCA9PiAoe1xuICAgICAgICAgIGhlYWRlcnM6IHJlc3AuaGVhZGVycyxcbiAgICAgICAgICBkYXRhOiByZXNwLmJvZHlcbiAgICAgICAgfSkpXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCQ8VD4obm9kZTogSUpTT05Ob2RlLCBwYXJhbXMgPSB7fSwgb25IZWFkZXJzOiBvbkhlYWRlcnNDYWxsYmFjayA9ICgpID0+IHRydWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRXaXRoSGVhZGVycyQ8VD4obm9kZSwgcGFyYW1zKS5waXBlKFxuICAgICAgdGFwKCh7IGhlYWRlcnMgfSkgPT4gb25IZWFkZXJzKGhlYWRlcnMpKSxcbiAgICAgIG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXQ8VD4obm9kZTogSUpTT05Ob2RlLCBkZWZhdWx0Rm9yU3RhdGUgPSB0cnVlKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0JDxUPihub2RlKVxuICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAuY2F0Y2goKCkgPT4gKG5vZGUuZGF0YVN0YXRlICYmIGRlZmF1bHRGb3JTdGF0ZSA/IChub2RlIGFzIGFueSBhcyBUKSA6ICh7fSBhcyBUKSkpO1xuICB9XG5cbiAgcHVibGljIGdldFJlbGF0ZWQkKG5vZGU6IElKU09OTm9kZSwgcmVsYXRlZFR5cGU6IE5vZGVUeXBlLCBsaW1pdCA9IDEwMCwgb2Zmc2V0ID0gMCwgcmVsYXRpb25zaGlwPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxSZWxhdGVkTm9kZVJlc3VsdD4oYCR7dGhpcy5ub2RlVXJsKG5vZGUpfS8ke25vZGVUeXBlVG9QYXJhbShyZWxhdGVkVHlwZSl9YCwge1xuICAgICAgICBwYXJhbXM6IGZpbHRlclBhcmFtcyh7IGxpbWl0LCBvZmZzZXQsIHJlbGF0aW9uc2hpcCB9KVxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoeyBjb3VudDogMCwgcmVzdWx0czogW10gfSBhcyBSZWxhdGVkTm9kZVJlc3VsdCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSZWxhdGVkKG5vZGU6IElKU09OTm9kZSwgcmVsYXRlZFR5cGU6IE5vZGVUeXBlLCBsaW1pdCA9IDEwMCwgb2Zmc2V0ID0gMCwgcmVsYXRpb25zaGlwPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVsYXRlZCQobm9kZSwgcmVsYXRlZFR5cGUsIGxpbWl0LCBvZmZzZXQsIHJlbGF0aW9uc2hpcCkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9nKHsgZGF0YVN0YXRlLCBhZ2dyZWdhdGVkLCAuLi5ub2RlIH06IElKU09OTm9kZSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoYCR7dGhpcy5ub2RlVXJsKG5vZGUpfS9sb2dgLCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgICBwYXJhbXM6IGZpbHRlclBhcmFtcyhkYXRhU3RhdGUgPT09IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWQgPyB7IGRhdGFTdGF0ZSB9IDogeyBhZ2dyZWdhdGVkIH0pXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZignJykpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNaXNzaW5nTG9va3Vwc0xvZyQoeyBkYXRhU3RhdGUsIC4uLm5vZGUgfTogSUpTT05Ob2RlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8SU5vZGVNaXNzaW5nTG9va3VwTG9nW10+KGAke3RoaXMubm9kZVVybChub2RlKX0vbG9nL2xvb2t1cHNgLCB7XG4gICAgICBwYXJhbXM6IGZpbHRlclBhcmFtcyh7IGRhdGFTdGF0ZSB9KVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldEVycm9yTG9nKHsgZGF0YVN0YXRlLCBhZ2dyZWdhdGVkLCAuLi5ub2RlIH06IElKU09OTm9kZSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8SU5vZGVFcnJvckxvZz4oYCR7dGhpcy5ub2RlVXJsKG5vZGUpfS9sb2cvZXJyb3JgLCB7XG4gICAgICAgIHBhcmFtczogZmlsdGVyUGFyYW1zKGRhdGFTdGF0ZSA9PT0gRGF0YVN0YXRlLnJlY2FsY3VsYXRlZCA/IHsgZGF0YVN0YXRlIH0gOiB7IGFnZ3JlZ2F0ZWQgfSlcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC5jYXRjaChoYW5kbGVBUElFcnJvcik7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdHJpZ2dlclBpcGVsaW5lKHsgZGF0YVN0YXRlLCAuLi5ub2RlIH06IElKU09OTm9kZSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGAke3RoaXMubm9kZVVybChub2RlKX0vcGlwZWxpbmVgLCBmaWx0ZXJQYXJhbXMoeyBkYXRhU3RhdGUgfSksIHt9KVxuICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAuY2F0Y2goaGFuZGxlQVBJRXJyb3IpO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkUmF3JDxUID0gYW55Pih1cmw6IHN0cmluZywgcmVzcG9uc2VUeXBlOiBhbnkgPSAnanNvbicpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih1cmwsIHsgcmVzcG9uc2VUeXBlIH0pLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZigocmVzcG9uc2VUeXBlID09PSAnanNvbicgPyB7fSA6ICcnKSBhcyBUKSkpO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkUmF3PFQgPSBhbnk+KHVybDogc3RyaW5nLCByZXNwb25zZVR5cGU6IGFueSA9ICdqc29uJykge1xuICAgIHJldHVybiB0aGlzLmRvd25sb2FkUmF3JDxUPih1cmwsIHJlc3BvbnNlVHlwZSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgbm9kZVR5cGVVcmwodHlwZTogYW55KSB7XG4gICAgcmV0dXJuIG5vZGVUeXBlVXJsKHRoaXMuY29tbW9uU2VydmljZS5hcGlCYXNlVXJsLCB0eXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBub2RlVXJsKG5vZGU6IElKU09OTm9kZSkge1xuICAgIHJldHVybiBub2RlVXJsKHRoaXMuY29tbW9uU2VydmljZS5hcGlCYXNlVXJsLCBub2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBub2RlTG9nc1VybChub2RlOiBJSlNPTk5vZGUpIHtcbiAgICByZXR1cm4gbm9kZUxvZ3NVcmwodGhpcy5jb21tb25TZXJ2aWNlLmFwaUJhc2VVcmwsIG5vZGUpO1xuICB9XG59XG4iXX0=
|