@eo-sdk/client 11.0.0-rc.7 → 11.0.0-rc.8
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/login/login.component.d.ts +3 -1
- package/app/eo-client/login/login.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/signature-action/signature-action.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/string/string.component.d.ts +1 -0
- package/app/eo-framework/form-elements/string/string.component.d.ts.map +1 -1
- package/app/eo-framework/frame/frame.component.d.ts +2 -1
- package/app/eo-framework/frame/frame.component.d.ts.map +1 -1
- package/app/eo-framework/media/media.component.d.ts +9 -20
- package/app/eo-framework/media/media.component.d.ts.map +1 -1
- package/app/eo-framework/util/services/utilities.service.d.ts +46 -41
- package/app/eo-framework/util/services/utilities.service.d.ts.map +1 -1
- package/app/eo-framework-core/api/plugins.service.d.ts +4 -0
- package/app/eo-framework-core/api/plugins.service.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +6 -6
- package/assets/_default/i18n/en.json +14 -14
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/login/login.component.mjs +14 -11
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +6 -6
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +5 -2
- package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +7 -4
- package/esm2022/app/eo-framework/frame/frame.component.mjs +3 -2
- package/esm2022/app/eo-framework/media/media.component.mjs +18 -44
- package/esm2022/app/eo-framework/util/services/utilities.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/api/plugins.service.mjs +45 -1
- package/fesm2022/eo-sdk-client.mjs +95 -67
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +2 -2
- package/proxy.config.json +15 -0
|
@@ -5,6 +5,43 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
import * as i1 from "@eo-sdk/core";
|
|
6
6
|
import * as i2 from "@angular/router";
|
|
7
7
|
import * as i3 from "../agent/agent.service";
|
|
8
|
+
export function onLoad() {
|
|
9
|
+
window.addEventListener('message', (e) => {
|
|
10
|
+
console.log(e);
|
|
11
|
+
if (!e || !e.data || !e.data.match || !e.data.match('MessageId'))
|
|
12
|
+
return;
|
|
13
|
+
var data = JSON.parse(e.data);
|
|
14
|
+
if (!data)
|
|
15
|
+
return;
|
|
16
|
+
if (data.MessageId === 'Host_PostmessageObjectUpdating' || data.MessageId === 'Host_PostmessageObjectConverted') {
|
|
17
|
+
setTimeout(() => {
|
|
18
|
+
var btn = window['api'].util.$('eo-object-details .refresh-button');
|
|
19
|
+
btn && btn.click();
|
|
20
|
+
}, 3500);
|
|
21
|
+
}
|
|
22
|
+
else if (data.MessageId === 'UI_EditClick' && data.Values.url) {
|
|
23
|
+
var w = window.open(decodeURIComponent(data.Values.url));
|
|
24
|
+
var http = window['api'].http;
|
|
25
|
+
w.addEventListener('message', (e) => {
|
|
26
|
+
if (!e || !e.data || !e.data.match || !e.data.match('MessageId'))
|
|
27
|
+
return;
|
|
28
|
+
if (e.data.match('User_Activity')) {
|
|
29
|
+
console.log(e);
|
|
30
|
+
http.get('auth/info', '/').then(() => {
|
|
31
|
+
console.log('dashlet session extended...');
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
;
|
|
35
|
+
});
|
|
36
|
+
window['api'].content.windows = (window['api'].content.windows || []).concat([
|
|
37
|
+
w
|
|
38
|
+
]);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
return () => {
|
|
42
|
+
(window['api'].content.windows || []).forEach(w => w && !w.closed && w.close());
|
|
43
|
+
};
|
|
44
|
+
}
|
|
8
45
|
export const UNDOCK_WINDOW_NAME = 'eoViewer';
|
|
9
46
|
export class PluginsService {
|
|
10
47
|
get currentUrl() {
|
|
@@ -13,6 +50,9 @@ export class PluginsService {
|
|
|
13
50
|
get api() {
|
|
14
51
|
return this.getApi();
|
|
15
52
|
}
|
|
53
|
+
get availableServices() {
|
|
54
|
+
return this.services || [];
|
|
55
|
+
}
|
|
16
56
|
applyFunction(value, params, args) {
|
|
17
57
|
const fnc = value?.toString().trim();
|
|
18
58
|
if (!fnc)
|
|
@@ -51,10 +91,14 @@ export class PluginsService {
|
|
|
51
91
|
CLIPBOARD_AS_PDF: 'eo.agent.action.clipboard-pdf',
|
|
52
92
|
EXTERNAL: 'eo.agent.action.external'
|
|
53
93
|
};
|
|
94
|
+
this.unload = () => { };
|
|
54
95
|
window['api'] = this.api;
|
|
55
96
|
this.userService
|
|
56
97
|
.user$
|
|
57
98
|
.subscribe((user) => this.user = user);
|
|
99
|
+
this.backend.get(`config/services`, '/').subscribe((services) => (this.services = services));
|
|
100
|
+
this.unload = onLoad();
|
|
101
|
+
this.eventService.on(EnaioEvent.LOGOUT).subscribe(() => this.unload());
|
|
58
102
|
}
|
|
59
103
|
// todo: create inreface for API
|
|
60
104
|
getApi() {
|
|
@@ -255,4 +299,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
255
299
|
providedIn: 'root'
|
|
256
300
|
}]
|
|
257
301
|
}], ctorParameters: () => [{ type: i1.BackendService }, { type: i1.NotificationsService }, { type: i1.ClipboardService }, { type: i1.Logger }, { type: i1.TranslateService }, { type: i1.DmsService }, { type: i2.Router }, { type: i3.AgentService }, { type: i1.EventService }, { type: i1.UserService }, { type: i0.ApplicationRef }, { type: i0.NgZone }] });
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQWlCLFVBQVUsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUdqRSxPQUFPLEVBRWtDLFNBQVMsRUFBbUIsS0FBSyxFQUN6QyxVQUFVLEVBQzFDLE1BQU0sY0FBYyxDQUFDOzs7OztBQU10QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUM7QUFJN0MsTUFBTSxPQUFPLGNBQWM7SUFZekIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBOEIsRUFBRSxNQUFlLEVBQUUsSUFBVTtRQUM5RSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBQ2pCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUM7WUFDM0MsQ0FBQyxDQUFDLFdBQVcsR0FBRyx5QkFBeUI7WUFDekMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUNuRCxDQUFDLENBQUMsV0FBVyxHQUFHLEdBQUc7Z0JBQ25CLENBQUMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQztZQUNILE9BQU8s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Y2VzQ29udGVudCI6WyJpbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBZ2VudFNlcnZpY2V9IGZyb20gJy4uL2FnZW50L2FnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRW9Vc2VyLCBMb2dnZXIsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBCYWNrZW5kU2VydmljZSwgQ2xpcGJvYXJkU2VydmljZSxcbiAgRG1zU2VydmljZSwgRXZlbnRTZXJ2aWNlLCBVc2VyU2VydmljZSwgRG1zT2JqZWN0LCBDbGlwYm9hcmRBY3Rpb24sIFV0aWxzLFxuICBUcmFuc2xhdGVTZXJ2aWNlLCBIdHRwT3B0aW9ucywgRW5haW9FdmVudFxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cgeyBhcGk6IGFueTsgfVxufVxuXG5leHBvcnQgY29uc3QgVU5ET0NLX1dJTkRPV19OQU1FID0gJ2VvVmlld2VyJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBsdWdpbnNTZXJ2aWNlIHtcblxuICBwcml2YXRlIHVzZXI6IEVvVXNlcjtcbiAgcHJpdmF0ZSBhZ2VudEFjdGlvbiA9IHtcbiAgICBPUEVOOiAnZW8uYWdlbnQuYWN0aW9uLm9wZW4nLFxuICAgIE1BSUw6ICdlby5hZ2VudC5hY3Rpb24ubWFpbCcsXG4gICAgTUFJTF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24ubWFpbC1wZGYnLFxuICAgIENMSVBCT0FSRDogJ2VvLmFnZW50LmFjdGlvbi5jbGlwYm9hcmQnLFxuICAgIENMSVBCT0FSRF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkLXBkZicsXG4gICAgRVhURVJOQUw6ICdlby5hZ2VudC5hY3Rpb24uZXh0ZXJuYWwnXG4gIH07XG5cbiAgcHVibGljIGdldCBjdXJyZW50VXJsKCkge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci51cmw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFwaSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBcGkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseUZ1bmN0aW9uKHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbiB8IGFueSwgcGFyYW1zPzogc3RyaW5nLCBhcmdzPzogYW55KSB7XG4gICAgY29uc3QgZm5jID0gdmFsdWU/LnRvU3RyaW5nKCkudHJpbSgpO1xuICAgIGlmICghZm5jKSByZXR1cm47XG4gICAgY29uc3QgZiA9IGZuYy5tYXRjaCgvXmZ1bmN0aW9ufF5cXCguKlxcKVxccyo9Pi8pXG4gICAgICA/IGByZXR1cm4gKCR7Zm5jfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpYFxuICAgICAgOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFmbmMuc3RhcnRzV2l0aChcIidcIilcbiAgICAgID8gYHJldHVybiAnJHtmbmN9J2BcbiAgICAgIDogYHJldHVybiAke2ZuY31gO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbiguLi4ocGFyYW1zIHx8ICdhcGknKS5zcGxpdCgnLCcpLm1hcCgoYSkgPT4gYS50cmltKCkpLCBmKS5hcHBseSh0aGlzLmFwaSwgYXJncyB8fCBbdGhpcy5hcGldKTtcbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuXG4gICAgd2luZG93WydhcGknXSA9IHRoaXMuYXBpO1xuXG4gICAgdGhpcy51c2VyU2VydmljZVxuICAgICAgLnVzZXIkXG4gICAgICAuc3Vic2NyaWJlKCh1c2VyKSA9PiB0aGlzLnVzZXIgPSB1c2VyKTtcbiAgfVxuXG4gIC8vIHRvZG86IGNyZWF0ZSBpbnJlZmFjZSBmb3IgQVBJXG5cbiAgcHVibGljIGdldEFwaSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBkZXRlY3RDaGFuZ2VzOiAoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICAgICAgfSwgNTAwKTtcbiAgICAgIH0sXG4gICAgICByb3V0ZXI6IHtcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLnJvdXRlclxuICAgICAgfSxcbiAgICAgIGV2ZW50czoge1xuICAgICAgICBlbmFpb0V2ZW50VHlwZTogRW5haW9FdmVudCxcbiAgICAgICAgb246ICh0eXBlOiBzdHJpbmcpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS5vbih0eXBlKSksXG4gICAgICAgIHRyaWdnZXI6ICh0eXBlOiBzdHJpbmcsIGRhdGE/OiBhbnkpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKHR5cGUsIGRhdGEpKVxuICAgICAgfSxcbiAgICAgIHNlc3Npb246IHtcbiAgICAgICAgZ2V0VXNlcjogKCkgPT4gdGhpcy5nZXRDdXJyZW50VXNlcigpXG4gICAgICB9LFxuICAgICAgZG1zOiB7XG4gICAgICAgIGdldE9iamVjdDogKGlkLCB0eXBlLCB2ZXJzaW9uKSA9PiB0aGlzLmdldERtc09iamVjdChpZCwgdHlwZSwgdmVyc2lvbiksXG4gICAgICAgIGdldFJlc3VsdDogKGZpZWxkcywgdHlwZSkgPT4gdGhpcy5nZXRSZXN1bHQoZmllbGRzLCB0eXBlKSxcbiAgICAgICAgZG93bmxvYWRDb250ZW50OiAoZG1zT2JqZWN0czogRG1zT2JqZWN0W10sIHJlbmRpdGlvbj86ICdQREYnXG4gICAgICAgICAgfCAnVElGRidcbiAgICAgICAgICB8ICdURVhUJ1xuICAgICAgICAgIHwgJ0pQRUcnKSA9PiB0aGlzLmJhY2tlbmQuZG93bmxvYWRDb250ZW50KGRtc09iamVjdHMsIHJlbmRpdGlvbilcbiAgICAgIH0sXG4gICAgICBodHRwOiB7XG4gICAgICAgIGdldDogKHVyaSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5nZXQodXJpLCBiYXNlLCBvcHRpb25zKSxcbiAgICAgICAgcG9zdDogKHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5wb3N0KHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucyksXG4gICAgICAgIGRlbDogKHVyaSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5kZWwodXJpLCBiYXNlLCBvcHRpb25zKSxcbiAgICAgICAgcHV0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnB1dCh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5nZXRDb25maWcoKVxuICAgICAgfSxcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgdmlld2VyOiAoKSA9PiB3aW5kb3dbVU5ET0NLX1dJTkRPV19OQU1FXSB8fCAod2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2VvLW1lZGlhIGlmcmFtZVtzcmNdJykgfHwge30pWydjb250ZW50V2luZG93J10sXG4gICAgICAgIHRyaWdnZXJFcnJvcjogKGVyciwgd2luLCBwYXJhbWV0ZXJzKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihVTkRPQ0tfV0lORE9XX05BTUUgKyAnRXJyb3InLCB7IGVyciwgd2luLCBwYXJhbWV0ZXJzIH0pKSxcbiAgICAgICAgY2F0Y2hFcnJvcjogKCkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLm9uKFVORE9DS19XSU5ET1dfTkFNRSArICdFcnJvcicpKVxuICAgICAgfSxcbiAgICAgIHV0aWw6IHtcbiAgICAgICAgJDogKHNlbGVjdG9ycywgZWxlbWVudCkgPT4gKGVsZW1lbnQgfHwgd2luZG93LmRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9ycyksXG4gICAgICAgICQkOiAoc2VsZWN0b3JzLCBlbGVtZW50KSA9PiAoZWxlbWVudCB8fCB3aW5kb3cuZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzKSxcbiAgICAgICAgc3R5bGVzOiAoc3R5bGVzLCBpZCA9ICdfX3N0eWxlcycsIHdpbjogYW55ID0gd2luZG93KSA9PiB7XG4gICAgICAgICAgbGV0IHMgPSB3aW4uZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKTtcbiAgICAgICAgICBpZiAoIXMpIHtcbiAgICAgICAgICAgIHMgPSB3aW4uZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgICAgIHMuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcbiAgICAgICAgICAgIHdpbi5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzLmlubmVySFRNTCA9IHN0eWxlcztcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiAoa2V5LCBkYXRhKSA9PiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGtleSwgZGF0YSksXG4gICAgICAgIGVuY29kZUZpbGVOYW1lOiAoZmlsZW5hbWUpID0+IHRoaXMuZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpLFxuICAgICAgICBkZWNvZGVIdG1sQ2hhckNvZGVzOiAoZmlsZW5hbWUpID0+IHRoaXMuZGVjb2RlSHRtbENoYXJDb2RlcyhmaWxlbmFtZSksXG4gICAgICAgIG5vdGlmaWVyOiB7XG4gICAgICAgICAgc3VjY2VzczogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuc3VjY2Vzcyh0aXRsZSwgdGV4dCksXG4gICAgICAgICAgZXJyb3I6ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLmVycm9yKHRpdGxlLCB0ZXh0KSxcbiAgICAgICAgICBpbmZvOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5pbmZvKHRpdGxlLCB0ZXh0KSxcbiAgICAgICAgICB3YXJuaW5nOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy53YXJuaW5nKHRpdGxlLCB0ZXh0KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY2xpcGJvYXJkOiB7XG4gICAgICAgIHNldDogKGVsZW1lbnRzOiBEbXNPYmplY3RbXSwgYWN0aW9uOiBDbGlwYm9hcmRBY3Rpb24pID0+IHRoaXMuY2xpcGJvYXJkLnNldChlbGVtZW50cywgYWN0aW9uKSxcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmNsaXBib2FyZC5nZXQoKSxcbiAgICAgICAgY2xlYXI6ICgpID0+IHRoaXMuY2xpcGJvYXJkLmNsZWFyKClcbiAgICAgIH0sXG4gICAgICAvLyBBZ2VudFxuICAgICAgYWdlbnQ6IHtcbiAgICAgICAgZ2V0QXZhaWxhYmlsaXR5OiAoKSA9PiB0aGlzLmdldEFnZW50QXZhaWxhYmlsaXR5KCksXG4gICAgICAgIGV4ZWN1dGVBY3Rpb246IChhY3Rpb24sIGFyZ3MpID0+IHRoaXMuZXhlY3V0ZUFnZW50QWN0aW9uKGFjdGlvbiwgYXJncyksXG4gICAgICAgIGFjdGlvbjogdGhpcy5hZ2VudEFjdGlvblxuICAgICAgfVxuICAgIH07XG4gIH1cblxuXG4gIHB1YmxpYyBnZXRBZ2VudEF2YWlsYWJpbGl0eSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmFnZW50U2VydmljZS5hZ2VudEF2YWlsYWJpbGl0eS5DT05ORUNURUQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmFnZW50U2VydmljZS5hZ2VudEF2YWlsYWJpbGl0eS5VTkFWQUlMQUJMRSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZXhlY3V0ZUFnZW50QWN0aW9uKGFjdGlvbiwgYXJncykge1xuXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5DTElQQk9BUkQ6XG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChhcmdzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uQ0xJUEJPQVJEX0FTX1BERjpcbiAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKGFyZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5FWFRFUk5BTDpcbiAgICAgICAgaWYgKCFhcmdzLmV4ZWN1dGFibGUpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignTWlzc2luZyBmaWVsZCBhcmdzLmV4ZWN1dGFibGUnKTtcbiAgICAgICAgfSBlbHNlIGlmICgoYXJncy5hcmdzICYmIGFyZ3MuYXJncy5sZW5ndGggPT09IDApICYmICFBcnJheS5pc0FycmF5KGFyZ3MuYXJncykpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmllbGQgYXJncy5hcmdzIG11c3QgYmUgZW1wdHkgb3IgYXJyYXkuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2Uuc2VuZEV4dGVybmFsQWN0aW9uKGFyZ3MuZXhlY3V0YWJsZSwgYXJncy5hcmdzIHx8IFtdKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5NQUlMOlxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUxfQVNfUERGOlxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kQXNNYWlsKGFyZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5PUEVOOlxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5vcGVuRG9jdW1lbnQoYXJncywgYXJncy5sb2NrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0KHVyaSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0KHVyaSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMgfHwge29ic2VydmU6ICdyZXNwb25zZSd9KS5waXBlKFxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMgPyByZXMgOiB7IHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogcmVzLmJvZHkgfTtcbiAgICAgICAgfSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIHB1dCh1cmksIGRhdGEsIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQodXJpLCBkYXRhLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgcG9zdCh1cmksIGRhdGEsIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KHVyaSwgZGF0YSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGRlbCh1cmksIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudFVzZXIoKTogRW9Vc2VyIHtcbiAgICByZXR1cm4gdGhpcy51c2VyO1xuICB9XG5cbiAgcHVibGljIGVuY29kZUZpbGVOYW1lKGZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIFV0aWxzLmVuY29kZUZpbGVOYW1lKGZpbGVuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWNvZGVIdG1sQ2hhckNvZGVzKHN0cikgeyBcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLygmIyhcXGQrKTspL2csIChtYXRjaCwgY2FwdHVyZSwgY2hhckNvZGUpID0+IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlcnZpY2VCYXNlOiB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKVxuXG4gICAgICAvLyB0b2RvOiBkbyB3ZSBoYXZlIHRvIHByb3ZpZGUgdGhlIHBsdWdpbiBkZXZlbG9wZXJzIHdpdGggdGhlc2UgaW5mb3JtYXRpb25zP1xuICAgICAgLy8gYWZ0ZXIgc3BlYWtpbmcgdG8gQW5kcmVhcyBhbHNvIHJlbW92ZWQgZnJvbSBkb2N1bWVudGF0aW9uXG4gICAgICAvLyBwbHVnaW5zQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpbkJhc2UoKSxcbiAgICAgIC8vIHBsdWdpblN0YXRlc0Jhc2U6ICRlb0NvbmZpZy5nZXRQbHVnaW5TdGF0ZXNCYXNlKCksXG4gICAgICAvLyB0aGVtZUJhc2U6ICRlb0NvbmZpZy5nZXRUaGVtZUJhc2UoKVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogZmV0Y2hlcyBkbXMgb2JqZWN0cyBmcm9tIHRoZSBzZXJ2ZXIgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGFyYW1zXG4gICAqXG4gICAqIEBwYXJhbSBmaWVsZHMgLSB0aGUgZmllbGRzIHRvIG1hdGNoZWQuIGV4YW1wbGU6IHtuYW1lOiAnbWF4JywgcGx6OiAnNDcxMTF9XG4gICAqIEBwYXJhbSB0eXBlIC0gdGhlIHRhcmdldCBvYmplY3QgdHlwZVxuICAgKlxuICAgKiBAcmV0dXJucyB3aGljaCB3aWxsIGJlIHJlc29sdmVkIGJ5IGFuIGFycmF5IG9mIERtc09iamVjdHMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhcmFtc1xuICAgKi9cbiAgcHVibGljIGdldFJlc3VsdChmaWVsZHMsIHR5cGUpOiBQcm9taXNlPERtc09iamVjdFtdPiB7XG5cbiAgICBsZXQgcSA9IE9iamVjdC5rZXlzKGZpZWxkcykuZmlsdGVyKGsgPT4gKGZpZWxkc1trXSAhPT0gdW5kZWZpbmVkICYmIGZpZWxkc1trXSAhPT0gbnVsbCkpLm1hcChrID0+IGsgKyAnPScgKyBmaWVsZHNba10pLmpvaW4oJzsnKTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXRKc29uKGAvcmVzdWx0L3F1ZXJ5P3F1ZXJ5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHEpfSZ0eXBlPSR7dHlwZX1gKVxuICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBsZXQgcmVzT2JqZWN0cyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHJlc3BvbnNlKSB7XG4gICAgICAgICAgcmVzT2JqZWN0cy5wdXNoKG5ldyBEbXNPYmplY3QoaXRlbSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzT2JqZWN0cyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKHRoaXMuaGFuZGxlRXJyb3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGEgRE1TIG9iamVjdCBmcm9tIHRoZSBiYWNrZW5kLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIERNUy1PYmplY3QgdG8gYmUgZmV0Y2hlZC5cbiAgICogQHBhcmFtIFt0eXBlXSAtIFRoZSBvYmplY3QgdHlwZSBvZiB0aGUgc2VsZWN0ZWQgRE1TLU9iamVjdC4gV2lsbCBpbXByb3ZlIHBlcmZvcm1hbmNlIGlmIHNldC5cbiAgICogQHBhcmFtIFt2ZXJzaW9uXSAtIHJldHJpZXZlIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgZG1zIG9iamVjdFxuICAgKiBAcGFyYW0gW2ludGVudF0gLSB1c2VkIGZvciBzZXJ2ZXIgc2lkZSBsb2dnaW5nLiBJZiB5b3UgcHJvdmlkZSBhbiBpbnRlbnQsIHRoZVxuICAgKlxuICAgKiBAcmV0dXJucyB3aGljaCB3aWxsIGJlIHJlc29sdmVkIGJ5IHRoZSBETVMgb2JqZWN0IGZldGNoZWQgZnJvbSB0aGUgc2VydmVyXG4gICAqL1xuICBwdWJsaWMgZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uLCBpbnRlbnQ/KTogUHJvbWlzZTxEbXNPYmplY3Q+IHtcblxuICAgIHJldHVybiB0aGlzLmRtc1NlcnZpY2UuZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uLCBpbnRlbnQpXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKHRoaXMuaGFuZGxlRXJyb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IubWVzc2FnZSB8fCBlcnJvcik7XG4gIH1cbn1cbiJdfQ==
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQWlCLFVBQVUsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUdqRSxPQUFPLEVBRWtDLFNBQVMsRUFBbUIsS0FBSyxFQUN6QyxVQUFVLEVBQzFDLE1BQU0sY0FBYyxDQUFDOzs7OztBQU10QixNQUFNLFVBQVUsTUFBTTtJQUNwQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVmLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFBRSxPQUFPO1FBQ3pFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUVsQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssZ0NBQWdDLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxpQ0FBaUMsRUFBRSxDQUFDO1lBQzlHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsbUNBQW1DLENBQUMsQ0FBQztnQkFFcEUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUs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QUU7YUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDZixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQVU7UUFDNUIsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs4R0FyUlUsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBZ2VudFNlcnZpY2V9IGZyb20gJy4uL2FnZW50L2FnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRW9Vc2VyLCBMb2dnZXIsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBCYWNrZW5kU2VydmljZSwgQ2xpcGJvYXJkU2VydmljZSxcbiAgRG1zU2VydmljZSwgRXZlbnRTZXJ2aWNlLCBVc2VyU2VydmljZSwgRG1zT2JqZWN0LCBDbGlwYm9hcmRBY3Rpb24sIFV0aWxzLFxuICBUcmFuc2xhdGVTZXJ2aWNlLCBIdHRwT3B0aW9ucywgRW5haW9FdmVudFxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cgeyBhcGk6IGFueTsgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb25Mb2FkKCkge1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIChlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcblxuICAgICAgaWYgKCFlIHx8ICFlLmRhdGEgfHwgIWUuZGF0YS5tYXRjaCB8fCAhZS5kYXRhLm1hdGNoKCdNZXNzYWdlSWQnKSkgcmV0dXJuO1xuICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGUuZGF0YSk7XG5cbiAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xuXG4gICAgICBpZiAoZGF0YS5NZXNzYWdlSWQgPT09ICdIb3N0X1Bvc3RtZXNzYWdlT2JqZWN0VXBkYXRpbmcnIHx8IGRhdGEuTWVzc2FnZUlkID09PSAnSG9zdF9Qb3N0bWVzc2FnZU9iamVjdENvbnZlcnRlZCcpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdmFyIGJ0biA9IHdpbmRvd1snYXBpJ10udXRpbC4kKCdlby1vYmplY3QtZGV0YWlscyAucmVmcmVzaC1idXR0b24nKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGJ0biAmJiBidG4uY2xpY2soKTtcbiAgICAgICAgICB9LCAzNTAwKVxuICAgICAgfSBlbHNlIGlmIChkYXRhLk1lc3NhZ2VJZCA9PT0gJ1VJX0VkaXRDbGljaycgJiYgZGF0YS5WYWx1ZXMudXJsKSB7XG4gICAgICAgICAgdmFyIHcgPSB3aW5kb3cub3BlbihkZWNvZGVVUklDb21wb25lbnQoZGF0YS5WYWx1ZXMudXJsKSk7XG5cbiAgICAgICAgICB2YXIgaHR0cCA9IHdpbmRvd1snYXBpJ10uaHR0cDtcblxuICAgICAgICAgIHcuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIChlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghZSB8fCAhZS5kYXRhIHx8ICFlLmRhdGEubWF0Y2ggfHwgIWUuZGF0YS5tYXRjaCgnTWVzc2FnZUlkJykpIHJldHVybjtcblxuICAgICAgICAgICAgICBpZiAoZS5kYXRhLm1hdGNoKCdVc2VyX0FjdGl2aXR5JykpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgICAgICAgICAgICAgaHR0cC5nZXQoJ2F1dGgvaW5mbycsICcvJykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2Rhc2hsZXQgc2Vzc2lvbiBleHRlbmRlZC4uLicpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHdpbmRvd1snYXBpJ10uY29udGVudC53aW5kb3dzID0gKHdpbmRvd1snYXBpJ10uY29udGVudC53aW5kb3dzIHx8IFtdKS5jb25jYXQoW1xuICAgICAgICAgICAgICB3XG4gICAgICAgICAgXSk7XG4gICAgICB9XG4gIH0pO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgICAod2luZG93WydhcGknXS5jb250ZW50LndpbmRvd3MgfHwgW10pLmZvckVhY2godyA9PiB3ICYmICF3LmNsb3NlZCAmJiB3LmNsb3NlKCkpO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgVU5ET0NLX1dJTkRPV19OQU1FID0gJ2VvVmlld2VyJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBsdWdpbnNTZXJ2aWNlIHtcblxuICBwcml2YXRlIHVzZXI6IEVvVXNlcjtcbiAgcHJpdmF0ZSBzZXJ2aWNlczogYW55O1xuICBwcml2YXRlIGFnZW50QWN0aW9uID0ge1xuICAgIE9QRU46ICdlby5hZ2VudC5hY3Rpb24ub3BlbicsXG4gICAgTUFJTDogJ2VvLmFnZW50LmFjdGlvbi5tYWlsJyxcbiAgICBNQUlMX0FTX1BERjogJ2VvLmFnZW50LmFjdGlvbi5tYWlsLXBkZicsXG4gICAgQ0xJUEJPQVJEOiAnZW8uYWdlbnQuYWN0aW9uLmNsaXBib2FyZCcsXG4gICAgQ0xJUEJPQVJEX0FTX1BERjogJ2VvLmFnZW50LmFjdGlvbi5jbGlwYm9hcmQtcGRmJyxcbiAgICBFWFRFUk5BTDogJ2VvLmFnZW50LmFjdGlvbi5leHRlcm5hbCdcbiAgfTtcblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLnVybDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBpKCkge1xuICAgIHJldHVybiB0aGlzLmdldEFwaSgpO1xuICB9XG4gIFxuICBwdWJsaWMgZ2V0IGF2YWlsYWJsZVNlcnZpY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2VzIHx8IFtdO1xuICB9XG5cbiAgcHVibGljIGFwcGx5RnVuY3Rpb24odmFsdWU6IHN0cmluZyB8IEZ1bmN0aW9uIHwgYW55LCBwYXJhbXM/OiBzdHJpbmcsIGFyZ3M/OiBhbnkpIHtcbiAgICBjb25zdCBmbmMgPSB2YWx1ZT8udG9TdHJpbmcoKS50cmltKCk7XG4gICAgaWYgKCFmbmMpIHJldHVybjtcbiAgICBjb25zdCBmID0gZm5jLm1hdGNoKC9eZnVuY3Rpb258XlxcKC4qXFwpXFxzKj0+LylcbiAgICAgID8gYHJldHVybiAoJHtmbmN9KS5hcHBseSh0aGlzLGFyZ3VtZW50cylgXG4gICAgICA6IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWZuYy5zdGFydHNXaXRoKFwiJ1wiKVxuICAgICAgPyBgcmV0dXJuICcke2ZuY30nYFxuICAgICAgOiBgcmV0dXJuICR7Zm5jfWA7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKC4uLihwYXJhbXMgfHwgJ2FwaScpLnNwbGl0KCcsJykubWFwKChhKSA9PiBhLnRyaW0oKSksIGYpLmFwcGx5KHRoaXMuYXBpLCBhcmdzIHx8IFt0aGlzLmFwaV0pO1xuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgfVxuXG4gIHVubG9hZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGNsaXBib2FyZDogQ2xpcGJvYXJkU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG5cbiAgICB3aW5kb3dbJ2FwaSddID0gdGhpcy5hcGk7XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAudXNlciRcbiAgICAgIC5zdWJzY3JpYmUoKHVzZXIpID0+IHRoaXMudXNlciA9IHVzZXIpO1xuXG4gICAgdGhpcy5iYWNrZW5kLmdldChgY29uZmlnL3NlcnZpY2VzYCwgJy8nKS5zdWJzY3JpYmUoKHNlcnZpY2VzKSA9PiAodGhpcy5zZXJ2aWNlcyA9IHNlcnZpY2VzKSk7XG4gICAgdGhpcy51bmxvYWQgPSBvbkxvYWQoKTtcbiAgICB0aGlzLmV2ZW50U2VydmljZS5vbihFbmFpb0V2ZW50LkxPR09VVCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudW5sb2FkKCkpO1xuICB9XG5cbiAgLy8gdG9kbzogY3JlYXRlIGlucmVmYWNlIGZvciBBUElcblxuICBwdWJsaWMgZ2V0QXBpKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRldGVjdENoYW5nZXM6ICgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hcHBSZWYudGljaygpO1xuICAgICAgICB9LCA1MDApO1xuICAgICAgfSxcbiAgICAgIHJvdXRlcjoge1xuICAgICAgICBnZXQ6ICgpID0+IHRoaXMucm91dGVyXG4gICAgICB9LFxuICAgICAgZXZlbnRzOiB7XG4gICAgICAgIGVuYWlvRXZlbnRUeXBlOiBFbmFpb0V2ZW50LFxuICAgICAgICBvbjogKHR5cGU6IHN0cmluZykgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLm9uKHR5cGUpKSxcbiAgICAgICAgdHJpZ2dlcjogKHR5cGU6IHN0cmluZywgZGF0YT86IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIodHlwZSwgZGF0YSkpXG4gICAgICB9LFxuICAgICAgc2Vzc2lvbjoge1xuICAgICAgICBnZXRVc2VyOiAoKSA9PiB0aGlzLmdldEN1cnJlbnRVc2VyKClcbiAgICAgIH0sXG4gICAgICBkbXM6IHtcbiAgICAgICAgZ2V0T2JqZWN0OiAoaWQsIHR5cGUsIHZlcnNpb24pID0+IHRoaXMuZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uKSxcbiAgICAgICAgZ2V0UmVzdWx0OiAoZmllbGRzLCB0eXBlKSA9PiB0aGlzLmdldFJlc3VsdChmaWVsZHMsIHR5cGUpLFxuICAgICAgICBkb3dubG9hZENvbnRlbnQ6IChkbXNPYmplY3RzOiBEbXNPYmplY3RbXSwgcmVuZGl0aW9uPzogJ1BERidcbiAgICAgICAgICB8ICdUSUZGJ1xuICAgICAgICAgIHwgJ1RFWFQnXG4gICAgICAgICAgfCAnSlBFRycpID0+IHRoaXMuYmFja2VuZC5kb3dubG9hZENvbnRlbnQoZG1zT2JqZWN0cywgcmVuZGl0aW9uKVxuICAgICAgfSxcbiAgICAgIGh0dHA6IHtcbiAgICAgICAgZ2V0OiAodXJpLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLmdldCh1cmksIGJhc2UsIG9wdGlvbnMpLFxuICAgICAgICBwb3N0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnBvc3QodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSxcbiAgICAgICAgZGVsOiAodXJpLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLmRlbCh1cmksIGJhc2UsIG9wdGlvbnMpLFxuICAgICAgICBwdXQ6ICh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMucHV0KHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmdldENvbmZpZygpXG4gICAgICB9LFxuICAgICAgY29udGVudDoge1xuICAgICAgICB2aWV3ZXI6ICgpID0+IHdpbmRvd1tVTkRPQ0tfV0lORE9XX05BTUVdIHx8ICh3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZW8tbWVkaWEgaWZyYW1lW3NyY10nKSB8fCB7fSlbJ2NvbnRlbnRXaW5kb3cnXSxcbiAgICAgICAgdHJpZ2dlckVycm9yOiAoZXJyLCB3aW4sIHBhcmFtZXRlcnMpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKFVORE9DS19XSU5ET1dfTkFNRSArICdFcnJvcicsIHsgZXJyLCB3aW4sIHBhcmFtZXRlcnMgfSkpLFxuICAgICAgICBjYXRjaEVycm9yOiAoKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5ldmVudFNlcnZpY2Uub24oVU5ET0NLX1dJTkRPV19OQU1FICsgJ0Vycm9yJykpXG4gICAgICB9LFxuICAgICAgdXRpbDoge1xuICAgICAgICAkOiAoc2VsZWN0b3JzLCBlbGVtZW50KSA9PiAoZWxlbWVudCB8fCB3aW5kb3cuZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JzKSxcbiAgICAgICAgJCQ6IChzZWxlY3RvcnMsIGVsZW1lbnQpID0+IChlbGVtZW50IHx8IHdpbmRvdy5kb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcnMpLFxuICAgICAgICBzdHlsZXM6IChzdHlsZXMsIGlkID0gJ19fc3R5bGVzJywgd2luOiBhbnkgPSB3aW5kb3cpID0+IHtcbiAgICAgICAgICBsZXQgcyA9IHdpbi5kb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJyMnICsgaWQpO1xuICAgICAgICAgIGlmICghcykge1xuICAgICAgICAgICAgcyA9IHdpbi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgcy5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuICAgICAgICAgICAgd2luLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMuaW5uZXJIVE1MID0gc3R5bGVzO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2xhdGU6IChrZXksIGRhdGEpID0+IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5LCBkYXRhKSxcbiAgICAgICAgZW5jb2RlRmlsZU5hbWU6IChmaWxlbmFtZSkgPT4gdGhpcy5lbmNvZGVGaWxlTmFtZShmaWxlbmFtZSksXG4gICAgICAgIGRlY29kZUh0bWxDaGFyQ29kZXM6IChmaWxlbmFtZSkgPT4gdGhpcy5kZWNvZGVIdG1sQ2hhckNvZGVzKGZpbGVuYW1lKSxcbiAgICAgICAgbm90aWZpZXI6IHtcbiAgICAgICAgICBzdWNjZXNzOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5zdWNjZXNzKHRpdGxlLCB0ZXh0KSxcbiAgICAgICAgICBlcnJvcjogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IodGl0bGUsIHRleHQpLFxuICAgICAgICAgIGluZm86ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLmluZm8odGl0bGUsIHRleHQpLFxuICAgICAgICAgIHdhcm5pbmc6ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLndhcm5pbmcodGl0bGUsIHRleHQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjbGlwYm9hcmQ6IHtcbiAgICAgICAgc2V0OiAoZWxlbWVudHM6IERtc09iamVjdFtdLCBhY3Rpb246IENsaXBib2FyZEFjdGlvbikgPT4gdGhpcy5jbGlwYm9hcmQuc2V0KGVsZW1lbnRzLCBhY3Rpb24pLFxuICAgICAgICBnZXQ6ICgpID0+IHRoaXMuY2xpcGJvYXJkLmdldCgpLFxuICAgICAgICBjbGVhcjogKCkgPT4gdGhpcy5jbGlwYm9hcmQuY2xlYXIoKVxuICAgICAgfSxcbiAgICAgIC8vIEFnZW50XG4gICAgICBhZ2VudDoge1xuICAgICAgICBnZXRBdmFpbGFiaWxpdHk6ICgpID0+IHRoaXMuZ2V0QWdlbnRBdmFpbGFiaWxpdHkoKSxcbiAgICAgICAgZXhlY3V0ZUFjdGlvbjogKGFjdGlvbiwgYXJncykgPT4gdGhpcy5leGVjdXRlQWdlbnRBY3Rpb24oYWN0aW9uLCBhcmdzKSxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFnZW50QWN0aW9uXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG5cbiAgcHVibGljIGdldEFnZW50QXZhaWxhYmlsaXR5KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmFnZW50U2VydmljZS5pc0Nvbm5lY3RlZCkge1xuICAgICAgICByZXNvbHZlKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50QXZhaWxhYmlsaXR5LkNPTk5FQ1RFRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50QXZhaWxhYmlsaXR5LlVOQVZBSUxBQkxFKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlQWdlbnRBY3Rpb24oYWN0aW9uLCBhcmdzKSB7XG5cbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkNMSVBCT0FSRDpcbiAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKGFyZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5DTElQQk9BUkRfQVNfUERGOlxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5jb3B5VG9DbGlwYm9hcmQoYXJncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkVYVEVSTkFMOlxuICAgICAgICBpZiAoIWFyZ3MuZXhlY3V0YWJsZSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdNaXNzaW5nIGZpZWxkIGFyZ3MuZXhlY3V0YWJsZScpO1xuICAgICAgICB9IGVsc2UgaWYgKChhcmdzLmFyZ3MgJiYgYXJncy5hcmdzLmxlbmd0aCA9PT0gMCkgJiYgIUFycmF5LmlzQXJyYXkoYXJncy5hcmdzKSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdGaWVsZCBhcmdzLmFyZ3MgbXVzdCBiZSBlbXB0eSBvciBhcnJheS4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kRXh0ZXJuYWxBY3Rpb24oYXJncy5leGVjdXRhYmxlLCBhcmdzLmFyZ3MgfHwgW10pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUw6XG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uTUFJTF9BU19QREY6XG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNlbmRBc01haWwoYXJncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk9QRU46XG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLm9wZW5Eb2N1bWVudChhcmdzLCBhcmdzLmxvY2spO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQodXJpLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXQodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucyB8fCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucyA/IHJlcyA6IHsgc3RhdHVzOiByZXMuc3RhdHVzLCBkYXRhOiByZXMuYm9keSB9O1xuICAgICAgICB9KSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgcHV0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dCh1cmksIGRhdGEsIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QodXJpLCBkYXRhLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZGVsKHVyaSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCh1cmksIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlcigpOiBFb1VzZXIge1xuICAgIHJldHVybiB0aGlzLnVzZXI7XG4gIH1cblxuICBwdWJsaWMgZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpIHtcbiAgICByZXR1cm4gVXRpbHMuZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpO1xuICB9XG5cbiAgcHVibGljIGRlY29kZUh0bWxDaGFyQ29kZXMoc3RyKSB7IFxuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKCYjKFxcZCspOykvZywgKG1hdGNoLCBjYXB0dXJlLCBjaGFyQ29kZSkgPT4gU3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpO1xuICB9XG5cbiAgcHVibGljIGdldENvbmZpZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VydmljZUJhc2U6IHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpXG5cbiAgICAgIC8vIHRvZG86IGRvIHdlIGhhdmUgdG8gcHJvdmlkZSB0aGUgcGx1Z2luIGRldmVsb3BlcnMgd2l0aCB0aGVzZSBpbmZvcm1hdGlvbnM/XG4gICAgICAvLyBhZnRlciBzcGVha2luZyB0byBBbmRyZWFzIGFsc28gcmVtb3ZlZCBmcm9tIGRvY3VtZW50YXRpb25cbiAgICAgIC8vIHBsdWdpbnNCYXNlOiAkZW9Db25maWcuZ2V0UGx1Z2luQmFzZSgpLFxuICAgICAgLy8gcGx1Z2luU3RhdGVzQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpblN0YXRlc0Jhc2UoKSxcbiAgICAgIC8vIHRoZW1lQmFzZTogJGVvQ29uZmlnLmdldFRoZW1lQmFzZSgpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBmZXRjaGVzIGRtcyBvYmplY3RzIGZyb20gdGhlIHNlcnZlciB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwYXJhbXNcbiAgICpcbiAgICogQHBhcmFtIGZpZWxkcyAtIHRoZSBmaWVsZHMgdG8gbWF0Y2hlZC4gZXhhbXBsZToge25hbWU6ICdtYXgnLCBwbHo6ICc0NzExMX1cbiAgICogQHBhcmFtIHR5cGUgLSB0aGUgdGFyZ2V0IG9iamVjdCB0eXBlXG4gICAqXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgYW4gYXJyYXkgb2YgRG1zT2JqZWN0cyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGFyYW1zXG4gICAqL1xuICBwdWJsaWMgZ2V0UmVzdWx0KGZpZWxkcywgdHlwZSk6IFByb21pc2U8RG1zT2JqZWN0W10+IHtcblxuICAgIGxldCBxID0gT2JqZWN0LmtleXMoZmllbGRzKS5maWx0ZXIoayA9PiAoZmllbGRzW2tdICE9PSB1bmRlZmluZWQgJiYgZmllbGRzW2tdICE9PSBudWxsKSkubWFwKGsgPT4gayArICc9JyArIGZpZWxkc1trXSkuam9pbignOycpO1xuXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldEpzb24oYC9yZXN1bHQvcXVlcnk/cXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQocSl9JnR5cGU9JHt0eXBlfWApXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGxldCByZXNPYmplY3RzID0gW107XG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2YgcmVzcG9uc2UpIHtcbiAgICAgICAgICByZXNPYmplY3RzLnB1c2gobmV3IERtc09iamVjdChpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNPYmplY3RzKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSBETVMgb2JqZWN0IGZyb20gdGhlIGJhY2tlbmQuXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgRE1TLU9iamVjdCB0byBiZSBmZXRjaGVkLlxuICAgKiBAcGFyYW0gW3R5cGVdIC0gVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBzZWxlY3RlZCBETVMtT2JqZWN0LiBXaWxsIGltcHJvdmUgcGVyZm9ybWFuY2UgaWYgc2V0LlxuICAgKiBAcGFyYW0gW3ZlcnNpb25dIC0gcmV0cmlldmUgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBkbXMgb2JqZWN0XG4gICAqIEBwYXJhbSBbaW50ZW50XSAtIHVzZWQgZm9yIHNlcnZlciBzaWRlIGxvZ2dpbmcuIElmIHlvdSBwcm92aWRlIGFuIGludGVudCwgdGhlXG4gICAqXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgdGhlIERNUyBvYmplY3QgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXJcbiAgICovXG4gIHB1YmxpYyBnZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24sIGludGVudD8pOiBQcm9taXNlPERtc09iamVjdD4ge1xuXG4gICAgcmV0dXJuIHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24sIGludGVudClcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcbiAgfVxufVxuIl19
|