@eo-sdk/client 11.4.0-rc.2 → 11.4.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +1 -0
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-links/object-links.component.d.ts +5 -23
- package/app/eo-framework/object-details/object-links/object-links.component.d.ts.map +1 -1
- package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +2 -34
- package/assets/_default/i18n/en.json +4 -36
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +2 -2
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +2 -2
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +2 -2
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.mjs +2 -2
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +4 -4
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +5 -3
- package/esm2022/app/eo-client/login/login.component.mjs +3 -3
- package/esm2022/app/eo-client/settings/settings.component.mjs +3 -3
- package/esm2022/app/eo-framework/accordion/simple-accordion/simple-accordion.component.mjs +4 -4
- package/esm2022/app/eo-framework/actions/action-menu/action-menu.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing/cancel-signing.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/delete-action/delete-action.mjs +2 -2
- package/esm2022/app/eo-framework/actions/actions/delete-action/delete-prepared-action.mjs +2 -2
- package/esm2022/app/eo-framework/actions/actions/delete-content-action/delete-content/delete-content.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/download-action/download-object-action/download-object-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/email/email/email.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/finalize/finalize-object-action/finalize-object-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/open-context-action/open-context-action.mjs +2 -2
- package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/date/date.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +7 -1
- package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/column-configurator/column-configurator.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-details/object-links/object-links.component.mjs +17 -163
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +3 -3
- package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +3 -3
- package/esm2022/app/eo-framework/process-form/process-form.component.mjs +3 -3
- package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +3 -3
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +4 -4
- package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +8 -5
- package/esm2022/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +2 -2
- package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +3 -3
- package/fesm2022/eo-sdk-client.mjs +112 -243
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
import { Component, Input, ViewChild
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
2
|
import { forkJoin } from 'rxjs';
|
|
3
|
-
import { Utils } from '@eo-sdk/core';
|
|
4
|
-
import { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';
|
|
5
|
-
import { RowGroupingModule } from '../../grid/row-grouping/row-grouping.module';
|
|
6
3
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "
|
|
8
|
-
import * as i2 from "
|
|
9
|
-
import * as i3 from "@
|
|
10
|
-
import * as i4 from "
|
|
11
|
-
import * as i5 from "
|
|
12
|
-
import * as i6 from "
|
|
13
|
-
import * as i7 from "@
|
|
14
|
-
import * as i8 from "@ngx-translate/core";
|
|
4
|
+
import * as i1 from "../../../eo-framework-core/references/reference.service";
|
|
5
|
+
import * as i2 from "@eo-sdk/core";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "../../ui/eo-icon/eo-icon.component";
|
|
8
|
+
import * as i5 from "../../ui/router-link/router-link.directive";
|
|
9
|
+
import * as i6 from "@angular/router";
|
|
10
|
+
import * as i7 from "@ngx-translate/core";
|
|
15
11
|
export class ObjectLinksComponent {
|
|
16
12
|
set dmsObject(dmsObject) {
|
|
17
13
|
if (dmsObject) {
|
|
@@ -19,133 +15,15 @@ export class ObjectLinksComponent {
|
|
|
19
15
|
this.init(dmsObject);
|
|
20
16
|
}
|
|
21
17
|
}
|
|
22
|
-
|
|
23
|
-
this.gridApi.openRouterLink(event, 'ag-row');
|
|
24
|
-
}
|
|
25
|
-
constructor(router, referenceService, backend, cache, translate, gridApi, systemService) {
|
|
26
|
-
this.router = router;
|
|
18
|
+
constructor(referenceService, cache, systemService) {
|
|
27
19
|
this.referenceService = referenceService;
|
|
28
|
-
this.backend = backend;
|
|
29
20
|
this.cache = cache;
|
|
30
|
-
this.translate = translate;
|
|
31
|
-
this.gridApi = gridApi;
|
|
32
21
|
this.systemService = systemService;
|
|
33
|
-
this.modules = [ClientSideRowModelModule, RowGroupingModule];
|
|
34
22
|
this.inReferences = [];
|
|
35
23
|
this.outReferences = [];
|
|
36
24
|
this.superQueryParams = {};
|
|
37
25
|
this.showInReferences = true;
|
|
38
26
|
this.showOutReferences = false;
|
|
39
|
-
this.prepareGrid();
|
|
40
|
-
}
|
|
41
|
-
prepareGrid() {
|
|
42
|
-
this.columnDefs = [
|
|
43
|
-
{
|
|
44
|
-
field: 'metaData.groupField',
|
|
45
|
-
rowGroupIndex: 0,
|
|
46
|
-
sort: 'asc',
|
|
47
|
-
comparator: (a, b, nodeA, nodeB) => {
|
|
48
|
-
const label = (val, node) => val || Utils.getProperty(node, 'allLeafChildren.0.data.metaData.objectType.label') || '';
|
|
49
|
-
return label(a, nodeA).localeCompare(label(b, nodeB));
|
|
50
|
-
},
|
|
51
|
-
hide: true
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
field: 'title',
|
|
55
|
-
sort: 'asc',
|
|
56
|
-
cellClass: 'router-link-cell',
|
|
57
|
-
cellRenderer: this.referenceCellRenderer.bind(this)
|
|
58
|
-
}
|
|
59
|
-
];
|
|
60
|
-
const options = {
|
|
61
|
-
groupRowRenderer: this.typeCellRenderer.bind(this),
|
|
62
|
-
columnDefs: this.columnDefs,
|
|
63
|
-
headerHeight: 0,
|
|
64
|
-
rowHeight: 60,
|
|
65
|
-
rowBuffer: 20,
|
|
66
|
-
multiSortKey: 'ctrl',
|
|
67
|
-
rowSelection: 'single',
|
|
68
|
-
// groupUseEntireRow: true, //TODO: check if this is necessary
|
|
69
|
-
groupDefaultExpanded: -1,
|
|
70
|
-
accentedSort: true,
|
|
71
|
-
suppressContextMenu: true
|
|
72
|
-
};
|
|
73
|
-
this.gridOptions = {
|
|
74
|
-
...options,
|
|
75
|
-
context: {
|
|
76
|
-
count: 0,
|
|
77
|
-
gridName: 'inReferences'
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
this.gridOptions2 = {
|
|
81
|
-
...options,
|
|
82
|
-
context: {
|
|
83
|
-
count: 0,
|
|
84
|
-
gridName: 'outReferences'
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
referenceCellRenderer(param) {
|
|
89
|
-
const uriParamQuery = { queryParams: { 'type': param.data.metaData.objectType.qname } };
|
|
90
|
-
// const url = this.router.serializeUrl(this.router.createUrlTree(['/object', param.data.id], uriParamQuery));
|
|
91
|
-
const url = this.router.createUrlTree(['object', param.data.id], uriParamQuery).toString().replace(/^\/+/g, '');
|
|
92
|
-
if (param.data) {
|
|
93
|
-
return `
|
|
94
|
-
<div class="ref-list-item">
|
|
95
|
-
<a class="router-link" href="${url}" target="_blank" onclick="return false;">
|
|
96
|
-
<div class="content">
|
|
97
|
-
<div class="title">${param.data.title}</div>
|
|
98
|
-
<div class="description">${param.data.description}</div>
|
|
99
|
-
</div>
|
|
100
|
-
</a>
|
|
101
|
-
</div>`;
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
return '';
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
typeCellRenderer(param) {
|
|
108
|
-
let val = '';
|
|
109
|
-
if (param.value) {
|
|
110
|
-
const gridName = param.api.gridCore.gridOptions.context.gridName;
|
|
111
|
-
const remoteElement = param.node.allLeafChildren[0].data.metaData.remoteElement;
|
|
112
|
-
const link = this.generateLinkUrl(param.node.allLeafChildren[0].data.metaData.objectType, remoteElement, gridName);
|
|
113
|
-
const iconUrl = `${this.backend.getBaseWithContext(this.backend.getServiceBase())}/ui/icon/${param.node.allLeafChildren[0].data.metaData.objectType.iconId}.svg`;
|
|
114
|
-
const label = param.node.allLeafChildren[0].data.metaData.objectType.label;
|
|
115
|
-
const tooltip = this.translate.instant('eo.references.open.resultlist');
|
|
116
|
-
const description = remoteElement ? remoteElement.label : '';
|
|
117
|
-
val = `<img class="object-type" src="${iconUrl}" title="${label}">
|
|
118
|
-
<div class="content">
|
|
119
|
-
<div class="title">${label}</div>
|
|
120
|
-
<div class="description">${description}</div>
|
|
121
|
-
</div>
|
|
122
|
-
<a class="router-link search-link" title="${tooltip}" href="${link}" target="_blank" onclick="return false;">${this.searchIcon}</a>`;
|
|
123
|
-
}
|
|
124
|
-
return val;
|
|
125
|
-
}
|
|
126
|
-
generateLinkUrl(objectType, remoteElement, gridName) {
|
|
127
|
-
let linkUrl;
|
|
128
|
-
let query;
|
|
129
|
-
if (gridName === 'outReferences') {
|
|
130
|
-
if (remoteElement) {
|
|
131
|
-
const queries = this.queries.outReferenceQueries.filter((q) => q.types[0] === objectType.qname && !!q.filters && !!q.filters[remoteElement.qname]);
|
|
132
|
-
query = this.createSuperQueryFromQueries({ outReferenceQueries: queries, inReferenceQueries: [] });
|
|
133
|
-
query.types = queries[0].types;
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
// if there is no remoteElement, than we want to find the query without any filters
|
|
137
|
-
const queries = this.queries.outReferenceQueries.filter((q) => q.types[0] === objectType.qname && !q.filters);
|
|
138
|
-
// there can be more than one field, that references to the same object type, that's why it's necessary to merge the terms.
|
|
139
|
-
const mergedTerm = queries.map(q => q.term).join(' || ');
|
|
140
|
-
query = queries[0];
|
|
141
|
-
query.term = mergedTerm;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
query = this.queries.inReferenceQueries.find((q) => q.types[0] === objectType.qname && !!q.filters[remoteElement.qname]);
|
|
146
|
-
}
|
|
147
|
-
linkUrl = `result?query=${encodeURIComponent(JSON.stringify(query))}`;
|
|
148
|
-
return linkUrl;
|
|
149
27
|
}
|
|
150
28
|
switchListVisibilityTo(list) {
|
|
151
29
|
if (list === 'in') {
|
|
@@ -167,26 +45,6 @@ export class ObjectLinksComponent {
|
|
|
167
45
|
forkJoin(obs)
|
|
168
46
|
.subscribe(results => {
|
|
169
47
|
[this.inReferences, this.outReferences] = results;
|
|
170
|
-
if (this.inReferences.length > 20) {
|
|
171
|
-
this.gridOptions.groupDefaultExpanded = 0;
|
|
172
|
-
}
|
|
173
|
-
if (this.outReferences.length > 20) {
|
|
174
|
-
this.gridOptions2.groupDefaultExpanded = 0;
|
|
175
|
-
}
|
|
176
|
-
if (this.gridIn && this.inReferences.length) {
|
|
177
|
-
this.gridIn.api.setGridOption('rowData', this.inReferences);
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
this.gridOptions.rowData = this.inReferences;
|
|
181
|
-
this.gridOptions.context.count = this.inReferences.length;
|
|
182
|
-
}
|
|
183
|
-
if (this.gridOut && this.outReferences.length) {
|
|
184
|
-
this.gridOut.api.setGridOption('rowData', this.outReferences);
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
this.gridOptions2.rowData = this.outReferences;
|
|
188
|
-
this.gridOptions2.context.count = this.outReferences.length;
|
|
189
|
-
}
|
|
190
48
|
}, (error) => console.error({ error }));
|
|
191
49
|
this.referenceService
|
|
192
50
|
.getQueries(item)
|
|
@@ -265,18 +123,17 @@ export class ObjectLinksComponent {
|
|
|
265
123
|
});
|
|
266
124
|
return subTypes;
|
|
267
125
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
.subscribe(response => this.searchIcon = response.replace('<svg', '<svg focusable="false" class="search-icon"'));
|
|
126
|
+
navigateToReference(event, entry) {
|
|
127
|
+
const url = window.location.href.split('/object')[0] + '/object/' + entry?.id;
|
|
128
|
+
window.open(url, (event && event?.ctrlKey) ? '_blank' : '_self');
|
|
272
129
|
}
|
|
273
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ObjectLinksComponent, deps: [{ token: i1.
|
|
274
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ObjectLinksComponent, selector: "eo-object-links", inputs: { dmsObject: "dmsObject" }, host: { listeners: { "click": "onClick($event)" } }, viewQueries: [{ propertyName: "gridIn", first: true, predicate: ["gridIn"], descendants: true }, { propertyName: "gridOut", first: true, predicate: ["gridOut"], descendants: true }], ngImport: i0, template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"button primary\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\" title=\"{{'eo.references.open.resultlist' | translate}}\">\n <span>{{'eo.references.open.resultlist' | translate}}</span>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n <div class=\"notfound\" *ngIf=\"(!inReferences?.length)\">{{'eo.references.object.notfound' | translate}}</div>\n\n <div class=\"grid-wrapper\" *ngIf=\"inReferences?.length\">\n <ag-grid-angular #gridIn [modules]=\"modules\" [gridOptions]=\"gridOptions\" class=\"ag-result\"></ag-grid-angular>\n </div>\n </div>\n\n <!-- list of outReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showOutReferences}\">\n <div class=\"notfound\" *ngIf=\"(!outReferences?.length)\">{{'eo.references.object.notfound' | translate}}</div>\n\n <div class=\"grid-wrapper\" *ngIf=\"outReferences?.length\">\n <ag-grid-angular #gridOut [modules]=\"modules\" [gridOptions]=\"gridOptions2\" class=\"ag-result\"></ag-grid-angular>\n </div>\n </div>\n\n </div>\n </ng-template>\n</div>", styles: [":host ::ng-deep ag-grid-angular{background:transparent}:host ::ng-deep .ag-pinned-left-cols-viewport{display:none!important}:host ::ng-deep ag-grid-angular.ag-theme-balham .ag-column-drop-horizontal:not(.ag-hidden){display:none!important}:host ::ng-deep .ag-center-cols-container{width:100%!important}:host ::ng-deep .ag-row{background:transparent!important}:host ::ng-deep ag-grid-angular.ag-theme-balham .ag-header{border:none}:host ::ng-deep .ag-row-group>.ag-cell-wrapper{height:100%;display:flex;flex-flow:row nowrap;flex:1 1 auto;align-items:center;background:var(--color-white);border-radius:2px;padding:calc(var(--app-pane-padding) / 2);border-bottom:1px solid var(--list-item-border-color)}:host ::ng-deep .ag-row-group>.ag-cell-wrapper .ag-icon{display:inline-block;height:12px;width:12px;color:var(--color-black)}:host ::ng-deep .ag-row-group>.ag-cell-wrapper .ag-icon-contracted{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxyZWN0IHN0cm9rZS1vcGFjaXR5PSIuNSIgc3Ryb2tlPSIjMDAwIiB4PSIxLjUiIHk9IjEuNSIgd2lkdGg9IjkiIGhlaWdodD0iOSIgcng9IjEiLz48cGF0aCBmaWxsPSIjMDAwIiBkPSJNNSAzaDJ2Nkg1eiIvPjxwYXRoIGZpbGw9IiMwMDAiIGQ9Ik05IDV2MkgzVjV6Ii8+PC9nPjwvc3ZnPg==) center/12px 12px no-repeat}:host ::ng-deep .ag-row-group>.ag-cell-wrapper .ag-icon-expanded{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxyZWN0IHN0cm9rZS1vcGFjaXR5PSIuNSIgc3Ryb2tlPSIjMDAwIiB4PSIxLjUiIHk9IjEuNSIgd2lkdGg9IjkiIGhlaWdodD0iOSIgcng9IjEiLz48cGF0aCBmaWxsPSIjMDAwIiBkPSJNOSA1djJIM1Y1eiIvPjwvZz48L3N2Zz4=) center/12px 12px no-repeat}:host ::ng-deep .ag-row-group>.ag-cell-wrapper>span.ag-group-value>span{display:flex;flex-flow:row nowrap;align-items:center}:host ::ng-deep .ag-row-group>.ag-cell-wrapper .ag-group-child-count{position:absolute;right:48px}:host ::ng-deep .ag-row-group>.ag-cell-wrapper .search-link{opacity:0;height:24px;width:24px;position:absolute;right:var(--app-pane-padding);background:var(--color-accent);border-radius:2px;transition:all .2s ease-in-out;margin-left:var(--app-pane-padding)}:host ::ng-deep .ag-row-group>.ag-cell-wrapper .search-link svg{fill:var(--color-white)}:host ::ng-deep .ag-row-group>.ag-cell-wrapper .search-link .search-icon{width:20px;margin-left:2px}:host ::ng-deep .ag-row-group>.ag-cell-wrapper .search-link:hover{background:var(--color-accent)}:host ::ng-deep .ag-row-group>.ag-cell-wrapper:hover .search-link{opacity:1}:host ::ng-deep .ag-row-group>.ag-cell-wrapper span.ag-group-value{width:calc(100% - 110px);margin:0 calc(var(--app-pane-padding) * 2)}:host ::ng-deep .ag-row-group>.ag-cell-wrapper span.ag-group-value img{height:24px;opacity:.5;margin-right:calc(var(--app-pane-padding) / 2)}:host ::ng-deep .ag-row-group>.ag-cell-wrapper .ag-group-child-count{color:var(--text-color-caption);font-size:var(--font-caption)}:host ::ng-deep .ag-cell{width:100%!important;border-bottom:1px solid var(--list-item-border-color);background:var(--color-white)}:host ::ng-deep .content{pointer-events:none;overflow:hidden}:host ::ng-deep .content div{pointer-events:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host ::ng-deep .content .title{font-weight:var(--font-weight-bold)}:host ::ng-deep .content .description{opacity:.6;font-size:var(--font-caption)}:host ::ng-deep .ref-list-item{padding:0 var(--app-pane-padding) 0 calc(var(--app-pane-padding) * 4.3);cursor:pointer;height:100%;display:flex;align-items:center}:host ::ng-deep .ref-list-item a{display:flex;align-items:flex-start;text-decoration:none;color:var(--text-color-body);width:100%}:host ::ng-deep .ref-list-item .content{padding:calc(var(--app-pane-padding) / 4) var(--app-pane-padding)}:host ::ng-deep .ref-list-item:hover{background:var(--color-accent)}:host ::ng-deep .ref-list-item:hover .content{color:var(--color-white)}.eo-references{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding);height:calc(100% - var(--app-pane-padding) * 2);box-sizing:border-box;display:flex;flex-flow:column}.eo-references .hidden{display:none!important}.eo-references .object-not-found{height:100%;display:flex;justify-content:center;align-items:center}.eo-references .object-not-found div{color:var(--text-color-caption)}.eo-references .form-buttons{width:100%;padding:calc(var(--app-pane-padding) / 2);height:44px;display:flex;justify-content:space-between;background:var(--color-white);box-sizing:border-box}.eo-references .form-buttons .gridlabels{display:flex;width:60%}.eo-references .form-buttons .gridlabel{border:1px solid var(--list-item-border-color);border-radius:4px;padding:0 calc(var(--app-pane-padding) / 2);display:flex;align-items:center;color:var(--text-color-caption);cursor:pointer;margin-right:calc(var(--app-pane-padding) / 2);transition:all var(--app-default-transition-duration) ease-in-out;overflow:hidden}.eo-references .form-buttons .gridlabel span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .form-buttons .gridlabel:hover{color:var(--text-color-body);border-color:#0003}.eo-references .form-buttons .active{color:var(--text-color-body);border-color:#0003;background-color:var(--panel-background-grey)}.eo-references .form-buttons a.button{display:flex;align-items:center;overflow:hidden}.eo-references .form-buttons a.button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .eo-references-lists{flex:1;overflow:hidden;border-top:4px solid rgba(var(--color-black-rgb),.2)}.eo-references .eo-references-lists .resultlist-container{display:flex;flex-flow:column;height:100%;width:100%}.eo-references .eo-references-lists .resultlist-container .notfound{color:var(--text-color-caption);display:flex;align-items:center;justify-content:center;height:100%}.eo-references .eo-references-lists .ag-result{position:absolute;inset:0}.eo-references .eo-references-lists .grid-wrapper{position:relative;flex:1}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i7.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ObjectLinksComponent, deps: [{ token: i1.ReferenceService }, { token: i2.AppCacheService }, { token: i2.SystemService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ObjectLinksComponent, selector: "eo-object-links", inputs: { dmsObject: "dmsObject" }, viewQueries: [{ propertyName: "gridIn", first: true, predicate: ["gridIn"], descendants: true }, { propertyName: "gridOut", first: true, predicate: ["gridOut"], descendants: true }], ngImport: i0, template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"button primary\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\" title=\"{{'eo.references.open.resultlist' | translate}}\">\n <span>{{'eo.references.open.resultlist' | translate}}</span>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n\n @if (inReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of inReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.remoteElement?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n\n <!-- list of outReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showOutReferences}\">\n @if (outReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of outReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.element?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".eo-references{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding);height:calc(100% - var(--app-pane-padding) * 2);box-sizing:border-box;display:flex;flex-flow:column}.eo-references .hidden{display:none!important}.eo-references .object-not-found{height:100%;display:flex;justify-content:center;align-items:center}.eo-references .object-not-found div{color:var(--text-color-caption)}.eo-references .form-buttons{width:100%;padding:calc(var(--app-pane-padding) / 2);height:44px;display:flex;justify-content:space-between;background:var(--color-white);box-sizing:border-box}.eo-references .form-buttons .gridlabels{display:flex;width:60%}.eo-references .form-buttons .gridlabel{border:1px solid var(--list-item-border-color);border-radius:4px;padding:0 calc(var(--app-pane-padding) / 2);display:flex;align-items:center;color:var(--text-color-caption);cursor:pointer;margin-right:calc(var(--app-pane-padding) / 2);transition:all var(--app-default-transition-duration) ease-in-out;overflow:hidden}.eo-references .form-buttons .gridlabel span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .form-buttons .gridlabel:hover{color:var(--text-color-body);border-color:#0003}.eo-references .form-buttons .active{color:var(--text-color-body);border-color:#0003;background-color:var(--panel-background-grey)}.eo-references .form-buttons a.button{display:flex;align-items:center;overflow:hidden}.eo-references .form-buttons a.button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .eo-references-lists{flex:1;overflow:hidden;border-top:4px solid rgba(var(--color-black-rgb),.2)}.eo-references .eo-references-lists .resultlist-container{display:flex;flex-flow:column;height:100%;width:100%}.eo-references .eo-references-lists .resultlist-container .notfound{color:var(--text-color-caption);display:flex;align-items:center;justify-content:center;height:100%}.eo-references .eo-references-lists .ag-result{position:absolute;inset:0}.eo-references .eo-references-lists .grid-wrapper{position:relative;flex:1}.referenceList{display:flex;flex-direction:column;border-radius:2px}.referenceList .content{cursor:pointer;margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2)}.referenceList .content:hover{background-color:var(--main-background-light)}.referenceList .title{padding-left:calc(var(--app-pane-padding) / 2);font-weight:var(--font-weight-bold)}.referenceList .description,.referenceList .remote-element{padding-left:31px}.referenceList .title,.referenceList .description,.referenceList .icon,.referenceList .remote-element{color:var(--text-color-caption)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i5.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
|
|
275
132
|
}
|
|
276
133
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ObjectLinksComponent, decorators: [{
|
|
277
134
|
type: Component,
|
|
278
|
-
args: [{ selector: 'eo-object-links', template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"button primary\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\" title=\"{{'eo.references.open.resultlist' | translate}}\">\n <span>{{'eo.references.open.resultlist' | translate}}</span>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n <div class=\"
|
|
279
|
-
}], ctorParameters: () => [{ type: i1.
|
|
135
|
+
args: [{ selector: 'eo-object-links', template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"button primary\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\" title=\"{{'eo.references.open.resultlist' | translate}}\">\n <span>{{'eo.references.open.resultlist' | translate}}</span>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n\n @if (inReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of inReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.remoteElement?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n\n <!-- list of outReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showOutReferences}\">\n @if (outReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of outReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.element?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".eo-references{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding);height:calc(100% - var(--app-pane-padding) * 2);box-sizing:border-box;display:flex;flex-flow:column}.eo-references .hidden{display:none!important}.eo-references .object-not-found{height:100%;display:flex;justify-content:center;align-items:center}.eo-references .object-not-found div{color:var(--text-color-caption)}.eo-references .form-buttons{width:100%;padding:calc(var(--app-pane-padding) / 2);height:44px;display:flex;justify-content:space-between;background:var(--color-white);box-sizing:border-box}.eo-references .form-buttons .gridlabels{display:flex;width:60%}.eo-references .form-buttons .gridlabel{border:1px solid var(--list-item-border-color);border-radius:4px;padding:0 calc(var(--app-pane-padding) / 2);display:flex;align-items:center;color:var(--text-color-caption);cursor:pointer;margin-right:calc(var(--app-pane-padding) / 2);transition:all var(--app-default-transition-duration) ease-in-out;overflow:hidden}.eo-references .form-buttons .gridlabel span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .form-buttons .gridlabel:hover{color:var(--text-color-body);border-color:#0003}.eo-references .form-buttons .active{color:var(--text-color-body);border-color:#0003;background-color:var(--panel-background-grey)}.eo-references .form-buttons a.button{display:flex;align-items:center;overflow:hidden}.eo-references .form-buttons a.button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .eo-references-lists{flex:1;overflow:hidden;border-top:4px solid rgba(var(--color-black-rgb),.2)}.eo-references .eo-references-lists .resultlist-container{display:flex;flex-flow:column;height:100%;width:100%}.eo-references .eo-references-lists .resultlist-container .notfound{color:var(--text-color-caption);display:flex;align-items:center;justify-content:center;height:100%}.eo-references .eo-references-lists .ag-result{position:absolute;inset:0}.eo-references .eo-references-lists .grid-wrapper{position:relative;flex:1}.referenceList{display:flex;flex-direction:column;border-radius:2px}.referenceList .content{cursor:pointer;margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2)}.referenceList .content:hover{background-color:var(--main-background-light)}.referenceList .title{padding-left:calc(var(--app-pane-padding) / 2);font-weight:var(--font-weight-bold)}.referenceList .description,.referenceList .remote-element{padding-left:31px}.referenceList .title,.referenceList .description,.referenceList .icon,.referenceList .remote-element{color:var(--text-color-caption)}\n"] }]
|
|
136
|
+
}], ctorParameters: () => [{ type: i1.ReferenceService }, { type: i2.AppCacheService }, { type: i2.SystemService }], propDecorators: { gridIn: [{
|
|
280
137
|
type: ViewChild,
|
|
281
138
|
args: ['gridIn']
|
|
282
139
|
}], gridOut: [{
|
|
@@ -285,8 +142,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
285
142
|
}], dmsObject: [{
|
|
286
143
|
type: Input,
|
|
287
144
|
args: ['dmsObject']
|
|
288
|
-
}], onClick: [{
|
|
289
|
-
type: HostListener,
|
|
290
|
-
args: ['click', ['$event']]
|
|
291
145
|
}] } });
|
|
292
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWxpbmtzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1kZXRhaWxzL29iamVjdC1saW5rcy9vYmplY3QtbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWxpbmtzL29iamVjdC1saW5rcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBS2hGLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUIsT0FBTyxFQUFnQyxLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDbEUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDbEYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7Ozs7Ozs7Ozs7QUFPOUUsTUFBTSxPQUFPLG9CQUFvQjtJQW9CL0IsSUFDSSxTQUFTLENBQUMsU0FBb0I7UUFDaEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFa0MsT0FBTyxDQUFDLEtBQUs7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxZQUFvQixNQUFjLEVBQ3hCLGdCQUFrQyxFQUNsQyxPQUF1QixFQUN2QixLQUFzQixFQUN0QixTQUEyQixFQUMzQixPQUFvQixF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bWV3b3JrLWNvcmUvYXBpL2dyaWQuc2VydmljZSc7XG5pbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkLCBIb3N0TGlzdGVuZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1JlZmVyZW5jZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3JlZmVyZW5jZXMvcmVmZXJlbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlLCBEbXNPYmplY3QsIEFwcENhY2hlU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7Q29sRGVmLCBHcmlkT3B0aW9ucywgTW9kdWxlfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQge2ZvcmtKb2lufSBmcm9tICdyeGpzJztcbmltcG9ydCB7U3lzdGVtU2VydmljZSwgQmFja2VuZFNlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtDbGllbnRTaWRlUm93TW9kZWxNb2R1bGV9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jbGllbnQtc2lkZS1yb3ctbW9kZWwnO1xuaW1wb3J0IHtSb3dHcm91cGluZ01vZHVsZX0gZnJvbSAnLi4vLi4vZ3JpZC9yb3ctZ3JvdXBpbmcvcm93LWdyb3VwaW5nLm1vZHVsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1saW5rcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtbGlua3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtbGlua3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RMaW5rc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIG1vZHVsZXM6IE1vZHVsZVtdID0gW0NsaWVudFNpZGVSb3dNb2RlbE1vZHVsZSwgUm93R3JvdXBpbmdNb2R1bGVdO1xuXG4gIGl0ZW06IERtc09iamVjdDtcbiAgY29sdW1uRGVmczogQ29sRGVmW107XG4gIHNlYXJjaEljb247XG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgZ3JpZE9wdGlvbnMyOiBHcmlkT3B0aW9ucztcbiAgaW5SZWZlcmVuY2VzID0gW107XG4gIG91dFJlZmVyZW5jZXMgPSBbXTtcbiAgcXVlcmllcztcbiAgc3VwZXJRdWVyeVBhcmFtcyA9IHt9O1xuXG4gIHNob3dJblJlZmVyZW5jZXMgPSB0cnVlO1xuICBzaG93T3V0UmVmZXJlbmNlcyA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ2dyaWRJbicpIGdyaWRJbjtcbiAgQFZpZXdDaGlsZCgnZ3JpZE91dCcpIGdyaWRPdXQ7XG5cbiAgQElucHV0KCdkbXNPYmplY3QnKVxuICBzZXQgZG1zT2JqZWN0KGRtc09iamVjdDogRG1zT2JqZWN0KSB7XG4gICAgaWYgKGRtc09iamVjdCkge1xuICAgICAgdGhpcy5pdGVtID0gZG1zT2JqZWN0O1xuICAgICAgdGhpcy5pbml0KGRtc09iamVjdCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKSBvbkNsaWNrKGV2ZW50KSB7XG4gICAgdGhpcy5ncmlkQXBpLm9wZW5Sb3V0ZXJMaW5rKGV2ZW50LCAnYWctcm93Jyk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVmZXJlbmNlU2VydmljZTogUmVmZXJlbmNlU2VydmljZSxcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FjaGU6IEFwcENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGdyaWRBcGk6IEdyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSkge1xuXG4gICAgdGhpcy5wcmVwYXJlR3JpZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlR3JpZCgpIHtcbiAgICB0aGlzLmNvbHVtbkRlZnMgPSBbXG4gICAgICB7XG4gICAgICAgIGZpZWxkOiAnbWV0YURhdGEuZ3JvdXBGaWVsZCcsXG4gICAgICAgIHJvd0dyb3VwSW5kZXg6IDAsXG4gICAgICAgIHNvcnQ6ICdhc2MnLFxuICAgICAgICBjb21wYXJhdG9yOiAoYSwgYiwgbm9kZUEsIG5vZGVCKSA9PiB7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAodmFsOiBzdHJpbmcsIG5vZGU6IGFueSkgPT4gdmFsIHx8IFV0aWxzLmdldFByb3BlcnR5KG5vZGUsICdhbGxMZWFmQ2hpbGRyZW4uMC5kYXRhLm1ldGFEYXRhLm9iamVjdFR5cGUubGFiZWwnKSB8fCAnJztcbiAgICAgICAgICByZXR1cm4gbGFiZWwoYSwgbm9kZUEpLmxvY2FsZUNvbXBhcmUobGFiZWwoYiwgbm9kZUIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGlkZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZmllbGQ6ICd0aXRsZScsXG4gICAgICAgIHNvcnQ6ICdhc2MnLFxuICAgICAgICBjZWxsQ2xhc3M6ICdyb3V0ZXItbGluay1jZWxsJyxcbiAgICAgICAgY2VsbFJlbmRlcmVyOiB0aGlzLnJlZmVyZW5jZUNlbGxSZW5kZXJlci5iaW5kKHRoaXMpXG4gICAgICB9XG4gICAgXTtcblxuICAgIGNvbnN0IG9wdGlvbnM6IEdyaWRPcHRpb25zID0ge1xuICAgICAgZ3JvdXBSb3dSZW5kZXJlcjogdGhpcy50eXBlQ2VsbFJlbmRlcmVyLmJpbmQodGhpcyksXG4gICAgICBjb2x1bW5EZWZzOiB0aGlzLmNvbHVtbkRlZnMsXG4gICAgICBoZWFkZXJIZWlnaHQ6IDAsXG4gICAgICByb3dIZWlnaHQ6IDYwLFxuICAgICAgcm93QnVmZmVyOiAyMCxcbiAgICAgIG11bHRpU29ydEtleTogJ2N0cmwnLFxuICAgICAgcm93U2VsZWN0aW9uOiAnc2luZ2xlJyxcbiAgICAgIC8vIGdyb3VwVXNlRW50aXJlUm93OiB0cnVlLCAvL1RPRE86IGNoZWNrIGlmIHRoaXMgaXMgbmVjZXNzYXJ5XG4gICAgICBncm91cERlZmF1bHRFeHBhbmRlZDogLTEsXG4gICAgICBhY2NlbnRlZFNvcnQ6IHRydWUsXG4gICAgICBzdXBwcmVzc0NvbnRleHRNZW51OiB0cnVlXG4gICAgfTtcblxuICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgY29udGV4dDoge1xuICAgICAgICBjb3VudDogMCxcbiAgICAgICAgZ3JpZE5hbWU6ICdpblJlZmVyZW5jZXMnXG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMuZ3JpZE9wdGlvbnMyID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgY291bnQ6IDAsXG4gICAgICAgIGdyaWROYW1lOiAnb3V0UmVmZXJlbmNlcydcbiAgICAgIH1cbiAgICB9O1xuXG4gIH1cblxuICBwcml2YXRlIHJlZmVyZW5jZUNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHsndHlwZSc6IHBhcmFtLmRhdGEubWV0YURhdGEub2JqZWN0VHlwZS5xbmFtZX19O1xuICAgIC8vIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnL29iamVjdCcsIHBhcmFtLmRhdGEuaWRdLCB1cmlQYXJhbVF1ZXJ5KSk7XG4gICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJ29iamVjdCcsIHBhcmFtLmRhdGEuaWRdLCB1cmlQYXJhbVF1ZXJ5KS50b1N0cmluZygpLnJlcGxhY2UoL15cXC8rL2csICcnKTtcbiAgICBpZiAocGFyYW0uZGF0YSkge1xuICAgICAgcmV0dXJuIGBcbiAgICAgICAgPGRpdiBjbGFzcz1cInJlZi1saXN0LWl0ZW1cIj5cbiAgICAgICAgICA8YSBjbGFzcz1cInJvdXRlci1saW5rXCIgaHJlZj1cIiR7dXJsfVwiIHRhcmdldD1cIl9ibGFua1wiIG9uY2xpY2s9XCJyZXR1cm4gZmFsc2U7XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj4ke3BhcmFtLmRhdGEudGl0bGV9PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPiR7cGFyYW0uZGF0YS5kZXNjcmlwdGlvbn08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHlwZUNlbGxSZW5kZXJlcihwYXJhbSkge1xuICAgIGxldCB2YWwgPSAnJztcbiAgICBpZiAocGFyYW0udmFsdWUpIHtcbiAgICAgIGNvbnN0IGdyaWROYW1lID0gcGFyYW0uYXBpLmdyaWRDb3JlLmdyaWRPcHRpb25zLmNvbnRleHQuZ3JpZE5hbWU7XG4gICAgICBjb25zdCByZW1vdGVFbGVtZW50ID0gcGFyYW0ubm9kZS5hbGxMZWFmQ2hpbGRyZW5bMF0uZGF0YS5tZXRhRGF0YS5yZW1vdGVFbGVtZW50O1xuICAgICAgY29uc3QgbGluayA9IHRoaXMuZ2VuZXJhdGVMaW5rVXJsKHBhcmFtLm5vZGUuYWxsTGVhZkNoaWxkcmVuWzBdLmRhdGEubWV0YURhdGEub2JqZWN0VHlwZSwgcmVtb3RlRWxlbWVudCwgZ3JpZE5hbWUpO1xuICAgICAgY29uc3QgaWNvblVybCA9IGAke3RoaXMuYmFja2VuZC5nZXRCYXNlV2l0aENvbnRleHQodGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkpfS91aS9pY29uLyR7cGFyYW0ubm9kZS5hbGxMZWFmQ2hpbGRyZW5bMF0uZGF0YS5tZXRhRGF0YS5vYmplY3RUeXBlLmljb25JZH0uc3ZnYDtcbiAgICAgIGNvbnN0IGxhYmVsID0gcGFyYW0ubm9kZS5hbGxMZWFmQ2hpbGRyZW5bMF0uZGF0YS5tZXRhRGF0YS5vYmplY3RUeXBlLmxhYmVsO1xuICAgICAgY29uc3QgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnJlZmVyZW5jZXMub3Blbi5yZXN1bHRsaXN0Jyk7XG4gICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHJlbW90ZUVsZW1lbnQgPyByZW1vdGVFbGVtZW50LmxhYmVsIDogJyc7XG5cbiAgICAgIHZhbCA9IGA8aW1nIGNsYXNzPVwib2JqZWN0LXR5cGVcIiBzcmM9XCIke2ljb25Vcmx9XCIgdGl0bGU9XCIke2xhYmVsfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+JHtsYWJlbH08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+JHtkZXNjcmlwdGlvbn08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJyb3V0ZXItbGluayBzZWFyY2gtbGlua1wiIHRpdGxlPVwiJHt0b29sdGlwfVwiIGhyZWY9XCIke2xpbmt9XCIgdGFyZ2V0PVwiX2JsYW5rXCIgb25jbGljaz1cInJldHVybiBmYWxzZTtcIj4ke3RoaXMuc2VhcmNoSWNvbn08L2E+YDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVMaW5rVXJsKG9iamVjdFR5cGUsIHJlbW90ZUVsZW1lbnQsIGdyaWROYW1lKSB7XG4gICAgbGV0IGxpbmtVcmw7XG4gICAgbGV0IHF1ZXJ5O1xuICAgIGlmIChncmlkTmFtZSA9PT0gJ291dFJlZmVyZW5jZXMnKSB7XG4gICAgICBpZiAocmVtb3RlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5xdWVyaWVzLm91dFJlZmVyZW5jZVF1ZXJpZXMuZmlsdGVyKChxKSA9PiBxLnR5cGVzWzBdID09PSBvYmplY3RUeXBlLnFuYW1lICYmICEhcS5maWx0ZXJzICYmICEhcS5maWx0ZXJzW3JlbW90ZUVsZW1lbnQucW5hbWVdKTtcbiAgICAgICAgcXVlcnkgPSB0aGlzLmNyZWF0ZVN1cGVyUXVlcnlGcm9tUXVlcmllcyh7b3V0UmVmZXJlbmNlUXVlcmllczogcXVlcmllcywgaW5SZWZlcmVuY2VRdWVyaWVzOiBbXX0pO1xuICAgICAgICBxdWVyeS50eXBlcyA9IHF1ZXJpZXNbMF0udHlwZXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBpZiB0aGVyZSBpcyBubyByZW1vdGVFbGVtZW50LCB0aGFuIHdlIHdhbnQgdG8gZmluZCB0aGUgcXVlcnkgd2l0aG91dCBhbnkgZmlsdGVyc1xuICAgICAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5xdWVyaWVzLm91dFJlZmVyZW5jZVF1ZXJpZXMuZmlsdGVyKChxKSA9PiBxLnR5cGVzWzBdID09PSBvYmplY3RUeXBlLnFuYW1lICYmICFxLmZpbHRlcnMpO1xuICAgICAgICAvLyB0aGVyZSBjYW4gYmUgbW9yZSB0aGFuIG9uZSBmaWVsZCwgdGhhdCByZWZlcmVuY2VzIHRvIHRoZSBzYW1lIG9iamVjdCB0eXBlLCB0aGF0J3Mgd2h5IGl0J3MgbmVjZXNzYXJ5IHRvIG1lcmdlIHRoZSB0ZXJtcy5cbiAgICAgICAgY29uc3QgbWVyZ2VkVGVybSA9IHF1ZXJpZXMubWFwKHEgPT4gcS50ZXJtKS5qb2luKCcgfHwgJyk7XG4gICAgICAgIHF1ZXJ5ID0gcXVlcmllc1swXTtcbiAgICAgICAgcXVlcnkudGVybSA9IG1lcmdlZFRlcm07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHF1ZXJ5ID0gdGhpcy5xdWVyaWVzLmluUmVmZXJlbmNlUXVlcmllcy5maW5kKChxKSA9PiBxLnR5cGVzWzBdID09PSBvYmplY3RUeXBlLnFuYW1lICYmICEhcS5maWx0ZXJzW3JlbW90ZUVsZW1lbnQucW5hbWVdKTtcbiAgICB9XG4gICAgbGlua1VybCA9IGByZXN1bHQ/cXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkocXVlcnkpKX1gO1xuICAgIHJldHVybiBsaW5rVXJsO1xuICB9XG5cbiAgc3dpdGNoTGlzdFZpc2liaWxpdHlUbyhsaXN0OiAnaW4nIHwgJ291dCcpe1xuICAgIGlmKGxpc3QgPT09ICdpbicpe1xuICAgICAgdGhpcy5zaG93SW5SZWZlcmVuY2VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2hvd091dFJlZmVyZW5jZXMgPSBmYWxzZTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMuc2hvd0luUmVmZXJlbmNlcyA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93T3V0UmVmZXJlbmNlcyA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuY2FjaGUuc2V0SXRlbSgneXV2LnJlZmVyZW5jZS5saXN0LnNob3cuJyArIHRoaXMuaXRlbS50eXBlTmFtZSwgbGlzdCk7XG4gIH1cblxuICBwcml2YXRlIGluaXQoaXRlbSkge1xuICAgIHRoaXMuY2FjaGUuZ2V0SXRlbSgneXV2LnJlZmVyZW5jZS5saXN0LnNob3cuJyArIGl0ZW0udHlwZU5hbWUpLnN1YnNjcmliZShyZXMgPT4gdGhpcy5zd2l0Y2hMaXN0VmlzaWJpbGl0eVRvKHJlcykpO1xuICAgIGNvbnN0IG9icyA9IFtcbiAgICAgIHRoaXMucmVmZXJlbmNlU2VydmljZS5nZXRJblJlZmVyZW5jZXMoaXRlbSksXG4gICAgICB0aGlzLnJlZmVyZW5jZVNlcnZpY2UuZ2V0T3V0UmVmZXJlbmNlcyhpdGVtKVxuICAgIF07XG4gICAgZm9ya0pvaW4ob2JzKVxuICAgICAgLnN1YnNjcmliZShyZXN1bHRzID0+IHtcbiAgICAgICAgW3RoaXMuaW5SZWZlcmVuY2VzLCB0aGlzLm91dFJlZmVyZW5jZXNdID0gcmVzdWx0cztcblxuICAgICAgICBpZiAodGhpcy5pblJlZmVyZW5jZXMubGVuZ3RoID4gMjApIHtcbiAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmdyb3VwRGVmYXVsdEV4cGFuZGVkID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vdXRSZWZlcmVuY2VzLmxlbmd0aCA+IDIwKSB7XG4gICAgICAgICAgdGhpcy5ncmlkT3B0aW9uczIuZ3JvdXBEZWZhdWx0RXhwYW5kZWQgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZ3JpZEluICYmIHRoaXMuaW5SZWZlcmVuY2VzLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuZ3JpZEluLmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgdGhpcy5pblJlZmVyZW5jZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMucm93RGF0YSA9IHRoaXMuaW5SZWZlcmVuY2VzO1xuICAgICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuY29udGV4dC5jb3VudCA9IHRoaXMuaW5SZWZlcmVuY2VzLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmdyaWRPdXQgJiYgdGhpcy5vdXRSZWZlcmVuY2VzLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuZ3JpZE91dC5hcGkuc2V0R3JpZE9wdGlvbigncm93RGF0YScsIHRoaXMub3V0UmVmZXJlbmNlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5ncmlkT3B0aW9uczIucm93RGF0YSA9IHRoaXMub3V0UmVmZXJlbmNlcztcbiAgICAgICAgICB0aGlzLmdyaWRPcHRpb25zMi5jb250ZXh0LmNvdW50ID0gdGhpcy5vdXRSZWZlcmVuY2VzLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfSwgKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKHtlcnJvcn0pKTtcblxuICAgIHRoaXMucmVmZXJlbmNlU2VydmljZVxuICAgICAgLmdldFF1ZXJpZXMoaXRlbSlcbiAgICAgIC5zdWJzY3JpYmUocXVlcmllcyA9PiB7XG4gICAgICAgIHRoaXMucXVlcmllcyA9IHF1ZXJpZXM7XG4gICAgICAgIGNvbnN0IHN1cGVyUXVlcnkgPSB0aGlzLmNyZWF0ZVN1cGVyUXVlcnlGcm9tUXVlcmllcyh0aGlzLnF1ZXJpZXMpO1xuICAgICAgICB0aGlzLnN1cGVyUXVlcnlQYXJhbXMgPSB7J3F1ZXJ5JzogZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHN1cGVyUXVlcnkpKSwgJ3NpbGVudCc6IHRydWV9O1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN1cGVyUXVlcnlGcm9tUXVlcmllcyhxdWVyaWVzKSB7XG4gICAgbGV0IHN1cGVyUXVlcnkgPSB7XG4gICAgICB0ZXJtOiAnJyxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZXhwZXJ0bW9kZTogdHJ1ZVxuICAgICAgfVxuICAgIH07XG5cbiAgICBxdWVyaWVzLm91dFJlZmVyZW5jZVF1ZXJpZXMuZm9yRWFjaChxdWVyeSA9PiB7XG4gICAgICBpZiAocXVlcnkuZmlsdGVycykge1xuICAgICAgICBPYmplY3Qua2V5cyhxdWVyeS5maWx0ZXJzKVxuICAgICAgICAgIC5mb3JFYWNoKGZpbHRlck5hbWUgPT4gc3VwZXJRdWVyeS50ZXJtICs9IHRoaXMuY3JlYXRlU3VwZXJRdWVyeVRlcm1QYXJ0KHF1ZXJ5LCBmaWx0ZXJOYW1lKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlclF1ZXJ5LnRlcm0gKz0gJygnICsgcXVlcnkudGVybSArICcpJyArICcgT1IgJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHF1ZXJpZXMuaW5SZWZlcmVuY2VRdWVyaWVzLmZvckVhY2goKHF1ZXJ5KSA9PiB7XG4gICAgICBpZiAocXVlcnkuZmlsdGVycykge1xuICAgICAgICBPYmplY3Qua2V5cyhxdWVyeS5maWx0ZXJzKVxuICAgICAgICAgIC5mb3JFYWNoKGZpbHRlck5hbWUgPT4gc3VwZXJRdWVyeS50ZXJtICs9IHRoaXMuY3JlYXRlU3VwZXJRdWVyeVRlcm1QYXJ0KHF1ZXJ5LCBmaWx0ZXJOYW1lKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlclF1ZXJ5LnRlcm0gKz0gcXVlcnkudGVybTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN1cGVyUXVlcnkudGVybSA9IHN1cGVyUXVlcnkudGVybS5yZXBsYWNlKG5ldyBSZWdFeHAoJywnLCAnZycpLCAnICcpOyAvLyByZXBsYWNlIGFsbCAnLCcgd2l0aCAnICdcbiAgICBzdXBlclF1ZXJ5LnRlcm0gPSBzdXBlclF1ZXJ5LnRlcm0ucmVwbGFjZShuZXcgUmVnRXhwKCcgT1IgJyArICckJyksICcnKTsgLy8gcmVtb3ZlIGxhc3QgJyBPUiAnXG5cbiAgICByZXR1cm4gc3VwZXJRdWVyeTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3VwZXJRdWVyeVRlcm1QYXJ0KHF1ZXJ5LCBmaWx0ZXJOYW1lKSB7XG4gICAgLy8gcmVzZXJ2ZWQgY2hhcmFjdGVycyBvZiBlbGFzdGljIHNlYXJjaFxuICAgIC8vIHRvZG86IGFkZCAnfHwnXG4gICAgY29uc3QgcmVzZXJ2ZWRDaGFycyA9IFsnXFxcXCcsICcvJywgJ1xcKycsICctJywgJz0nLCAnJiYnLCAnPicsICc8JywgJyEnLCAnXFwoJywgJ1xcKScsICdcXHsnLCAnXFx9JywgJ1xcWycsICdcXF0nLCAnXFxeJywgJ1wiJywgJ1xcficsICdcXConLCAnXFw/JywgJzonXTtcblxuICAgIGNvbnN0IGZpbHRlciA9IHF1ZXJ5LmZpbHRlcnNbZmlsdGVyTmFtZV07XG4gICAgbGV0IHZhbHVlID0gJycgKyBmaWx0ZXIudjEgKyAnJztcbiAgICByZXNlcnZlZENoYXJzLmZvckVhY2goY2hhciA9PiB7XG4gICAgICBpZiAodmFsdWUuaW5kZXhPZihjaGFyKSA+IC0xKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcJyArIGNoYXIsICdnJyksICdcXFxcJyArIGNoYXIpOyAvLyBlc2NhcGVzIGFsbCByZXNlcnZlZCBjaGFyYWN0ZXJzXG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IHR5cGVzID0gdGhpcy5nZXRTdWJUeXBlcyhxdWVyeS50eXBlc1swXSk7XG4gICAgdHlwZXMucHVzaChxdWVyeS50eXBlc1swXSk7XG4gICAgbGV0IGluZGV4TmFtZSA9IHRoaXMuZ2V0SW5kZXhOYW1lQnlRTmFtZShmaWx0ZXJOYW1lKTtcbiAgICBpZiAoIWluZGV4TmFtZSkge1xuICAgICAgaW5kZXhOYW1lID0gJ3N0cl8nICsgZmlsdGVyTmFtZS5yZXBsYWNlKCcuJywgJ18nKTtcbiAgICB9XG4gICAgcmV0dXJuICcoJyArIGluZGV4TmFtZSArICc6KCcgKyB2YWx1ZSArICcpIEFORCBrZXlfdHlwZTooJyArIHR5cGVzICsgJykpIE9SICc7XG4gIH1cblxuICBwcml2YXRlIGdldEluZGV4TmFtZUJ5UU5hbWUocW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZXMoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdHlwZXNbaV0uZWxlbWVudHMuZmluZChlbCA9PiBlbC5xbmFtZSA9PT0gcW5hbWUpO1xuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuaW5kZXhuYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3ViVHlwZXModHlwZU5hbWUpIHtcbiAgICBsZXQgdHlwZXMgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZXMoKTtcbiAgICBsZXQgc3ViVHlwZXMgPSBbXTtcbiAgICB0eXBlcy5mb3JFYWNoKG9iamVjdFR5cGUgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gISFvYmplY3RUeXBlLnN1cGVydHlwZXMuZmluZCgodDogYW55KSA9PiB0Lm5hbWUgPT09IHR5cGVOYW1lKTtcbiAgICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgICAgc3ViVHlwZXMucHVzaChvYmplY3RUeXBlLnFuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gc3ViVHlwZXM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXRWaWFDYWNoZSgnYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zZWFyY2guc3ZnJylcbiAgICAgIC5zdWJzY3JpYmUocmVzcG9uc2UgPT4gdGhpcy5zZWFyY2hJY29uID0gcmVzcG9uc2UucmVwbGFjZSgnPHN2ZycsICc8c3ZnIGZvY3VzYWJsZT1cImZhbHNlXCIgY2xhc3M9XCJzZWFyY2gtaWNvblwiJykpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZW8tcmVmZXJlbmNlc1wiPlxuICA8ZGl2IGNsYXNzPVwib2JqZWN0LW5vdC1mb3VuZFwiICpuZ0lmPVwiIWluUmVmZXJlbmNlcz8ubGVuZ3RoICYmICFvdXRSZWZlcmVuY2VzPy5sZW5ndGg7IGVsc2UgcmVmQ29udGFpbmVyXCI+XG4gICAgPGRpdj57eydlby5yZWZlcmVuY2VzLm9iamVjdC5ub3Rmb3VuZCcgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgI3JlZkNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1idXR0b25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JpZGxhYmVsc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkbGFiZWxcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IHNob3dJblJlZmVyZW5jZXN9XCIgKGNsaWNrKT1cInN3aXRjaExpc3RWaXNpYmlsaXR5VG8oJ2luJylcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eydlby5yZWZlcmVuY2VzLnRvLmxhYmVsJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7J2VvLnJlZmVyZW5jZXMudG8ubGFiZWwnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRsYWJlbFwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2hvd091dFJlZmVyZW5jZXN9XCIgKGNsaWNrKT1cInN3aXRjaExpc3RWaXNpYmlsaXR5VG8oJ291dCcpXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3snZW8ucmVmZXJlbmNlcy5mcm9tLmxhYmVsJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7J2VvLnJlZmVyZW5jZXMuZnJvbS5sYWJlbCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGEgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiIFtyb3V0ZXJMaW5rXT1cIicvcmVzdWx0J1wiIFtxdWVyeVBhcmFtc109XCJzdXBlclF1ZXJ5UGFyYW1zXCIgdGl0bGU9XCJ7eydlby5yZWZlcmVuY2VzLm9wZW4ucmVzdWx0bGlzdCcgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICA8c3Bhbj57eydlby5yZWZlcmVuY2VzLm9wZW4ucmVzdWx0bGlzdCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJlby1yZWZlcmVuY2VzLWxpc3RzXCI+XG5cbiAgICAgIDwhLS0gbGlzdCBvZiBpblJlZmVyZW5jZXMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0bGlzdC1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J2hpZGRlbic6ICFzaG93SW5SZWZlcmVuY2VzfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibm90Zm91bmRcIiAqbmdJZj1cIighaW5SZWZlcmVuY2VzPy5sZW5ndGgpXCI+e3snZW8ucmVmZXJlbmNlcy5vYmplY3Qubm90Zm91bmQnIHwgdHJhbnNsYXRlfX08L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZC13cmFwcGVyXCIgKm5nSWY9XCJpblJlZmVyZW5jZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgI2dyaWRJbiBbbW9kdWxlc109XCJtb2R1bGVzXCIgW2dyaWRPcHRpb25zXT1cImdyaWRPcHRpb25zXCIgY2xhc3M9XCJhZy1yZXN1bHRcIj48L2FnLWdyaWQtYW5ndWxhcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBsaXN0IG9mIG91dFJlZmVyZW5jZXMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0bGlzdC1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J2hpZGRlbic6ICFzaG93T3V0UmVmZXJlbmNlc31cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGZvdW5kXCIgKm5nSWY9XCIoIW91dFJlZmVyZW5jZXM/Lmxlbmd0aClcIj57eydlby5yZWZlcmVuY2VzLm9iamVjdC5ub3Rmb3VuZCcgfCB0cmFuc2xhdGV9fTwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLXdyYXBwZXJcIiAqbmdJZj1cIm91dFJlZmVyZW5jZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgI2dyaWRPdXQgW21vZHVsZXNdPVwibW9kdWxlc1wiIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uczJcIiBjbGFzcz1cImFnLXJlc3VsdFwiPjwvYWctZ3JpZC1hbmd1bGFyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj4iXX0=
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWxpbmtzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1kZXRhaWxzL29iamVjdC1saW5rcy9vYmplY3QtbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWxpbmtzL29iamVjdC1saW5rcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJMUQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBUTlCLE1BQU0sT0FBTyxvQkFBb0I7SUFjL0IsSUFDSSxTQUFTLENBQUMsU0FBb0I7UUFDaEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFvQixnQkFBa0MsRUFDNUMsS0FBc0IsRUFDdEIsYUFBNEI7UUFGbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUM1QyxVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXJCdEMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRXRCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFnQjFCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFrQjtRQUN2QyxJQUFJLElB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U0FBUzsrQkFDRSxpQkFBaUI7K0lBZU4sTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNHLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFHaEIsU0FBUztzQkFEWixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7UmVmZXJlbmNlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcmVmZXJlbmNlcy9yZWZlcmVuY2Uuc2VydmljZSc7XG5pbXBvcnQge0Rtc09iamVjdCwgQXBwQ2FjaGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtmb3JrSm9pbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1saW5rcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtbGlua3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtbGlua3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RMaW5rc0NvbXBvbmVudCB7XG5cbiAgaXRlbTogRG1zT2JqZWN0O1xuICBpblJlZmVyZW5jZXMgPSBbXTtcbiAgb3V0UmVmZXJlbmNlcyA9IFtdO1xuICBxdWVyaWVzO1xuICBzdXBlclF1ZXJ5UGFyYW1zID0ge307XG5cbiAgc2hvd0luUmVmZXJlbmNlcyA9IHRydWU7XG4gIHNob3dPdXRSZWZlcmVuY2VzID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnZ3JpZEluJykgZ3JpZEluO1xuICBAVmlld0NoaWxkKCdncmlkT3V0JykgZ3JpZE91dDtcblxuICBASW5wdXQoJ2Rtc09iamVjdCcpXG4gIHNldCBkbXNPYmplY3QoZG1zT2JqZWN0OiBEbXNPYmplY3QpIHtcbiAgICBpZiAoZG1zT2JqZWN0KSB7XG4gICAgICB0aGlzLml0ZW0gPSBkbXNPYmplY3Q7XG4gICAgICB0aGlzLmluaXQoZG1zT2JqZWN0KTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZmVyZW5jZVNlcnZpY2U6IFJlZmVyZW5jZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYWNoZTogQXBwQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSkge1xuICB9XG5cbiAgc3dpdGNoTGlzdFZpc2liaWxpdHlUbyhsaXN0OiAnaW4nIHwgJ291dCcpIHtcbiAgICBpZiAobGlzdCA9PT0gJ2luJykge1xuICAgICAgdGhpcy5zaG93SW5SZWZlcmVuY2VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2hvd091dFJlZmVyZW5jZXMgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93SW5SZWZlcmVuY2VzID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dPdXRSZWZlcmVuY2VzID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5jYWNoZS5zZXRJdGVtKCd5dXYucmVmZXJlbmNlLmxpc3Quc2hvdy4nICsgdGhpcy5pdGVtLnR5cGVOYW1lLCBsaXN0KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdChpdGVtKSB7XG4gICAgdGhpcy5jYWNoZS5nZXRJdGVtKCd5dXYucmVmZXJlbmNlLmxpc3Quc2hvdy4nICsgaXRlbS50eXBlTmFtZSkuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLnN3aXRjaExpc3RWaXNpYmlsaXR5VG8ocmVzKSk7XG4gICAgY29uc3Qgb2JzID0gW1xuICAgICAgdGhpcy5yZWZlcmVuY2VTZXJ2aWNlLmdldEluUmVmZXJlbmNlcyhpdGVtKSxcbiAgICAgIHRoaXMucmVmZXJlbmNlU2VydmljZS5nZXRPdXRSZWZlcmVuY2VzKGl0ZW0pXG4gICAgXTtcbiAgICBmb3JrSm9pbihvYnMpXG4gICAgICAuc3Vic2NyaWJlKHJlc3VsdHMgPT4ge1xuICAgICAgICBbdGhpcy5pblJlZmVyZW5jZXMsIHRoaXMub3V0UmVmZXJlbmNlc10gPSByZXN1bHRzO1xuICAgICAgfSwgKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKHtlcnJvcn0pKTtcblxuICAgIHRoaXMucmVmZXJlbmNlU2VydmljZVxuICAgICAgLmdldFF1ZXJpZXMoaXRlbSlcbiAgICAgIC5zdWJzY3JpYmUocXVlcmllcyA9PiB7XG4gICAgICAgIHRoaXMucXVlcmllcyA9IHF1ZXJpZXM7XG4gICAgICAgIGNvbnN0IHN1cGVyUXVlcnkgPSB0aGlzLmNyZWF0ZVN1cGVyUXVlcnlGcm9tUXVlcmllcyh0aGlzLnF1ZXJpZXMpO1xuICAgICAgICB0aGlzLnN1cGVyUXVlcnlQYXJhbXMgPSB7J3F1ZXJ5JzogZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHN1cGVyUXVlcnkpKSwgJ3NpbGVudCc6IHRydWV9O1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN1cGVyUXVlcnlGcm9tUXVlcmllcyhxdWVyaWVzKSB7XG4gICAgbGV0IHN1cGVyUXVlcnkgPSB7XG4gICAgICB0ZXJtOiAnJyxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZXhwZXJ0bW9kZTogdHJ1ZVxuICAgICAgfVxuICAgIH07XG5cbiAgICBxdWVyaWVzLm91dFJlZmVyZW5jZVF1ZXJpZXMuZm9yRWFjaChxdWVyeSA9PiB7XG4gICAgICBpZiAocXVlcnkuZmlsdGVycykge1xuICAgICAgICBPYmplY3Qua2V5cyhxdWVyeS5maWx0ZXJzKVxuICAgICAgICAgIC5mb3JFYWNoKGZpbHRlck5hbWUgPT4gc3VwZXJRdWVyeS50ZXJtICs9IHRoaXMuY3JlYXRlU3VwZXJRdWVyeVRlcm1QYXJ0KHF1ZXJ5LCBmaWx0ZXJOYW1lKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlclF1ZXJ5LnRlcm0gKz0gJygnICsgcXVlcnkudGVybSArICcpJyArICcgT1IgJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHF1ZXJpZXMuaW5SZWZlcmVuY2VRdWVyaWVzLmZvckVhY2goKHF1ZXJ5KSA9PiB7XG4gICAgICBpZiAocXVlcnkuZmlsdGVycykge1xuICAgICAgICBPYmplY3Qua2V5cyhxdWVyeS5maWx0ZXJzKVxuICAgICAgICAgIC5mb3JFYWNoKGZpbHRlck5hbWUgPT4gc3VwZXJRdWVyeS50ZXJtICs9IHRoaXMuY3JlYXRlU3VwZXJRdWVyeVRlcm1QYXJ0KHF1ZXJ5LCBmaWx0ZXJOYW1lKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlclF1ZXJ5LnRlcm0gKz0gcXVlcnkudGVybTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN1cGVyUXVlcnkudGVybSA9IHN1cGVyUXVlcnkudGVybS5yZXBsYWNlKG5ldyBSZWdFeHAoJywnLCAnZycpLCAnICcpOyAvLyByZXBsYWNlIGFsbCAnLCcgd2l0aCAnICdcbiAgICBzdXBlclF1ZXJ5LnRlcm0gPSBzdXBlclF1ZXJ5LnRlcm0ucmVwbGFjZShuZXcgUmVnRXhwKCcgT1IgJyArICckJyksICcnKTsgLy8gcmVtb3ZlIGxhc3QgJyBPUiAnXG5cbiAgICByZXR1cm4gc3VwZXJRdWVyeTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3VwZXJRdWVyeVRlcm1QYXJ0KHF1ZXJ5LCBmaWx0ZXJOYW1lKSB7XG4gICAgLy8gcmVzZXJ2ZWQgY2hhcmFjdGVycyBvZiBlbGFzdGljIHNlYXJjaFxuICAgIC8vIHRvZG86IGFkZCAnfHwnXG4gICAgY29uc3QgcmVzZXJ2ZWRDaGFycyA9IFsnXFxcXCcsICcvJywgJ1xcKycsICctJywgJz0nLCAnJiYnLCAnPicsICc8JywgJyEnLCAnXFwoJywgJ1xcKScsICdcXHsnLCAnXFx9JywgJ1xcWycsICdcXF0nLCAnXFxeJywgJ1wiJywgJ1xcficsICdcXConLCAnXFw/JywgJzonXTtcblxuICAgIGNvbnN0IGZpbHRlciA9IHF1ZXJ5LmZpbHRlcnNbZmlsdGVyTmFtZV07XG4gICAgbGV0IHZhbHVlID0gJycgKyBmaWx0ZXIudjEgKyAnJztcbiAgICByZXNlcnZlZENoYXJzLmZvckVhY2goY2hhciA9PiB7XG4gICAgICBpZiAodmFsdWUuaW5kZXhPZihjaGFyKSA+IC0xKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcJyArIGNoYXIsICdnJyksICdcXFxcJyArIGNoYXIpOyAvLyBlc2NhcGVzIGFsbCByZXNlcnZlZCBjaGFyYWN0ZXJzXG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IHR5cGVzID0gdGhpcy5nZXRTdWJUeXBlcyhxdWVyeS50eXBlc1swXSk7XG4gICAgdHlwZXMucHVzaChxdWVyeS50eXBlc1swXSk7XG4gICAgbGV0IGluZGV4TmFtZSA9IHRoaXMuZ2V0SW5kZXhOYW1lQnlRTmFtZShmaWx0ZXJOYW1lKTtcbiAgICBpZiAoIWluZGV4TmFtZSkge1xuICAgICAgaW5kZXhOYW1lID0gJ3N0cl8nICsgZmlsdGVyTmFtZS5yZXBsYWNlKCcuJywgJ18nKTtcbiAgICB9XG4gICAgcmV0dXJuICcoJyArIGluZGV4TmFtZSArICc6KCcgKyB2YWx1ZSArICcpIEFORCBrZXlfdHlwZTooJyArIHR5cGVzICsgJykpIE9SICc7XG4gIH1cblxuICBwcml2YXRlIGdldEluZGV4TmFtZUJ5UU5hbWUocW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZXMoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdHlwZXNbaV0uZWxlbWVudHMuZmluZChlbCA9PiBlbC5xbmFtZSA9PT0gcW5hbWUpO1xuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuaW5kZXhuYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3ViVHlwZXModHlwZU5hbWUpIHtcbiAgICBsZXQgdHlwZXMgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZXMoKTtcbiAgICBsZXQgc3ViVHlwZXMgPSBbXTtcbiAgICB0eXBlcy5mb3JFYWNoKG9iamVjdFR5cGUgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gISFvYmplY3RUeXBlLnN1cGVydHlwZXMuZmluZCgodDogYW55KSA9PiB0Lm5hbWUgPT09IHR5cGVOYW1lKTtcbiAgICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgICAgc3ViVHlwZXMucHVzaChvYmplY3RUeXBlLnFuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gc3ViVHlwZXM7XG4gIH1cblxuICBuYXZpZ2F0ZVRvUmVmZXJlbmNlKGV2ZW50LCBlbnRyeSkge1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcvb2JqZWN0JylbMF0gKyAnL29iamVjdC8nICsgZW50cnk/LmlkO1xuICAgIHdpbmRvdy5vcGVuKHVybCwgKGV2ZW50ICYmIGV2ZW50Py5jdHJsS2V5KSA/ICdfYmxhbmsnIDogJ19zZWxmJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1yZWZlcmVuY2VzXCI+XG4gIDxkaXYgY2xhc3M9XCJvYmplY3Qtbm90LWZvdW5kXCIgKm5nSWY9XCIhaW5SZWZlcmVuY2VzPy5sZW5ndGggJiYgIW91dFJlZmVyZW5jZXM/Lmxlbmd0aDsgZWxzZSByZWZDb250YWluZXJcIj5cbiAgICA8ZGl2Pnt7J2VvLnJlZmVyZW5jZXMub2JqZWN0Lm5vdGZvdW5kJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZSAjcmVmQ29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWJ1dHRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkbGFiZWxzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRsYWJlbFwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2hvd0luUmVmZXJlbmNlc31cIiAoY2xpY2spPVwic3dpdGNoTGlzdFZpc2liaWxpdHlUbygnaW4nKVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7J2VvLnJlZmVyZW5jZXMudG8ubGFiZWwnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3snZW8ucmVmZXJlbmNlcy50by5sYWJlbCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZGxhYmVsXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBzaG93T3V0UmVmZXJlbmNlc31cIiAoY2xpY2spPVwic3dpdGNoTGlzdFZpc2liaWxpdHlUbygnb3V0JylcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eydlby5yZWZlcmVuY2VzLmZyb20ubGFiZWwnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3snZW8ucmVmZXJlbmNlcy5mcm9tLmxhYmVsJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YSBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCIgW3JvdXRlckxpbmtdPVwiJy9yZXN1bHQnXCIgW3F1ZXJ5UGFyYW1zXT1cInN1cGVyUXVlcnlQYXJhbXNcIiB0aXRsZT1cInt7J2VvLnJlZmVyZW5jZXMub3Blbi5yZXN1bHRsaXN0JyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDxzcGFuPnt7J2VvLnJlZmVyZW5jZXMub3Blbi5yZXN1bHRsaXN0JyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImVvLXJlZmVyZW5jZXMtbGlzdHNcIj5cblxuICAgICAgPCEtLSBsaXN0IG9mIGluUmVmZXJlbmNlcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHRsaXN0LWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnaGlkZGVuJzogIXNob3dJblJlZmVyZW5jZXN9XCI+XG5cbiAgICAgICAgQGlmIChpblJlZmVyZW5jZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZlcmVuY2VMaXN0XCI+XG4gICAgICAgICAgICBAZm9yIChlbnRyeSBvZiBpblJlZmVyZW5jZXM7IHRyYWNrIGVudHJ5KSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9SZWZlcmVuY2UoJGV2ZW50LCBlbnRyeSlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiaWNvblwiIFtvYmplY3RUeXBlXT1cImVudHJ5Py5tZXRhRGF0YT8ub2JqZWN0VHlwZVwiIFtpY29uVGl0bGVdPVwiZW50cnk/Lm1ldGFEYXRhPy5vYmplY3RUeXBlPy5sYWJlbFwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2VudHJ5Py50aXRsZX19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIHt7ZW50cnk/LmRlc2NyaXB0aW9ufX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtb3RlLWVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgIHt7J2VvLnJlZmVyZW5jZXMuZmllbGQubGFiZWwnIHwgdHJhbnNsYXRlfX0ge3tlbnRyeT8ubWV0YURhdGE/LnJlbW90ZUVsZW1lbnQ/LmxhYmVsfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3Rmb3VuZFwiPnt7J2VvLnJlZmVyZW5jZXMub2JqZWN0Lm5vdGZvdW5kJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIGxpc3Qgb2Ygb3V0UmVmZXJlbmNlcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHRsaXN0LWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnaGlkZGVuJzogIXNob3dPdXRSZWZlcmVuY2VzfVwiPlxuICAgICAgICBAaWYgKG91dFJlZmVyZW5jZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZlcmVuY2VMaXN0XCI+XG4gICAgICAgICAgICBAZm9yIChlbnRyeSBvZiBvdXRSZWZlcmVuY2VzOyB0cmFjayBlbnRyeSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIChjbGljayk9XCJuYXZpZ2F0ZVRvUmVmZXJlbmNlKCRldmVudCwgZW50cnkpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImljb25cIiBbb2JqZWN0VHlwZV09XCJlbnRyeT8ubWV0YURhdGE/Lm9iamVjdFR5cGVcIiBbaWNvblRpdGxlXT1cImVudHJ5Py5tZXRhRGF0YT8ub2JqZWN0VHlwZT8ubGFiZWxcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3tlbnRyeT8udGl0bGV9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICB7e2VudHJ5Py5kZXNjcmlwdGlvbn19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbW90ZS1lbGVtZW50XCI+XG4gICAgICAgICAgICAgICAgICB7eydlby5yZWZlcmVuY2VzLmZpZWxkLmxhYmVsJyB8IHRyYW5zbGF0ZX19IHt7ZW50cnk/Lm1ldGFEYXRhPy5lbGVtZW50Py5sYWJlbH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90Zm91bmRcIj57eydlby5yZWZlcmVuY2VzLm9iamVjdC5ub3Rmb3VuZCcgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|