@eo-sdk/client 10.6.0-rc.2 → 10.6.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/dashboard.component.d.ts +5 -3
- package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
- package/app/eo-client/login/login.component.d.ts +2 -4
- package/app/eo-client/login/login.component.d.ts.map +1 -1
- package/app/eo-client/settings/settings.component.d.ts +2 -4
- package/app/eo-client/settings/settings.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts +1 -0
- package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts +10 -5
- package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/date/date.component.d.ts +2 -1
- package/app/eo-framework/form-elements/date/date.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts +1 -0
- package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/organization/organization.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/string/string.component.d.ts +2 -3
- package/app/eo-framework/form-elements/string/string.component.d.ts.map +1 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts +2 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
- package/app/eo-framework/media/media.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts +5 -8
- package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.module.d.ts +2 -1
- package/app/eo-framework/object-details/object-details.module.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
- package/app/eo-framework/object-state-details/object-state-details.component.d.ts +3 -3
- package/app/eo-framework/object-state-details/object-state-details.component.d.ts.map +1 -1
- package/app/eo-framework/plugins/plugin.component.d.ts +7 -7
- package/app/eo-framework/plugins/plugin.component.d.ts.map +1 -1
- package/app/eo-framework/plugins/plugins.module.d.ts +1 -1
- package/app/eo-framework/process/details/process-details.component.d.ts +2 -1
- package/app/eo-framework/process/details/process-details.component.d.ts.map +1 -1
- package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts +2 -1
- package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts.map +1 -1
- package/app/eo-framework-core/api/plugins.service.d.ts +5 -0
- package/app/eo-framework-core/api/plugins.service.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +2 -4
- package/assets/_default/i18n/en.json +8 -10
- package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +17 -7
- package/esm2020/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +3 -3
- package/esm2020/app/eo-client/favorite-state/favorite-state.component.mjs +5 -5
- package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +5 -5
- package/esm2020/app/eo-client/login/login.component.mjs +7 -11
- package/esm2020/app/eo-client/notifications-state/notifications-state.component.mjs +5 -5
- package/esm2020/app/eo-client/object-state/object-state/object-state.component.mjs +7 -7
- package/esm2020/app/eo-client/process-state/process-state.component.mjs +5 -5
- package/esm2020/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +5 -5
- package/esm2020/app/eo-client/result-state/result-state.component.mjs +5 -5
- package/esm2020/app/eo-client/settings/settings.component.mjs +6 -10
- package/esm2020/app/eo-client/version-state/version-state.component.mjs +5 -5
- package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +10 -4
- package/esm2020/app/eo-framework/actions/actions/download-action/download-action.mjs +2 -2
- package/esm2020/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +5 -5
- package/esm2020/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +44 -19
- package/esm2020/app/eo-framework/form-elements/date/date.component.mjs +7 -4
- package/esm2020/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +1 -1
- package/esm2020/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +10 -3
- package/esm2020/app/eo-framework/form-elements/organization/organization.component.mjs +2 -1
- package/esm2020/app/eo-framework/form-elements/string/string.component.mjs +4 -5
- package/esm2020/app/eo-framework/grid/filters/datetime-filter.component.mjs +3 -3
- package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +10 -13
- package/esm2020/app/eo-framework/media/media.component.mjs +2 -5
- package/esm2020/app/eo-framework/object-details/object-details.component.mjs +38 -34
- package/esm2020/app/eo-framework/object-details/object-details.module.mjs +7 -3
- package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +1 -1
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +11 -21
- package/esm2020/app/eo-framework/object-state-details/object-state-details.component.mjs +14 -22
- package/esm2020/app/eo-framework/plugins/plugin.component.mjs +19 -27
- package/esm2020/app/eo-framework/plugins/plugins.module.mjs +6 -6
- package/esm2020/app/eo-framework/process/details/process-details.component.mjs +10 -13
- package/esm2020/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +7 -7
- package/esm2020/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +2 -2
- package/esm2020/app/eo-framework-core/api/plugins.service.mjs +6 -3
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth.service.mjs +21 -169
- package/esm2020/projects/eo-sdk/core/lib/service/dms/dms.service.mjs +3 -2
- package/esm2020/projects/eo-sdk/core/lib/service/user/user.service.mjs +4 -4
- package/esm2020/projects/eo-sdk/core/public_api.mjs +1 -3
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +21 -192
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
- package/fesm2015/eo-sdk-client.mjs +275 -259
- package/fesm2015/eo-sdk-client.mjs.map +1 -1
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +21 -192
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
- package/fesm2020/eo-sdk-client.mjs +271 -258
- package/fesm2020/eo-sdk-client.mjs.map +1 -1
- package/package.json +4 -4
- package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts +1 -23
- package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +1 -0
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/public_api.d.ts +0 -2
- package/projects/eo-sdk/core/public_api.d.ts.map +1 -1
- package/scss/_main.scss +2 -1
- package/styles.css +2 -1
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth.cloud.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/environment/environment.service.mjs +0 -28
- package/projects/eo-sdk/core/lib/service/auth/auth.cloud.interface.d.ts +0 -12
- package/projects/eo-sdk/core/lib/service/auth/auth.cloud.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/environment/environment.service.d.ts +0 -14
- package/projects/eo-sdk/core/lib/service/environment/environment.service.d.ts.map +0 -1
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
import { HttpHeaders } from '@angular/common/http';
|
|
2
2
|
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject,
|
|
4
|
-
import {
|
|
3
|
+
import { BehaviorSubject, forkJoin as observableForkJoin, } from 'rxjs';
|
|
4
|
+
import { map, switchMap, tap } from 'rxjs/operators';
|
|
5
5
|
import { CORE_CONFIG } from '../../config/core-init.tokens';
|
|
6
|
-
import { EnvironmentEnaio } from '../../environment.enaio';
|
|
7
6
|
import { EoUser } from '../../model/eo-user.model';
|
|
8
7
|
import { EnaioEvent } from '../events/events';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
10
9
|
import * as i1 from "../config/config.service";
|
|
11
|
-
import * as i2 from "
|
|
12
|
-
import * as i3 from "
|
|
13
|
-
import * as i4 from "../
|
|
14
|
-
import * as i5 from "../
|
|
15
|
-
import * as i6 from "../
|
|
16
|
-
import * as i7 from "../
|
|
17
|
-
import * as i8 from "../
|
|
18
|
-
import * as i9 from "../
|
|
19
|
-
import * as i10 from "../
|
|
20
|
-
import * as i11 from "../
|
|
21
|
-
import * as i12 from "
|
|
22
|
-
import * as i13 from "
|
|
23
|
-
import * as i14 from "
|
|
24
|
-
import * as i15 from "../../config/core-config";
|
|
10
|
+
import * as i2 from "@angular/common/http";
|
|
11
|
+
import * as i3 from "../bpm/bpm.service";
|
|
12
|
+
import * as i4 from "../capabilities/capabilities.service";
|
|
13
|
+
import * as i5 from "../inbox/inbox.service";
|
|
14
|
+
import * as i6 from "../prepare/prepare.service";
|
|
15
|
+
import * as i7 from "../backend/backend.service";
|
|
16
|
+
import * as i8 from "../system/system.service";
|
|
17
|
+
import * as i9 from "../user/user.service";
|
|
18
|
+
import * as i10 from "../events/event.service";
|
|
19
|
+
import * as i11 from "../system-status/system-status.service";
|
|
20
|
+
import * as i12 from "@ngx-pwa/local-storage";
|
|
21
|
+
import * as i13 from "../storage/local-storage.service";
|
|
22
|
+
import * as i14 from "../../config/core-config";
|
|
25
23
|
/**
|
|
26
24
|
* `AuthService` handles authentication against an yuuvis<sup>®</sup> RAD backend.
|
|
27
25
|
*/
|
|
@@ -29,13 +27,11 @@ export class AuthService {
|
|
|
29
27
|
/**
|
|
30
28
|
* @ignore
|
|
31
29
|
*/
|
|
32
|
-
constructor(config, coreConfig,
|
|
30
|
+
constructor(config, coreConfig, http, bpmService, capabilitiesService, inboxService, prepareService, backend, systemService, userService, eventService, systemStatusService, storage, local) {
|
|
33
31
|
this.config = config;
|
|
34
32
|
this.coreConfig = coreConfig;
|
|
35
|
-
this.envService = envService;
|
|
36
33
|
this.http = http;
|
|
37
34
|
this.bpmService = bpmService;
|
|
38
|
-
this.ngZone = ngZone;
|
|
39
35
|
this.capabilitiesService = capabilitiesService;
|
|
40
36
|
this.inboxService = inboxService;
|
|
41
37
|
this.prepareService = prepareService;
|
|
@@ -46,7 +42,6 @@ export class AuthService {
|
|
|
46
42
|
this.systemStatusService = systemStatusService;
|
|
47
43
|
this.storage = storage;
|
|
48
44
|
this.local = local;
|
|
49
|
-
this.TOKEN_STORAGE_KEY = 'eo.auth.cloud.credentials';
|
|
50
45
|
this.userProfileUri = this.userService.USER_FETCH_URI;
|
|
51
46
|
this.authSource = new BehaviorSubject(false);
|
|
52
47
|
this.loggedInCacheKey = 'eo.user.loggedIn';
|
|
@@ -96,124 +91,6 @@ export class AuthService {
|
|
|
96
91
|
withCredentials: this.coreConfig.withCredentials
|
|
97
92
|
}).pipe(switchMap(() => this.initUser(host)));
|
|
98
93
|
}
|
|
99
|
-
/**
|
|
100
|
-
* Log in to a cloud backend using device flow.
|
|
101
|
-
* @param host The target host (could be null if you are running in web environment)
|
|
102
|
-
* @param tenant The tenant
|
|
103
|
-
* @returns Resolves with the logged in user
|
|
104
|
-
*/
|
|
105
|
-
cloudLogin(host, tenant) {
|
|
106
|
-
return Observable.create(o => {
|
|
107
|
-
const stopTrigger$ = new Subject();
|
|
108
|
-
//const targetHost = this.location.pathname.substring(0, this.location.pathname.indexOf('/enter')); // host || '';
|
|
109
|
-
const targetHost = host || '';
|
|
110
|
-
// start auth flow
|
|
111
|
-
this.http.get(`${targetHost}/tenant/${tenant}/loginDevice`).subscribe((res) => {
|
|
112
|
-
// open new window for the authentication process ...
|
|
113
|
-
const targetUri = `${targetHost}/oauth/${tenant}?user_code=${res.user_code}`;
|
|
114
|
-
const win = window.open(targetUri, 'auth');
|
|
115
|
-
if (win) {
|
|
116
|
-
// @see: http://atashbahar.com/post/2010-04-27-detect-when-a-javascript-popup-window-gets-closed
|
|
117
|
-
this.ngZone.runOutsideAngular(() => {
|
|
118
|
-
const winTimer = setInterval(() => {
|
|
119
|
-
if (win.closed) {
|
|
120
|
-
clearInterval(winTimer);
|
|
121
|
-
this.ngZone.run(() => {
|
|
122
|
-
stopTrigger$.next();
|
|
123
|
-
stopTrigger$.complete();
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
}, 1000);
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
// ... and start polling for authentication results
|
|
130
|
-
this.cloudLoginPollForResult(`${targetHost}/auth/info/state?device_code=${res.device_code}`, 1000, stopTrigger$)
|
|
131
|
-
.pipe(tap((accessToken) => {
|
|
132
|
-
if (accessToken) {
|
|
133
|
-
this.cloudLoginSetHeaders(accessToken, tenant);
|
|
134
|
-
const storeToken = {
|
|
135
|
-
tenant: tenant,
|
|
136
|
-
accessToken: accessToken
|
|
137
|
-
};
|
|
138
|
-
this.storage.setItem(this.TOKEN_STORAGE_KEY, storeToken).subscribe();
|
|
139
|
-
}
|
|
140
|
-
}), switchMap((authRes) => {
|
|
141
|
-
if (authRes) {
|
|
142
|
-
return this.initUser(targetHost);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
throwError('not authenticated');
|
|
146
|
-
}
|
|
147
|
-
})).subscribe((user) => {
|
|
148
|
-
win.close();
|
|
149
|
-
o.next(user);
|
|
150
|
-
o.complete();
|
|
151
|
-
}, err => {
|
|
152
|
-
win.close();
|
|
153
|
-
o.error(err);
|
|
154
|
-
o.complete();
|
|
155
|
-
});
|
|
156
|
-
}, err => {
|
|
157
|
-
o.error('unable to call device flow endpoint', err);
|
|
158
|
-
o.complete();
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Starts polling for login results in case of logging in to a cloud backend.
|
|
164
|
-
* @param uri URI to poll
|
|
165
|
-
* @param pollingInterval Polling intervall in milliseconds
|
|
166
|
-
* @param stopTrigger Subject acting as stop trigger
|
|
167
|
-
* @returns Access Token if logged in successfully or NULL otherwise
|
|
168
|
-
*/
|
|
169
|
-
cloudLoginPollForResult(uri, pollingInterval, stopTrigger = new Subject()) {
|
|
170
|
-
return Observable.create(o => {
|
|
171
|
-
let accessGranted = false;
|
|
172
|
-
let accessDenied = false;
|
|
173
|
-
this.ngZone.runOutsideAngular(() => {
|
|
174
|
-
interval(pollingInterval).pipe(takeUntil(stopTrigger), switchMap(() => this.http.get(uri).pipe(catchError((err) => {
|
|
175
|
-
// OAuth standard we are using is returning with a status of 400 while logging in (no idea why???)
|
|
176
|
-
// so we got to fetch that to not break the parent pipe
|
|
177
|
-
if (err.status === 400) {
|
|
178
|
-
return observableOf(err.error);
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
throwError(err);
|
|
182
|
-
}
|
|
183
|
-
})))).subscribe((res) => {
|
|
184
|
-
this.ngZone.run(() => {
|
|
185
|
-
accessGranted = !!res.access_token;
|
|
186
|
-
accessDenied = res.error === 'access_denied';
|
|
187
|
-
if (accessGranted || accessDenied) {
|
|
188
|
-
// logged in
|
|
189
|
-
stopTrigger.next();
|
|
190
|
-
stopTrigger.complete();
|
|
191
|
-
o.next(accessGranted ? res.access_token : null);
|
|
192
|
-
o.complete();
|
|
193
|
-
}
|
|
194
|
-
else if (res.error === 'expired_token') {
|
|
195
|
-
// expired so skip polling
|
|
196
|
-
throwError('Token expired');
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
}, err => {
|
|
200
|
-
this.ngZone.run(() => {
|
|
201
|
-
o.error(err);
|
|
202
|
-
o.complete();
|
|
203
|
-
});
|
|
204
|
-
}, () => {
|
|
205
|
-
this.ngZone.run(() => {
|
|
206
|
-
o.next(accessGranted);
|
|
207
|
-
o.complete();
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
cloudLoginSetHeaders(accessToken, tenant) {
|
|
214
|
-
this.backend.setHeader('Authorization', 'bearer ' + accessToken);
|
|
215
|
-
this.backend.setHeader('X-ID-TENANT-NAME', tenant);
|
|
216
|
-
}
|
|
217
94
|
/**
|
|
218
95
|
* Gets called while app init
|
|
219
96
|
* @ignore
|
|
@@ -226,20 +103,7 @@ export class AuthService {
|
|
|
226
103
|
.get(`${host || ''}${this.config.getContextPath()}/auth/info`, { headers, withCredentials: this.coreConfig.withCredentials })
|
|
227
104
|
.pipe(switchMap((info) => {
|
|
228
105
|
this.gatewayInfo = info;
|
|
229
|
-
this.
|
|
230
|
-
if (this.isCloudEnvironment()) {
|
|
231
|
-
// in case of running against cloud backend, we try to fetch
|
|
232
|
-
// access token and tenant from local storage
|
|
233
|
-
return this.storage.getItem(this.TOKEN_STORAGE_KEY).pipe(switchMap((res) => {
|
|
234
|
-
if (res) {
|
|
235
|
-
this.cloudLoginSetHeaders(res.accessToken, res.tenant);
|
|
236
|
-
}
|
|
237
|
-
return this.fetchUser(info, host);
|
|
238
|
-
}));
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
return this.fetchUser(info, host);
|
|
242
|
-
}
|
|
106
|
+
return this.fetchUser(info, host);
|
|
243
107
|
}));
|
|
244
108
|
}
|
|
245
109
|
/**
|
|
@@ -286,14 +150,6 @@ export class AuthService {
|
|
|
286
150
|
auth: null,
|
|
287
151
|
active: false
|
|
288
152
|
};
|
|
289
|
-
if (this.isCloudEnvironment()) {
|
|
290
|
-
// remove stored access data
|
|
291
|
-
this.storage.removeItem(this.TOKEN_STORAGE_KEY).subscribe();
|
|
292
|
-
if (this.coreConfig.environment.production && EnvironmentEnaio.isWebEnvironment()) {
|
|
293
|
-
window.location.href = this.config.getContextPath() + '/logout';
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
153
|
if (gatewayLogout) {
|
|
298
154
|
// by default we are just resetting internal state to 'logged out' and in
|
|
299
155
|
// some cases call gateways logout endpoint to do logout stuff there silently
|
|
@@ -302,10 +158,6 @@ export class AuthService {
|
|
|
302
158
|
this.backend.setAuthProfile(this.profile);
|
|
303
159
|
this.eventService.trigger(EnaioEvent.LOGOUT);
|
|
304
160
|
}
|
|
305
|
-
isCloudEnvironment() {
|
|
306
|
-
// oauth2 indicates that we are running in a cloud environment
|
|
307
|
-
return this.gatewayInfo && this.gatewayInfo.oauth2;
|
|
308
|
-
}
|
|
309
161
|
/**
|
|
310
162
|
* for desktop and mobile devices we provide a list of hosts for the login
|
|
311
163
|
*
|
|
@@ -350,15 +202,15 @@ export class AuthService {
|
|
|
350
202
|
return observableForkJoin(todo).pipe(map(() => currUser));
|
|
351
203
|
}
|
|
352
204
|
}
|
|
353
|
-
AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AuthService, deps: [{ token: i1.Config }, { token: CORE_CONFIG }, { token: i2.
|
|
205
|
+
AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AuthService, deps: [{ token: i1.Config }, { token: CORE_CONFIG }, { token: i2.HttpClient }, { token: i3.BpmService }, { token: i4.CapabilitiesService }, { token: i5.InboxService }, { token: i6.PrepareService }, { token: i7.BackendService }, { token: i8.SystemService }, { token: i9.UserService }, { token: i10.EventService }, { token: i11.SystemStatusService }, { token: i12.LocalStorage }, { token: i13.LocalStorageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
354
206
|
AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
355
207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AuthService, decorators: [{
|
|
356
208
|
type: Injectable,
|
|
357
209
|
args: [{
|
|
358
210
|
providedIn: 'root'
|
|
359
211
|
}]
|
|
360
|
-
}], ctorParameters: function () { return [{ type: i1.Config }, { type:
|
|
212
|
+
}], ctorParameters: function () { return [{ type: i1.Config }, { type: i14.CoreConfig, decorators: [{
|
|
361
213
|
type: Inject,
|
|
362
214
|
args: [CORE_CONFIG]
|
|
363
|
-
}] }, { type: i2.
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEYsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUNMLGVBQWUsRUFBRSxVQUFVLEVBQzNCLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxJQUFJLGtCQUFrQixFQUM5QixFQUFFLElBQUksWUFBWSxFQUNsQixVQUFVLEVBQ1gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFPakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQVc1Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBNkJ0Qjs7T0FFRztJQUNILFlBQW9CLE1BQWMsRUFDSixVQUFzQixFQUMxQyxVQUE4QixFQUM5QixJQUFnQixFQUNoQixVQUFzQixFQUN0QixNQUFjLEVBQ2QsbUJBQXdDLEVBQ3hDLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLE9BQXVCLEVBQ3ZCLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLG1CQUF3QyxFQUN0QyxPQUFxQixF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WUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDO1FBRWhGLGdCQUFnQjtRQUNoQixJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLEVBQUUsQ0FBQztTQUNqRDtRQUVELE1BQU0sSUFBSSxHQUFHO1lBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRTtZQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztTQUNqRCxDQUFDO1FBRUYsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FDcEIsQ0FBQztJQUNKLENBQUM7O3dHQTFYVSxXQUFXLHdDQWlDWixXQUFXOzRHQWpDVixXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBa0NJLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9jYWxTdG9yYWdlfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgaW50ZXJ2YWwsXG4gIGZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbixcbiAgb2YgYXMgb2JzZXJ2YWJsZU9mLFxuICB0aHJvd0Vycm9yXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7Q29yZUNvbmZpZ30gZnJvbSAnLi4vLi4vY29uZmlnL2NvcmUtY29uZmlnJztcbmltcG9ydCB7Q09SRV9DT05GSUd9IGZyb20gJy4uLy4uL2NvbmZpZy9jb3JlLWluaXQudG9rZW5zJztcbmltcG9ydCB7RW52aXJvbm1lbnRFbmFpb30gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQuZW5haW8nO1xuaW1wb3J0IHtFb1VzZXJ9IGZyb20gJy4uLy4uL21vZGVsL2VvLXVzZXIubW9kZWwnO1xuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xuaW1wb3J0IHtCcG1TZXJ2aWNlfSBmcm9tICcuLi9icG0vYnBtLnNlcnZpY2UnO1xuaW1wb3J0IHtDYXBhYmlsaXRpZXNTZXJ2aWNlfSBmcm9tICcuLi9jYXBhYmlsaXRpZXMvY2FwYWJpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0Vudmlyb25tZW50U2VydmljZX0gZnJvbSAnLi4vZW52aXJvbm1lbnQvZW52aXJvbm1lbnQuc2VydmljZSc7XG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtFbmFpb0V2ZW50fSBmcm9tICcuLi9ldmVudHMvZXZlbnRzJztcbmltcG9ydCB7SW5ib3hTZXJ2aWNlfSBmcm9tICcuLi9pbmJveC9pbmJveC5zZXJ2aWNlJztcbmltcG9ydCB7UHJlcGFyZVNlcnZpY2V9IGZyb20gJy4uL3ByZXBhcmUvcHJlcGFyZS5zZXJ2aWNlJztcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZX0gZnJvbSAnLi4vc3RvcmFnZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtTeXN0ZW1TdGF0dXNTZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0tc3RhdHVzL3N5c3RlbS1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuLi91c2VyL3VzZXIuc2VydmljZSc7XG5pbXBvcnQge0F1dGhQcm9maWxlfSBmcm9tICcuL2F1dGgtcHJvZmlsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2dpbkRldmljZVJlc3VsdCwgU3RvcmVkVG9rZW59IGZyb20gJy4vYXV0aC5jbG91ZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtHYXRld2F5SW5mb30gZnJvbSAnLi9nYXRld2F5LWluZm8uaW50ZXJmYWNlJztcblxuLyoqXG4gKiBgQXV0aFNlcnZpY2VgIGhhbmRsZXMgYXV0aGVudGljYXRpb24gYWdhaW5zdCBhbiB5dXV2aXM8c3VwPiZyZWc7PC9zdXA+IFJBRCBiYWNrZW5kLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBUT0tFTl9TVE9SQUdFX0tFWSA9ICdlby5hdXRoLmNsb3VkLmNyZWRlbnRpYWxzJztcbiAgcHJpdmF0ZSB1c2VyUHJvZmlsZVVyaSA9IHRoaXMudXNlclNlcnZpY2UuVVNFUl9GRVRDSF9VUkk7XG4gIHByaXZhdGUgYXV0aFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGxvZ2dlZEluQ2FjaGVLZXkgPSAnZW8udXNlci5sb2dnZWRJbic7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgdG8gc3Vic2NyaWJlIHRvIGZvciBnZXR0aW5nIHRoZSBzdGF0ZSBvZiBiZWluZyBhdXRoZW50aWNhdGVkLiBXaWxsIGVtaXQgdHJ1ZSB3aGVuIGEgdXNlciBsb2dnZWQgaW4sXG4gICAqIGZhbHNlIHdoZW4gdGhlIHVzZXIgbG9nZ2VkIG91dCBvciB0aGUgZ2F0ZXdheXMgc2Vzc2lvbiB0aW1lZCBvdXQuXG4gICAqL1xuICBwdWJsaWMgYXV0aGVudGljYXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmF1dGhTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyBob3N0czogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBnYXRld2F5SW5mbzogR2F0ZXdheUluZm87XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyBwcm9maWxlOiBBdXRoUHJvZmlsZSA9IHtcbiAgICBob3N0OiAnJyxcbiAgICB1c2VyOiBudWxsLFxuICAgIGF1dGg6IG51bGwsXG4gICAgYWN0aXZlOiBmYWxzZVxuICB9O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogQ29uZmlnLFxuICAgIEBJbmplY3QoQ09SRV9DT05GSUcpIHB1YmxpYyBjb3JlQ29uZmlnOiBDb3JlQ29uZmlnLFxuICAgIHByaXZhdGUgZW52U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGJwbVNlcnZpY2U6IEJwbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGNhcGFiaWxpdGllc1NlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmJveFNlcnZpY2U6IEluYm94U2VydmljZSxcbiAgICBwcml2YXRlIHByZXBhcmVTZXJ2aWNlOiBQcmVwYXJlU2VydmljZSxcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU3RhdHVzU2VydmljZTogU3lzdGVtU3RhdHVzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc3RvcmFnZTogTG9jYWxTdG9yYWdlLFxuICAgIHByb3RlY3RlZCBsb2NhbDogTG9jYWxTdG9yYWdlU2VydmljZSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgZXZ0ID0+IHtcbiAgICAgIGlmIChldnQua2V5ID09PSB0aGlzLmxvZ2dlZEluQ2FjaGVLZXkpIHtcbiAgICAgICAgY29uc3QgaG9zdCA9IEpTT04ucGFyc2UoZXZ0Lm5ld1ZhbHVlKS5ob3N0O1xuICAgICAgICB0aGlzLmluaXRVc2VyKGhvc3QpLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ2luIGEgdXNlciB1c2luZyBmb3JtIGJhc2VkIGxvZ2luLlxuICAgKiBAcGFyYW0gaG9zdCBUaGUgdGFyZ2V0IGhvc3QgKGNvdWxkIGJlIG51bGwgaWYgeW91IGFyZSBydW5uaW5nIGluIHdlYiBlbnZpcm9ubWVudClcbiAgICogQHBhcmFtIHVzZXJuYW1lIFRoZSB1c2VybmFtZVxuICAgKiBAcGFyYW0gcGFzc3dvcmQgVGhlIHBhc3N3b3JkXG4gICAqIEByZXR1cm5zIFJlc29sdmVzIHdpdGggdGhlIGxvZ2dlZCBpbiB1c2VyXG4gICAqL1xuICBwdWJsaWMgbG9naW4oaG9zdDogc3RyaW5nLCB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcblxuICAgIGhvc3QgPSBob3N0IHx8ICcnO1xuICAgIGNvbnN0IGZkID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZmQuYXBwZW5kKCd1c2VybmFtZScsIGVuY29kZVVSSUNvbXBvbmVudCh1c2VybmFtZSkpO1xuICAgIGZkLmFwcGVuZCgncGFzc3dvcmQnLCBlbmNvZGVVUklDb21wb25lbnQocGFzc3dvcmQpKTtcblxuICAgIGNvbnN0IGxvZ2luSGVhZGVyID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChob3N0ICsgdGhpcy5jb25maWcuZ2V0Q29udGV4dFBhdGgoKSArICcvbG9naW4nLFxuICAgICAgYHVzZXJuYW1lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJuYW1lKX0mcGFzc3dvcmQ9JHtlbmNvZGVVUklDb21wb25lbnQocGFzc3dvcmQpfWAsIHtcbiAgICAgIGhlYWRlcnM6IGxvZ2luSGVhZGVyLFxuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29yZUNvbmZpZy53aXRoQ3JlZGVudGlhbHNcbiAgICB9KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuaW5pdFVzZXIoaG9zdCkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2cgaW4gdG8gYSBjbG91ZCBiYWNrZW5kIHVzaW5nIGRldmljZSBmbG93LlxuICAgKiBAcGFyYW0gaG9zdCBUaGUgdGFyZ2V0IGhvc3QgKGNvdWxkIGJlIG51bGwgaWYgeW91IGFyZSBydW5uaW5nIGluIHdlYiBlbnZpcm9ubWVudClcbiAgICogQHBhcmFtIHRlbmFudCBUaGUgdGVuYW50XG4gICAqIEByZXR1cm5zIFJlc29sdmVzIHdpdGggdGhlIGxvZ2dlZCBpbiB1c2VyXG4gICAqL1xuICBwdWJsaWMgY2xvdWRMb2dpbihob3N0OiBzdHJpbmcsIHRlbmFudDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUobyA9PiB7XG4gICAgICBjb25zdCBzdG9wVHJpZ2dlciQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgICAgLy9jb25zdCB0YXJnZXRIb3N0ID0gdGhpcy5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMCwgdGhpcy5sb2NhdGlvbi5wYXRobmFtZS5pbmRleE9mKCcvZW50ZXInKSk7IC8vIGhvc3QgfHwgJyc7XG4gICAgICBjb25zdCB0YXJnZXRIb3N0ID0gaG9zdCB8fCAnJztcbiAgICAgIC8vIHN0YXJ0IGF1dGggZmxvd1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0YXJnZXRIb3N0fS90ZW5hbnQvJHt0ZW5hbnR9L2xvZ2luRGV2aWNlYCkuc3Vic2NyaWJlKChyZXM6IExvZ2luRGV2aWNlUmVzdWx0KSA9PiB7XG5cbiAgICAgICAgLy8gb3BlbiBuZXcgd2luZG93IGZvciB0aGUgYXV0aGVudGljYXRpb24gcHJvY2VzcyAuLi5cbiAgICAgICAgY29uc3QgdGFyZ2V0VXJpID0gYCR7dGFyZ2V0SG9zdH0vb2F1dGgvJHt0ZW5hbnR9P3VzZXJfY29kZT0ke3Jlcy51c2VyX2NvZGV9YDtcbiAgICAgICAgY29uc3Qgd2luID0gd2luZG93Lm9wZW4odGFyZ2V0VXJpLCAnYXV0aCcpO1xuICAgICAgICBpZiAod2luKSB7XG4gICAgICAgICAgLy8gQHNlZTogaHR0cDovL2F0YXNoYmFoYXIuY29tL3Bvc3QvMjAxMC0wNC0yNy1kZXRlY3Qtd2hlbi1hLWphdmFzY3JpcHQtcG9wdXAtd2luZG93LWdldHMtY2xvc2VkXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd2luVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh3aW4uY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh3aW5UaW1lcik7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHN0b3BUcmlnZ2VyJC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICBzdG9wVHJpZ2dlciQuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAuLi4gYW5kIHN0YXJ0IHBvbGxpbmcgZm9yIGF1dGhlbnRpY2F0aW9uIHJlc3VsdHNcbiAgICAgICAgdGhpcy5jbG91ZExvZ2luUG9sbEZvclJlc3VsdChgJHt0YXJnZXRIb3N0fS9hdXRoL2luZm8vc3RhdGU/ZGV2aWNlX2NvZGU9JHtyZXMuZGV2aWNlX2NvZGV9YCwgMTAwMCwgc3RvcFRyaWdnZXIkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFwKChhY2Nlc3NUb2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChhY2Nlc3NUb2tlbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvdWRMb2dpblNldEhlYWRlcnMoYWNjZXNzVG9rZW4sIHRlbmFudCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RvcmVUb2tlbjogU3RvcmVkVG9rZW4gPSB7XG4gICAgICAgICAgICAgICAgICB0ZW5hbnQ6IHRlbmFudCxcbiAgICAgICAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiBhY2Nlc3NUb2tlblxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0odGhpcy5UT0tFTl9TVE9SQUdFX0tFWSwgc3RvcmVUb2tlbikuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3dpdGNoTWFwKChhdXRoUmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGF1dGhSZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbml0VXNlcih0YXJnZXRIb3N0KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdub3QgYXV0aGVudGljYXRlZCcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKHVzZXI6IEVvVXNlcikgPT4ge1xuXG4gICAgICAgICAgICAgIHdpbi5jbG9zZSgpO1xuICAgICAgICAgICAgICBvLm5leHQodXNlcik7XG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICAgIHdpbi5jbG9zZSgpO1xuICAgICAgICAgICAgICBvLmVycm9yKGVycik7XG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICBvLmVycm9yKCd1bmFibGUgdG8gY2FsbCBkZXZpY2UgZmxvdyBlbmRwb2ludCcsIGVycik7XG4gICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgIH0pXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHBvbGxpbmcgZm9yIGxvZ2luIHJlc3VsdHMgaW4gY2FzZSBvZiBsb2dnaW5nIGluIHRvIGEgY2xvdWQgYmFja2VuZC5cbiAgICogQHBhcmFtIHVyaSBVUkkgdG8gcG9sbFxuICAgKiBAcGFyYW0gcG9sbGluZ0ludGVydmFsIFBvbGxpbmcgaW50ZXJ2YWxsIGluIG1pbGxpc2Vjb25kc1xuICAgKiBAcGFyYW0gc3RvcFRyaWdnZXIgU3ViamVjdCBhY3RpbmcgYXMgc3RvcCB0cmlnZ2VyXG4gICAqIEByZXR1cm5zIEFjY2VzcyBUb2tlbiBpZiBsb2dnZWQgaW4gc3VjY2Vzc2Z1bGx5IG9yIE5VTEwgb3RoZXJ3aXNlXG4gICAqL1xuICBwcml2YXRlIGNsb3VkTG9naW5Qb2xsRm9yUmVzdWx0KHVyaTogc3RyaW5nLCBwb2xsaW5nSW50ZXJ2YWw6IG51bWJlciwgc3RvcFRyaWdnZXI6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcblxuICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZShvID0+IHtcbiAgICAgIGxldCBhY2Nlc3NHcmFudGVkID0gZmFsc2U7XG4gICAgICBsZXQgYWNjZXNzRGVuaWVkID0gZmFsc2U7XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgaW50ZXJ2YWwocG9sbGluZ0ludGVydmFsKS5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbChzdG9wVHJpZ2dlciksXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuaHR0cC5nZXQodXJpKS5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAvLyBPQXV0aCBzdGFuZGFyZCB3ZSBhcmUgdXNpbmcgaXMgcmV0dXJuaW5nIHdpdGggYSBzdGF0dXMgb2YgNDAwIHdoaWxlIGxvZ2dpbmcgaW4gKG5vIGlkZWEgd2h5Pz8/KVxuICAgICAgICAgICAgICAvLyBzbyB3ZSBnb3QgdG8gZmV0Y2ggdGhhdCB0byBub3QgYnJlYWsgdGhlIHBhcmVudCBwaXBlXG4gICAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKGVyci5lcnJvcik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3dFcnJvcihlcnIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICkpXG4gICAgICAgICkuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgYWNjZXNzR3JhbnRlZCA9ICEhcmVzLmFjY2Vzc190b2tlbjtcbiAgICAgICAgICAgICAgYWNjZXNzRGVuaWVkID0gcmVzLmVycm9yID09PSAnYWNjZXNzX2RlbmllZCc7XG5cbiAgICAgICAgICAgICAgaWYgKGFjY2Vzc0dyYW50ZWQgfHwgYWNjZXNzRGVuaWVkKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9nZ2VkIGluXG4gICAgICAgICAgICAgICAgc3RvcFRyaWdnZXIubmV4dCgpO1xuICAgICAgICAgICAgICAgIHN0b3BUcmlnZ2VyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgby5uZXh0KGFjY2Vzc0dyYW50ZWQgPyByZXMuYWNjZXNzX3Rva2VuIDogbnVsbCk7XG4gICAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5lcnJvciA9PT0gJ2V4cGlyZWRfdG9rZW4nKSB7XG4gICAgICAgICAgICAgICAgLy8gZXhwaXJlZCBzbyBza2lwIHBvbGxpbmdcbiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKCdUb2tlbiBleHBpcmVkJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICBvLmVycm9yKGVycik7XG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIG8ubmV4dChhY2Nlc3NHcmFudGVkKTtcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvdWRMb2dpblNldEhlYWRlcnMoYWNjZXNzVG9rZW46IHN0cmluZywgdGVuYW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tlbmQuc2V0SGVhZGVyKCdBdXRob3JpemF0aW9uJywgJ2JlYXJlciAnICsgYWNjZXNzVG9rZW4pO1xuICAgIHRoaXMuYmFja2VuZC5zZXRIZWFkZXIoJ1gtSUQtVEVOQU5ULU5BTUUnLCB0ZW5hbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY2FsbGVkIHdoaWxlIGFwcCBpbml0XG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGluaXRVc2VyKGhvc3Q/OiBzdHJpbmcpIHtcblxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChgJHtob3N0IHx8ICcnfSR7dGhpcy5jb25maWcuZ2V0Q29udGV4dFBhdGgoKX0vYXV0aC9pbmZvYCwge2hlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30pXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKGluZm86IEdhdGV3YXlJbmZvKSA9PiB7XG4gICAgICAgIHRoaXMuZ2F0ZXdheUluZm8gPSBpbmZvO1xuXG4gICAgICAgIHRoaXMuZW52U2VydmljZS5jbG91ZEVudmlyb25tZW50ID0gKHRoaXMuZ2F0ZXdheUluZm8gJiYgdGhpcy5nYXRld2F5SW5mby5vYXV0aDIpO1xuICAgICAgICBpZiAodGhpcy5pc0Nsb3VkRW52aXJvbm1lbnQoKSkge1xuICAgICAgICAgIC8vIGluIGNhc2Ugb2YgcnVubmluZyBhZ2FpbnN0IGNsb3VkIGJhY2tlbmQsIHdlIHRyeSB0byBmZXRjaFxuICAgICAgICAgIC8vIGFjY2VzcyB0b2tlbiBhbmQgdGVuYW50IGZyb20gbG9jYWwgc3RvcmFnZVxuICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRPS0VOX1NUT1JBR0VfS0VZKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG91ZExvZ2luU2V0SGVhZGVycyhyZXMuYWNjZXNzVG9rZW4sIHJlcy50ZW5hbnQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoVXNlcihpbmZvLCBob3N0KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoVXNlcihpbmZvLCBob3N0KVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGdhdGV3YXlJbmZvXG4gICAqIEBwYXJhbSBob3N0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RW9Vc2VyPlxuICAgKi9cbiAgcHJpdmF0ZSBmZXRjaFVzZXIoZ2F0ZXdheUluZm86IGFueSwgaG9zdD86IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldCh0aGlzLnVzZXJQcm9maWxlVXJpLCAnJywge2hlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30pXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnByb2ZpbGUgPSB7XG4gICAgICAgICAgICBob3N0OiBob3N0IHx8ICcnLFxuICAgICAgICAgICAgdXNlcjogdXNlci51c2VyLm5hbWUsXG4gICAgICAgICAgICBhdXRoOiBudWxsLFxuICAgICAgICAgICAgYWN0aXZlOiB0cnVlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoaG9zdCkge1xuICAgICAgICAgICAgdGhpcy5hZGRIb3N0Q29uZmlnKGhvc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5sb2NhbC5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UubG9hZExvY2FsU2V0dGluZ3MoKS5zdWJzY3JpYmUoc2V0dGluZ3MgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmxvY2FsLnNldFN0b3JhZ2Uoc2V0dGluZ3MubG9jYWxTZXR0aW5ncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubG9nZ2VkSW5DYWNoZUtleSwgSlNPTi5zdHJpbmdpZnkoe3VzZXJJZDogdXNlci51c2VyLmlkLCBob3N0OiBob3N0fSkpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmluaXRBcHAodXNlciwgZ2F0ZXdheUluZm8ubnRsbSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5hdXRoU291cmNlLm5leHQodGhpcy5pc0xvZ2dlZEluKCkpKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dzIG91dCB0aGUgY3VycmVudCB1c2VyLlxuICAgKiBAcGFyYW0gZ2F0ZXdheUxvZ291dCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gcGVyZm9ybSBhIGdhdGV3YXkgbG9nb3V0IGFzIHdlbGxcbiAgICovXG4gIHB1YmxpYyBsb2dvdXQoZ2F0ZXdheUxvZ291dD86IGJvb2xlYW4pIHtcblxuICAgIHRoaXMuYXV0aFNvdXJjZS5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLnN5c3RlbVN0YXR1c1NlcnZpY2Uuc3RvcCgpO1xuXG4gICAgdGhpcy5wcm9maWxlID0ge1xuICAgICAgaG9zdDogJycsXG4gICAgICB1c2VyOiBudWxsLFxuICAgICAgYXV0aDogbnVsbCxcbiAgICAgIGFjdGl2ZTogZmFsc2VcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuaXNDbG91ZEVudmlyb25tZW50KCkpIHtcbiAgICAgIC8vIHJlbW92ZSBzdG9yZWQgYWNjZXNzIGRhdGFcbiAgICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuVE9LRU5fU1RPUkFHRV9LRVkpLnN1YnNjcmliZSgpO1xuICAgICAgaWYgKHRoaXMuY29yZUNvbmZpZy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uICYmIEVudmlyb25tZW50RW5haW8uaXNXZWJFbnZpcm9ubWVudCgpKSB7XG4gICAgICAgICh3aW5kb3cgYXMgYW55KS5sb2NhdGlvbi5ocmVmID0gdGhpcy5jb25maWcuZ2V0Q29udGV4dFBhdGgoKSArICcvbG9nb3V0JztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZ2F0ZXdheUxvZ291dCkge1xuICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBhcmUganVzdCByZXNldHRpbmcgaW50ZXJuYWwgc3RhdGUgdG8gJ2xvZ2dlZCBvdXQnIGFuZCBpblxuICAgICAgLy8gc29tZSBjYXNlcyBjYWxsIGdhdGV3YXlzIGxvZ291dCBlbmRwb2ludCB0byBkbyBsb2dvdXQgc3R1ZmYgdGhlcmUgc2lsZW50bHlcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5wcm9maWxlLmhvc3QgfHwgJyd9JHt0aGlzLmNvbmZpZy5nZXRDb250ZXh0UGF0aCgpfS9sb2dvdXRgLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzfSkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG5cbiAgICB0aGlzLmJhY2tlbmQuc2V0QXV0aFByb2ZpbGUodGhpcy5wcm9maWxlKTtcbiAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuTE9HT1VUKTtcbiAgfVxuXG4gIGlzQ2xvdWRFbnZpcm9ubWVudCgpOiBib29sZWFuIHtcbiAgICAvLyBvYXV0aDIgaW5kaWNhdGVzIHRoYXQgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjbG91ZCBlbnZpcm9ubWVudFxuICAgIHJldHVybiB0aGlzLmdhdGV3YXlJbmZvICYmIHRoaXMuZ2F0ZXdheUluZm8ub2F1dGgyO1xuICB9XG5cbiAgLyoqXG4gICAqIGZvciBkZXNrdG9wIGFuZCBtb2JpbGUgZGV2aWNlcyB3ZSBwcm92aWRlIGEgbGlzdCBvZiBob3N0cyBmb3IgdGhlIGxvZ2luXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgaG9zdFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRIb3N0Q29uZmlnKGhvc3Q6IHN0cmluZykge1xuICAgIGNvbnN0IGV4aXN0aW5nSG9zdCA9IHRoaXMuaG9zdHMuZmluZChoID0+IGggPT09IGhvc3QpO1xuICAgIGlmICghZXhpc3RpbmdIb3N0KSB7XG4gICAgICB0aGlzLmhvc3RzLnB1c2goaG9zdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBzdGF0ZSBvZiBhIHVzZXIgYmVpbmcgbG9nZ2VkIGluLiBUaGlzIGlzIGtpbmQgb2YgdGhlIHN5bmNocm9ub3VzIHZlcnNpb24gb2Ygc3Vic2NyaWJpbmcgdG8gYGF1dGhlbnRpY2F0ZWQkYC5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGVyZSBpcyBhIGxvZ2dlZCBpbiB1c2VyLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyBpc0xvZ2dlZEluKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGUudXNlciAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gdXNlclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzc29cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxFb1VzZXI+XG4gICAqL1xuICBwcml2YXRlIGluaXRBcHAodXNlcjogYW55LCBzc28/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcblxuICAgIGNvbnN0IGN1cnJVc2VyID0gbmV3IEVvVXNlcih1c2VyKTtcbiAgICB0aGlzLmJhY2tlbmQuc2V0QXV0aFByb2ZpbGUodGhpcy5wcm9maWxlKTtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldEN1cnJlbnRVc2VyKHVzZXIpO1xuICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5zZXRDYXBhYmlsaXRpZXMoXG4gICAgICB1c2VyLmNhcGFiaWxpdGllcywgc3NvKTtcblxuICAgIHRoaXMuc3lzdGVtU3RhdHVzU2VydmljZS5pbml0KHRoaXMuY29uZmlnLmdldFJhdygnc3lzdGVtU3RhdHVzVXBkYXRlSW50ZXJ2YWwnKSk7XG5cbiAgICAvLyB1cGRhdGUgc3RhdGVzXG4gICAgaWYgKGNhcGFiaWxpdGllcy5pbmJveCkge1xuICAgICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcbiAgICB9XG4gICAgaWYgKGNhcGFiaWxpdGllcy5pbnRyYXkpIHtcbiAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2UucmVmcmVzaFByZXBhcmVkSXRlbXNDb3VudCgpO1xuICAgIH1cblxuICAgIGNvbnN0IHRvZG8gPSBbXG4gICAgICB0aGlzLmJwbVNlcnZpY2UuaW5pdEV4ZWN1dGFibGVQcm9jZXNzZXMoKSxcbiAgICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRTeXN0ZW1EZWZpbml0aW9uKGN1cnJVc2VyKVxuICAgIF07XG5cbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRvZG8pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gY3VyclVzZXIpXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
215
|
+
}] }, { type: i2.HttpClient }, { type: i3.BpmService }, { type: i4.CapabilitiesService }, { type: i5.InboxService }, { type: i6.PrepareService }, { type: i7.BackendService }, { type: i8.SystemService }, { type: i9.UserService }, { type: i10.EventService }, { type: i11.SystemStatusService }, { type: i12.LocalStorage }, { type: i13.LocalStorageService }]; } });
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLFFBQVEsSUFBSSxrQkFBa0IsR0FDL0IsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBTWpELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVU1Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBNEJ0Qjs7T0FFRztJQUNILFlBQW9CLE1BQWMsRUFDSixVQUFzQixFQUMxQyxJQUFnQixFQUNoQixVQUFzQixFQUN0QixtQkFBd0MsRUFDeEMsWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsT0FBdUIsRUFDdkIsYUFBNEIsRUFDNUIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsbUJBQXdDLEVBQ3RDLE9BQXFCLEVBQ3JCLEtBQTBCO1FBYmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDSixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQzFDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hD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TSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLEVBQUUsQ0FBQztTQUNqRDtRQUVELE1BQU0sSUFBSSxHQUFHO1lBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRTtZQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztTQUNqRCxDQUFDO1FBRUYsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FDcEIsQ0FBQztJQUNKLENBQUM7O3dHQXBOVSxXQUFXLHdDQWdDWixXQUFXOzRHQWhDVixXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBaUNJLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhlYWRlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9jYWxTdG9yYWdlfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSxcbiAgZm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDb3JlQ29uZmlnfSBmcm9tICcuLi8uLi9jb25maWcvY29yZS1jb25maWcnO1xuaW1wb3J0IHtDT1JFX0NPTkZJR30gZnJvbSAnLi4vLi4vY29uZmlnL2NvcmUtaW5pdC50b2tlbnMnO1xuaW1wb3J0IHtFb1VzZXJ9IGZyb20gJy4uLy4uL21vZGVsL2VvLXVzZXIubW9kZWwnO1xuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xuaW1wb3J0IHtCcG1TZXJ2aWNlfSBmcm9tICcuLi9icG0vYnBtLnNlcnZpY2UnO1xuaW1wb3J0IHtDYXBhYmlsaXRpZXNTZXJ2aWNlfSBmcm9tICcuLi9jYXBhYmlsaXRpZXMvY2FwYWJpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtFbmFpb0V2ZW50fSBmcm9tICcuLi9ldmVudHMvZXZlbnRzJztcbmltcG9ydCB7SW5ib3hTZXJ2aWNlfSBmcm9tICcuLi9pbmJveC9pbmJveC5zZXJ2aWNlJztcbmltcG9ydCB7UHJlcGFyZVNlcnZpY2V9IGZyb20gJy4uL3ByZXBhcmUvcHJlcGFyZS5zZXJ2aWNlJztcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZX0gZnJvbSAnLi4vc3RvcmFnZS9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtTeXN0ZW1TdGF0dXNTZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0tc3RhdHVzL3N5c3RlbS1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJy4uL3N5c3RlbS9zeXN0ZW0uc2VydmljZSc7XG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuLi91c2VyL3VzZXIuc2VydmljZSc7XG5pbXBvcnQge0F1dGhQcm9maWxlfSBmcm9tICcuL2F1dGgtcHJvZmlsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtHYXRld2F5SW5mb30gZnJvbSAnLi9nYXRld2F5LWluZm8uaW50ZXJmYWNlJztcblxuLyoqXG4gKiBgQXV0aFNlcnZpY2VgIGhhbmRsZXMgYXV0aGVudGljYXRpb24gYWdhaW5zdCBhbiB5dXV2aXM8c3VwPiZyZWc7PC9zdXA+IFJBRCBiYWNrZW5kLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG5cbiAgcHJpdmF0ZSB1c2VyUHJvZmlsZVVyaSA9IHRoaXMudXNlclNlcnZpY2UuVVNFUl9GRVRDSF9VUkk7XG4gIHByaXZhdGUgYXV0aFNvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIGxvZ2dlZEluQ2FjaGVLZXkgPSAnZW8udXNlci5sb2dnZWRJbic7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgdG8gc3Vic2NyaWJlIHRvIGZvciBnZXR0aW5nIHRoZSBzdGF0ZSBvZiBiZWluZyBhdXRoZW50aWNhdGVkLiBXaWxsIGVtaXQgdHJ1ZSB3aGVuIGEgdXNlciBsb2dnZWQgaW4sXG4gICAqIGZhbHNlIHdoZW4gdGhlIHVzZXIgbG9nZ2VkIG91dCBvciB0aGUgZ2F0ZXdheXMgc2Vzc2lvbiB0aW1lZCBvdXQuXG4gICAqL1xuICBwdWJsaWMgYXV0aGVudGljYXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmF1dGhTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyBob3N0czogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBnYXRld2F5SW5mbzogR2F0ZXdheUluZm87XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHB1YmxpYyBwcm9maWxlOiBBdXRoUHJvZmlsZSA9IHtcbiAgICBob3N0OiAnJyxcbiAgICB1c2VyOiBudWxsLFxuICAgIGF1dGg6IG51bGwsXG4gICAgYWN0aXZlOiBmYWxzZVxuICB9O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogQ29uZmlnLFxuICAgIEBJbmplY3QoQ09SRV9DT05GSUcpIHB1YmxpYyBjb3JlQ29uZmlnOiBDb3JlQ29uZmlnLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGJwbVNlcnZpY2U6IEJwbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXRpZXNTZXJ2aWNlOiBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2VydmljZTogUHJlcGFyZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVN0YXR1c1NlcnZpY2U6IFN5c3RlbVN0YXR1c1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHN0b3JhZ2U6IExvY2FsU3RvcmFnZSxcbiAgICBwcm90ZWN0ZWQgbG9jYWw6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIGV2dCA9PiB7XG4gICAgICBpZiAoZXZ0LmtleSA9PT0gdGhpcy5sb2dnZWRJbkNhY2hlS2V5KSB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBKU09OLnBhcnNlKGV2dC5uZXdWYWx1ZSkuaG9zdDtcbiAgICAgICAgdGhpcy5pbml0VXNlcihob3N0KS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dpbiBhIHVzZXIgdXNpbmcgZm9ybSBiYXNlZCBsb2dpbi5cbiAgICogQHBhcmFtIGhvc3QgVGhlIHRhcmdldCBob3N0IChjb3VsZCBiZSBudWxsIGlmIHlvdSBhcmUgcnVubmluZyBpbiB3ZWIgZW52aXJvbm1lbnQpXG4gICAqIEBwYXJhbSB1c2VybmFtZSBUaGUgdXNlcm5hbWVcbiAgICogQHBhcmFtIHBhc3N3b3JkIFRoZSBwYXNzd29yZFxuICAgKiBAcmV0dXJucyBSZXNvbHZlcyB3aXRoIHRoZSBsb2dnZWQgaW4gdXNlclxuICAgKi9cbiAgcHVibGljIGxvZ2luKGhvc3Q6IHN0cmluZywgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8RW9Vc2VyPiB7XG5cbiAgICBob3N0ID0gaG9zdCB8fCAnJztcbiAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZkLmFwcGVuZCgndXNlcm5hbWUnLCBlbmNvZGVVUklDb21wb25lbnQodXNlcm5hbWUpKTtcbiAgICBmZC5hcHBlbmQoJ3Bhc3N3b3JkJywgZW5jb2RlVVJJQ29tcG9uZW50KHBhc3N3b3JkKSk7XG5cbiAgICBjb25zdCBsb2dpbkhlYWRlciA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoaG9zdCArIHRoaXMuY29uZmlnLmdldENvbnRleHRQYXRoKCkgKyAnL2xvZ2luJyxcbiAgICAgIGB1c2VybmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudCh1c2VybmFtZSl9JnBhc3N3b3JkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhc3N3b3JkKX1gLCB7XG4gICAgICBoZWFkZXJzOiBsb2dpbkhlYWRlcixcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzXG4gICAgfSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmluaXRVc2VyKGhvc3QpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBjYWxsZWQgd2hpbGUgYXBwIGluaXRcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaW5pdFVzZXIoaG9zdD86IHN0cmluZykge1xuXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KGAke2hvc3QgfHwgJyd9JHt0aGlzLmNvbmZpZy5nZXRDb250ZXh0UGF0aCgpfS9hdXRoL2luZm9gLCB7aGVhZGVycywgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvcmVDb25maWcud2l0aENyZWRlbnRpYWxzfSlcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoaW5mbzogR2F0ZXdheUluZm8pID0+IHtcbiAgICAgICAgdGhpcy5nYXRld2F5SW5mbyA9IGluZm87XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoVXNlcihpbmZvLCBob3N0KVxuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBnYXRld2F5SW5mb1xuICAgKiBAcGFyYW0gaG9zdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEVvVXNlcj5cbiAgICovXG4gIHByaXZhdGUgZmV0Y2hVc2VyKGdhdGV3YXlJbmZvOiBhbnksIGhvc3Q/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVvVXNlcj4ge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXQodGhpcy51c2VyUHJvZmlsZVVyaSwgJycsIHtoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29yZUNvbmZpZy53aXRoQ3JlZGVudGlhbHN9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5wcm9maWxlID0ge1xuICAgICAgICAgICAgaG9zdDogaG9zdCB8fCAnJyxcbiAgICAgICAgICAgIHVzZXI6IHVzZXIudXNlci5uYW1lLFxuICAgICAgICAgICAgYXV0aDogbnVsbCxcbiAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGhvc3QpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkSG9zdENvbmZpZyhob3N0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMubG9jYWwuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmxvYWRMb2NhbFNldHRpbmdzKCkuc3Vic2NyaWJlKHNldHRpbmdzID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5sb2NhbC5zZXRTdG9yYWdlKHNldHRpbmdzLmxvY2FsU2V0dGluZ3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvZ2dlZEluQ2FjaGVLZXksIEpTT04uc3RyaW5naWZ5KHt1c2VySWQ6IHVzZXIudXNlci5pZCwgaG9zdDogaG9zdH0pKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pbml0QXBwKHVzZXIsIGdhdGV3YXlJbmZvLm50bG0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuYXV0aFNvdXJjZS5uZXh0KHRoaXMuaXNMb2dnZWRJbigpKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBvdXQgdGhlIGN1cnJlbnQgdXNlci5cbiAgICogQHBhcmFtIGdhdGV3YXlMb2dvdXQgRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRvIHBlcmZvcm0gYSBnYXRld2F5IGxvZ291dCBhcyB3ZWxsXG4gICAqL1xuICBwdWJsaWMgbG9nb3V0KGdhdGV3YXlMb2dvdXQ/OiBib29sZWFuKSB7XG5cbiAgICB0aGlzLmF1dGhTb3VyY2UubmV4dChmYWxzZSk7XG4gICAgdGhpcy5zeXN0ZW1TdGF0dXNTZXJ2aWNlLnN0b3AoKTtcblxuICAgIHRoaXMucHJvZmlsZSA9IHtcbiAgICAgIGhvc3Q6ICcnLFxuICAgICAgdXNlcjogbnVsbCxcbiAgICAgIGF1dGg6IG51bGwsXG4gICAgICBhY3RpdmU6IGZhbHNlXG4gICAgfTtcblxuICAgIGlmIChnYXRld2F5TG9nb3V0KSB7XG4gICAgICAvLyBieSBkZWZhdWx0IHdlIGFyZSBqdXN0IHJlc2V0dGluZyBpbnRlcm5hbCBzdGF0ZSB0byAnbG9nZ2VkIG91dCcgYW5kIGluXG4gICAgICAvLyBzb21lIGNhc2VzIGNhbGwgZ2F0ZXdheXMgbG9nb3V0IGVuZHBvaW50IHRvIGRvIGxvZ291dCBzdHVmZiB0aGVyZSBzaWxlbnRseVxuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLnByb2ZpbGUuaG9zdCB8fCAnJ30ke3RoaXMuY29uZmlnLmdldENvbnRleHRQYXRoKCl9L2xvZ291dGAsIHt3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29yZUNvbmZpZy53aXRoQ3JlZGVudGlhbHN9KS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cblxuICAgIHRoaXMuYmFja2VuZC5zZXRBdXRoUHJvZmlsZSh0aGlzLnByb2ZpbGUpO1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5MT0dPVVQpO1xuICB9XG5cbiAgLyoqXG4gICAqIGZvciBkZXNrdG9wIGFuZCBtb2JpbGUgZGV2aWNlcyB3ZSBwcm92aWRlIGEgbGlzdCBvZiBob3N0cyBmb3IgdGhlIGxvZ2luXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgaG9zdFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRIb3N0Q29uZmlnKGhvc3Q6IHN0cmluZykge1xuICAgIGNvbnN0IGV4aXN0aW5nSG9zdCA9IHRoaXMuaG9zdHMuZmluZChoID0+IGggPT09IGhvc3QpO1xuICAgIGlmICghZXhpc3RpbmdIb3N0KSB7XG4gICAgICB0aGlzLmhvc3RzLnB1c2goaG9zdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBzdGF0ZSBvZiBhIHVzZXIgYmVpbmcgbG9nZ2VkIGluLiBUaGlzIGlzIGtpbmQgb2YgdGhlIHN5bmNocm9ub3VzIHZlcnNpb24gb2Ygc3Vic2NyaWJpbmcgdG8gYGF1dGhlbnRpY2F0ZWQkYC5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGVyZSBpcyBhIGxvZ2dlZCBpbiB1c2VyLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyBpc0xvZ2dlZEluKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGUudXNlciAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gdXNlclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzc29cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxFb1VzZXI+XG4gICAqL1xuICBwcml2YXRlIGluaXRBcHAodXNlcjogYW55LCBzc28/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxFb1VzZXI+IHtcblxuICAgIGNvbnN0IGN1cnJVc2VyID0gbmV3IEVvVXNlcih1c2VyKTtcbiAgICB0aGlzLmJhY2tlbmQuc2V0QXV0aFByb2ZpbGUodGhpcy5wcm9maWxlKTtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldEN1cnJlbnRVc2VyKHVzZXIpO1xuICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5zZXRDYXBhYmlsaXRpZXMoXG4gICAgICB1c2VyLmNhcGFiaWxpdGllcywgc3NvKTtcblxuICAgIHRoaXMuc3lzdGVtU3RhdHVzU2VydmljZS5pbml0KHRoaXMuY29uZmlnLmdldFJhdygnc3lzdGVtU3RhdHVzVXBkYXRlSW50ZXJ2YWwnKSk7XG5cbiAgICAvLyB1cGRhdGUgc3RhdGVzXG4gICAgaWYgKGNhcGFiaWxpdGllcy5pbmJveCkge1xuICAgICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcbiAgICB9XG4gICAgaWYgKGNhcGFiaWxpdGllcy5pbnRyYXkpIHtcbiAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2UucmVmcmVzaFByZXBhcmVkSXRlbXNDb3VudCgpO1xuICAgIH1cblxuICAgIGNvbnN0IHRvZG8gPSBbXG4gICAgICB0aGlzLmJwbVNlcnZpY2UuaW5pdEV4ZWN1dGFibGVQcm9jZXNzZXMoKSxcbiAgICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRTeXN0ZW1EZWZpbml0aW9uKGN1cnJVc2VyKVxuICAgIF07XG5cbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRvZG8pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gY3VyclVzZXIpXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -15,6 +15,7 @@ export var SubscriptionMode;
|
|
|
15
15
|
SubscriptionMode["ONLY_DOCUMENT_CONTENT_CHANGED"] = "CONTENT";
|
|
16
16
|
SubscriptionMode["DMS_OBJECT_CHANGED"] = "BOTH";
|
|
17
17
|
})(SubscriptionMode || (SubscriptionMode = {}));
|
|
18
|
+
export const resolveObjectRights = [];
|
|
18
19
|
/**
|
|
19
20
|
* Collection of DMS Services
|
|
20
21
|
*/
|
|
@@ -74,7 +75,7 @@ export class DmsService {
|
|
|
74
75
|
if (dmsObject.contextFolder) {
|
|
75
76
|
dmsObject.contextFolder.type = this.systemService.getObjectType(dmsObject.contextFolder.typeName);
|
|
76
77
|
}
|
|
77
|
-
return dmsObject;
|
|
78
|
+
return resolveObjectRights.reduce((value, fn) => fn.call(this, value), dmsObject);
|
|
78
79
|
}
|
|
79
80
|
/**
|
|
80
81
|
* Deletes a DMS object.
|
|
@@ -503,4 +504,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
503
504
|
providedIn: 'root'
|
|
504
505
|
}]
|
|
505
506
|
}], ctorParameters: function () { return [{ type: i1.BackendService }, { type: i2.SystemService }, { type: i3.EventService }]; } });
|
|
506
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRzVFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBSTVDLE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIsb0RBQWdDLENBQUE7SUFDaEMsNkRBQXlDLENBQUE7SUFDekMsK0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0I7QUFFRDs7R0FFRztBQUlILE1BQU0sT0FBTyxVQUFVO0lBRXJCLFlBQW9CLE9BQXVCLEVBQ2pDLGFBQTRCLEVBQzVCLFlBQTBCO1FBRmhCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQ3BDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsWUFBWSxDQUFDLEVBQVUsRUFBRSxJQUFhLEVBQUUsT0FBZ0IsRUFBRSxNQUFlLEVBQUUsVUFBb0IsRUFBRSxlQUF5QjtRQUN4SCxNQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBRXpCLE1BQU0sQ0FBQyxHQUFHO1lBQ1Isb0JBQW9CLEVBQUUsSUFBSTtZQUMxQixZQUFZLEVBQUUsU0FBUztZQUN2QixZQUFZLEVBQUUsU0FBUztZQUN2QixNQUFNLEVBQUUsU0FBUztZQUNqQixRQUFRLEVBQUUsTUFBTTtZQUNoQixhQUFhLEVBQUUsTUFBTTtZQUNyQixJQUFJO1lBQ0osVUFBVTtZQUNWLE9BQU87WUFDUCxXQUFXLEVBQUUsZUFBZTtZQUM1QixTQUFTLEVBQUUsTUFBTTtTQUNsQixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNoQixlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdkMsSUFBSSxDQUNILFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUN0RCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUN4RCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsb0JBQW9CLENBQUMsTUFBaUI7UUFDcEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUMsU0FBb0I7UUFDckMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEUsSUFBSSxTQUFTLENBQUMsYUFBYSxFQUFFO1lBQzNCLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbkc7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFDLEVBQVUsRUFBRSxJQUFhLEVBQUUsVUFBb0IsRUFBRSxLQUFLLEdBQUcsS0FBSztRQUM1RSxNQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxVQUFVLEVBQUU7WUFDZCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsVUFBVSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYyxDQUFDLEVBQVU7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDO2FBQzFDLElBQUksQ0FDSCxHQUFHLENBQ0QsV0FBVyxDQUFDLEVBQUU7WUFDWixXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUM3QixRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsU0FBb0I7UUFDOUIsTUFBTSxHQUFHLEdBQUcsUUFBUSxTQUFTLENBQUMsRUFBRSxXQUFXLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3hGLEdBQUcsQ0FBQyxDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUMsRUFBVSxFQUFFLElBQWE7UUFDbkMsTUFBTSxHQUFHLEdBQUcsUUFBUSxFQUFFLFdBQVcsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkUsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDZixPQUFPLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsU0FBb0I7UUFDakMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQ25FLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxTQUFTLGNBQWMsRUFBRSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNqRSxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFDdEQsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFdBQVc7YUFDcEcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzVJLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILG9CQUFvQixDQUFDLEVBQVUsRUFBRSxLQUFhLEVBQUUsSUFBWSxFQUFFLE9BQWdCO1FBQzVFLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGdCQUFnQixLQUFLLEVBQUUsRUFBRSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsUUFBUSxDQUFDLEVBQVUsRUFBRSxJQUFhLEVBQUUsT0FBZ0IsRUFBRSxJQUFhO1FBQ2pFLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsR0FBRyxPQUFPLEdBQUcsRUFBRSxHQUFHLFFBQVEsRUFDdkQ7WUFDRSxJQUFJO1lBQ0osT0FBTztZQUNQLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILFVBQVUsQ0FBQyxFQUFVLEVBQUUsSUFBYSxFQUFFLE9BQWdCLEVBQUUsU0FBa0IsRUFBRSxVQUFvQjtRQUM5RixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsT0FBTyxHQUFHLEVBQUUsR0FBRyxVQUFVLEVBQ3pEO1lBQ0UsU0FBUztZQUNULElBQUk7WUFDSixPQUFPO1lBQ1AsVUFBVTtTQUNYLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxZQUFZLENBQUMsRUFBVSxFQUFFLFNBQWMsRUFBRSxJQUFhLEVBQUUsT0FBZ0IsRUFBRSxlQUF5QjtRQUNqRyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQUM7UUFDM0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFNLEVBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxVQUFVLENBQUMsRUFBVSxFQUFFLElBQWEsRUFBRSxVQUFvQjtRQUN4RCxNQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUUsUUFBUSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUkscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEwsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsY0FBYyxDQUFDLEVBQVUsRUFBRSxPQUFlLEVBQUUsSUFBYTtRQUN2RCxNQUFNLEdBQUcsR0FBRyx1QkFBdUIsRUFBRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7Ozs7OztLQU1DO0lBQ0QsT0FBTyxDQUFDLEVBQVUsRUFBRSxNQUFjLEVBQUUsSUFBYTtRQUMvQyxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxXQUFXLE1BQU0sRUFBRSxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGFBQWEsQ0FBQyxTQUFvQixFQUFFLE9BQXdCO1FBQzFELE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDeEMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDbkUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQUMsU0FBb0I7UUFDaEMsTUFBTSxHQUFHLEdBQUcsUUFBUSxTQUFTLENBQUMsRUFBRSxVQUFVLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxlQUFlLENBQUMsVUFBa0IsRUFBRSxJQUFXLEVBQUUsU0FBZSxFQUFFLE1BQW9DO1FBRXBHLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDaEMsSUFBSSxTQUFTLEVBQUU7WUFDYixRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRTtnQkFDNUQsSUFBSSxFQUFFLGtCQUFrQjthQUN6QixDQUFDLENBQUMsQ0FBQztTQUNMO2FBQU07WUFDTCxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNwQztRQUVELElBQUksSUFBSSxFQUFFO1lBQ1IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDbkU7UUFFRCxJQUFJLEdBQUcsR0FBRyxlQUFlLFVBQVUsRUFBRSxDQUFDO1FBQ3RDLElBQUksTUFBTSxFQUFFO1lBQ1YsR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO2dCQUN4QixRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ25CLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSTthQUN4QixDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBQyxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILGtCQUFrQixDQUFDLFNBQW9CLEVBQUUsT0FBZSxFQUFFLFFBQVEsRUFBRSxTQUFrQixFQUFFLFNBQWtCLEVBQUUsSUFBdUI7UUFDakksTUFBTSxHQUFHLEdBQUcscUJBQXFCLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pFLE9BQU87WUFDUCxJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFDeEIsUUFBUTtZQUNSLFNBQVM7WUFDVCxTQUFTO1lBQ1QsSUFBSTtTQUNMLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDTixDQUFDO0lBRUosQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxrQkFBa0IsQ0FBQyxTQUFvQixFQUFFLE9BQWUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQWtCLEVBQUUsU0FBa0I7UUFDN0csTUFBTSxHQUFHLEdBQUcscUJBQXFCLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pFLE9BQU87WUFDUCxJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFDeEIsUUFBUTtZQUNSLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQyxTQUFTLEVBQUUsU0FBUztZQUNwQixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ04sQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsU0FBcUI7UUFDMUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsU0FBcUI7UUFDbkQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsa0JBQWtCLENBQUMsU0FBb0IsRUFBRSxPQUFlLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFrQixFQUFFLFNBQWtCO1FBQzdHLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuRSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzFGLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxTQUFvQixFQUFFLFNBQWtEO1FBQzVFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FDdkIsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUNkLFFBQVEsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUM1QjtZQUNFLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDMUIsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hCLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7YUFDakMsQ0FBQyxDQUFDO1NBQ0osQ0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsY0FBYztRQUN6QyxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQyxJQUFJLEVBQUUsUUFBUTtZQUNkLFFBQVE7WUFDUixVQUFVLEVBQUUsY0FBYztTQUMzQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxpQkFBaUI7UUFDNUQsTUFBTSxHQUFHLEdBQUcsYUFBYSxFQUFFLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzNDLElBQUksRUFBRSxRQUFRO1lBQ2QsUUFBUTtZQUNSLFVBQVUsRUFBRSxjQUFjO1lBQzFCLGlCQUFpQixFQUFFLGlCQUFpQjtTQUNyQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsSUFBZTtRQUN0QixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsSUFBZTtRQUN4QixNQUFNLEdBQUcsR0FBRyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsU0FBb0I7UUFDN0MsTUFBTSxJQUFJLEdBQUc7WUFDWCxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDaEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO1lBQ3RCLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztZQUNsQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87WUFDMUIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQzVCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtZQUNwQixJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFFeEIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxlQUFlO1lBQ3hDLFNBQVMsRUFBRSxTQUFTLENBQUMsV0FBVztZQUNoQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFVBQVU7WUFDOUIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQzFCLGVBQWUsRUFBRSxTQUFTLENBQUMsZUFBZTtZQUUxQyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLEVBQUUsRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQzlCLElBQUksRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVE7Z0JBQ3RDLEtBQUssRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUs7Z0JBQ3BDLFdBQVcsRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLFdBQVc7YUFDakQsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUVSLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztZQUMxQixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFFNUIsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxzQkFBc0I7WUFDL0csUUFBUSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBRWpJLE1BQU0sRUFBRSxDQUFDO29CQUNQLFVBQVUsRUFBRTt3QkFDVixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUMvQixJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJO3dCQUMzQixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUMvQixRQUFRLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRO3dCQUNuQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPO3FCQUNsQztpQkFDRixDQUFDO1lBQ0YsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1lBQ3hCLFNBQVMsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUMxRCxXQUFXLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDOUQsWUFBWSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ2hFLFFBQVEsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUUvRCxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDdEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO1lBQ3RDLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxvQkFBb0I7U0FDckQsQ0FBQztRQUVGLElBQUksZUFBZSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUV0QyxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDOzt1R0FqaUJVLFVBQVU7MkdBQVYsVUFBVSxjQUZULE1BQU07MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RhcCwgbWVyZ2VNYXAsIGNhdGNoRXJyb3IsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEbXNPYmplY3QsIERtc09iamVjdEF0dGFjaG1lbnR9IGZyb20gJy4uLy4uL21vZGVsL2Rtcy1vYmplY3QubW9kZWwnO1xuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xuaW1wb3J0IHtTeXN0ZW1TZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XG5pbXBvcnQge0Rtc09iamVjdEhpc3RvcnlFbnRyeX0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC1oaXN0b3J5Lm1vZGVsJztcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtEbXNQYXJhbXN9IGZyb20gJy4vZG1zUGFyYW1zLmludGVyZmFjZSc7XG5cbmV4cG9ydCBlbnVtIFN1YnNjcmlwdGlvbk1vZGUge1xuICBPTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCA9ICdNRVRBJyxcbiAgT05MWV9ET0NVTUVOVF9DT05URU5UX0NIQU5HRUQgPSAnQ09OVEVOVCcsXG4gIERNU19PQkpFQ1RfQ0hBTkdFRCA9ICdCT1RIJ1xufVxuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgRE1TIFNlcnZpY2VzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERtc1NlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgZG1zIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcbiAgICogQHBhcmFtIHR5cGUgT2JqZWN0cyB0eXBlIG5hbWUsIHdpbGwgaW1wcm92ZSBsb2FkIHRpbWUgaWYgcHJvdmlkZWRcbiAgICogQHBhcmFtIHZlcnNpb24gVGFyZ2V0IHZlcnNpb25cbiAgICogQHBhcmFtIGludGVudCBVc2VkIGZvciBzZXJ2ZXIgc2lkZSBsb2dnaW5nLiBJZiB5b3UgcHJvdmlkZSBhbiBpbnRlbnQsIHRoZSBiYWNrZW5kIHdpbGwgcmVjb2duaXplIHRoZSByZXF1ZXN0IGFuZCBhZGQgaXQgdG8gaXRzIGxvZ3NcbiAgICogQHBhcmFtIHJlY3ljbGViaW4gSWYgdHJ1ZSwgb2JqZWN0cyBmcm9tIHJlY3ljbGViaW4gYXJlIGluY2x1ZGVkXG4gICAqIEBwYXJhbSB3aXRoU3RvcmFnZUluZm8gSWYgdHJ1ZSwgc3RvcmFnZWluZm8gaXMgaW5jbHVkZWQgb24gdGhlIGRtcyBvYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XG4gICAqL1xuICBnZXREbXNPYmplY3QoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgaW50ZW50Pzogc3RyaW5nLCByZWN5Y2xlYmluPzogYm9vbGVhbiwgd2l0aFN0b3JhZ2VJbmZvPzogYm9vbGVhbik6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH1gO1xuXG4gICAgY29uc3QgcSA9IHtcbiAgICAgIGFkZGl0aW9uYWx2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgc3Vic2NyaXB0aW9uOiAnQ1VSUkVOVCcsXG4gICAgICByZXN1Ym1pc3Npb246ICdDVVJSRU5UJyxcbiAgICAgIHJpZ2h0czogJ0NVUlJFTlQnLFxuICAgICAgZGF0YW1ldGE6ICd0cnVlJyxcbiAgICAgIGNvbnRleHRmb2xkZXI6ICd0cnVlJyxcbiAgICAgIHR5cGUsXG4gICAgICByZWN5Y2xlYmluLFxuICAgICAgdmVyc2lvbixcbiAgICAgIHN0b3JhZ2VpbmZvOiB3aXRoU3RvcmFnZUluZm8sXG4gICAgICAnX2ludGVudCc6IGludGVudFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0VmlhVGVtcENhY2hlKFV0aWxzLmJ1aWxkVXJpKHVyaSwgcSkpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpLFxuICAgICAgICBtYXAocmVzID0+IHRoaXMucmVzb2x2ZU9iamVjdFR5cGVzKG5ldyBEbXNPYmplY3QocmVzKSkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciBmb3IgdGhlIERNUyBPYmplY3RzIGJ5IHBhcmFtc1xuICAgKlxuICAgKiBAcGFyYW0gRG1zUGFyYW1zIHBhcmFtc1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cbiAgICovXG4gIGdldERtc09iamVjdEJ5UGFyYW1zKHBhcmFtczogRG1zUGFyYW1zKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREbXNPYmplY3QocGFyYW1zLmlkLCBwYXJhbXMudHlwZSwgcGFyYW1zLnZlcnNpb24sIHBhcmFtcy5pbnRlbnQsIHBhcmFtcy5yZWN5Y2xlYmluLCBwYXJhbXMud2l0aFN0b3JhZ2VJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW9sdmVyIG9mIE9iamVjdCBUeXBlcyBieSBETVMgT2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIERtc09iamVjdFxuICAgKi9cbiAgcmVzb2x2ZU9iamVjdFR5cGVzKGRtc09iamVjdDogRG1zT2JqZWN0KTogRG1zT2JqZWN0IHtcbiAgICBkbXNPYmplY3QudHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGRtc09iamVjdC50eXBlTmFtZSk7XG5cbiAgICBpZiAoZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIpIHtcbiAgICAgIGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRtc09iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgRE1TIG9iamVjdC5cbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgZG1zIG9iamVjdCB0byBiZSBkZWxldGVkLlxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIG9iamVjdFxuICAgKiBAcGFyYW0gaGFyZERlbGV0ZSBJZiBvYmplY3Qgc2hvdWxkIHJlYWxseSBiZSBkZWxldGVkIG9yIG9ubHkgcHV0IGludG8gdGhlIHJlY3ljbGUgYmluXG4gICAqIEBwYXJhbSBmb3JjZSBJZiBvYmplY3Qgc2hvdWxkIGJlIGZvcmNlZCB0byBiZSBkZWxldGVkLCBldmVuIGlmIGl0IGlzIHVzZWQgaW5zaWRlIG9mIGEgcHJvY2Vzcy4gRGVmYXVsdDogZmFsc2VcbiAgICovXG4gIGRlbGV0ZURtc09iamVjdChpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCBoYXJkRGVsZXRlPzogYm9vbGVhbiwgZm9yY2UgPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYC9kbXMvJHtpZH1gO1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIGlmICh0eXBlICYmIHR5cGUubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zWyd0eXBlJ10gPSB0eXBlO1xuICAgIH1cbiAgICBpZiAoaGFyZERlbGV0ZSkge1xuICAgICAgcGFyYW1zWydoYXJkZGVsZXRlJ10gPSBoYXJkRGVsZXRlO1xuICAgIH1cbiAgICBpZiAoZm9yY2UpIHtcbiAgICAgIHBhcmFtc1snZm9yY2VkZWxldGUnXSA9IGZvcmNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbChVdGlscy5idWlsZFVyaSh1cmwsIHBhcmFtcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgZ2l2ZW4gZG1zIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBvYmplY3QuXG4gICAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGggb2YgdGhlIGRtcyBvYmplY3RcbiAgICovXG4gIGdldENvbnRleHRQYXRoKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldChgL2Rtcy8ke2lkfS9jb250ZXh0YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgY29udGV4dFBhdGggPT4ge1xuICAgICAgICAgICAgY29udGV4dFBhdGguZm9yRWFjaChwYXRoSXRlbSA9PiB7XG4gICAgICAgICAgICAgIHBhdGhJdGVtLmRtc29iamVjdCA9IG5ldyBEbXNPYmplY3QocGF0aEl0ZW0uZG1zb2JqZWN0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHRQYXRoO1xuICAgICAgICAgIH1cbiAgICAgICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgY2hpbGRyZW4gb2YgYSBEbXNPYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RbXT5cbiAgICovXG4gIGdldENoaWxkcmVuKGRtc09iamVjdDogRG1zT2JqZWN0KTogT2JzZXJ2YWJsZTxEbXNPYmplY3RbXT4ge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7ZG1zT2JqZWN0LmlkfS9jaGlsZHJlbmA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogZG1zT2JqZWN0LnR5cGUubmFtZX0pKS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueVtdKSA9PiB7XG4gICAgICAgIHJldHVybiByZXMubWFwKHIgPT4gdGhpcy5yZXNvbHZlT2JqZWN0VHlwZXMobmV3IERtc09iamVjdChyKSkpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIHZlcnNpb25zIG9mIGEgRG1zT2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIHR5cGVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XG4gICAqL1xuICBnZXRWZXJzaW9ucyhpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfS92ZXJzaW9uc2A7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZX0pKS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IERtc09iamVjdChyZXMpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGF0dGFjaG1lbnRzIG9mIGEgRG1zT2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0QXR0YWNobWVudFtdPlxuICAgKi9cbiAgZ2V0QXR0YWNobWVudHMoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBPYnNlcnZhYmxlPERtc09iamVjdEF0dGFjaG1lbnRbXT4ge1xuICAgIGNvbnN0IHR5cGUgPSBkbXNPYmplY3QuY29udGVudD8udHlwZTtcbiAgICBjb25zdCB2ZXJzaW9uID0gZG1zT2JqZWN0LmNvbnRlbnQ/LmxpbmtlZCA/IC0xIDogZG1zT2JqZWN0LnZlcnNpb247XG4gICAgY29uc3QgY29udGVudElEID0gZG1zT2JqZWN0LmNvbnRlbnQ/LmlkO1xuICAgIGNvbnN0IHVyaSA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7Y29udGVudElEfS9hdHRhY2htZW50c2AsIHt0eXBlLCB2ZXJzaW9ufSk7XG4gICAgcmV0dXJuICFjb250ZW50SUQgPyBvZihbXSkgOiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKHVyaSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoVXRpbHMuY2F0Y2hTa2lwKGVyciA9PiBlcnIuc3RhdHVzID09PSA0MDQpKSxcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHJlcy5hdHRhY2htZW50aW5mbyAmJiByZXMuYXR0YWNobWVudGluZm8uYXR0YWNobWVudHMgPyByZXMuYXR0YWNobWVudGluZm8uYXR0YWNobWVudHNcbiAgICAgICAgLm1hcCgoYSwgaSkgPT4gbmV3IERtc09iamVjdEF0dGFjaG1lbnQoT2JqZWN0LmFzc2lnbihhLCB7aWQ6IGksIHByZXZpZXdVcmk6IHRoaXMuZ2V0QXR0YWNobWVudEJ5SW5kZXgoY29udGVudElELCBpLCB0eXBlLCB2ZXJzaW9uKX0pKSkgOiBbXVxuICAgICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgc3BlY2lmaWMgYXR0YWNobWVudCBvZiBhIERtc09iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiBAcGFyYW0gdmVyc2lvblxuICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICovXG4gIGdldEF0dGFjaG1lbnRCeUluZGV4KGlkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIHR5cGU6IHN0cmluZywgdmVyc2lvbj86IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgdXJpID0gVXRpbHMuYnVpbGRVcmkoYC9kbXMvJHtpZH0vYXR0YWNobWVudHMvJHtpbmRleH1gLCB7dHlwZSwgdmVyc2lvbn0pO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArIHVyaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIFVSSSBmb3IgZ2V0dGluZyBhIERtc09iamVjdHMgc2xpZGUgKFByZXZpZXcgaW1hZ2UpLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxuICAgKiBAcGFyYW0gdHlwZSBPYmplY3RzIHR5cGUgbmFtZSwgd2lsbCBpbXByb3ZlIGxvYWQgdGltZSBpZiBwcm92aWRlZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUYXJnZXQgdmVyc2lvblxuICAgKiBAcGFyYW0gc2l6ZSBUaGUgc2l6ZSBvZiB0aGUgcHJldmlldyBpbWFnZSBpbiBweFxuICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICovXG4gIGdldFNsaWRlKGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIHNpemU/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgJy9kbXMvJyArIGlkICsgJy9zbGlkZScsXG4gICAgICB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIGhlaWdodDogc2l6ZVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBVUkkgZm9yIGdldHRpbmcgYSBEbXNPYmplY3RzIHByZXZpZXcgKFBERiByZW5kaXRpb24pLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxuICAgKiBAcGFyYW0gdHlwZSBPYmplY3RzIHR5cGUgbmFtZSwgd2lsbCBpbXByb3ZlIGxvYWQgdGltZSBpZiBwcm92aWRlZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUYXJnZXQgdmVyc2lvblxuICAgKiBAcGFyYW0gcmVuZGl0aW9uIFRhcmdldCByZW5kaXRpb24gKFBERilcbiAgICogQHBhcmFtIHJlY3ljbGViaW4gSWYgdHJ1ZSwgb2JqZWN0cyBmcm9tIHJlY3ljbGViaW4gYXJlIGluY2x1ZGVkXG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZ2V0UHJldmlldyhpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCByZW5kaXRpb24/OiBzdHJpbmcsIHJlY3ljbGViaW4/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVXRpbHMuYnVpbGRVcmkoXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArICcvZG1zLycgKyBpZCArICcvY29udGVudCcsXG4gICAgICB7XG4gICAgICAgIHJlbmRpdGlvbixcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgcmVjeWNsZWJpblxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBhbiBleGlzdGluZyBkbXMgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIG9iamVjdCB0byBiZSB1cGRhdGVkXG4gICAqIEBwYXJhbSBpbmRleGRhdGEgT2JqZWN0IGhvbGRpbmcgdGhlIG9iamVjdHMgaW5kZXhkYXRhIChwcm9wZXJ0eTogdmFsdWUpXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBvYmplY3QgdHlwZSBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIHZlcnNpb24gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIGNoZWNrcmVmZXJlbmNlcyBJZiB0aGUgcmVmZXJlbmNlIGZpZWxkcyBzaG91bGQgYmUgdmFsaWRhdGVkIG9yIG5vdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD4gVGhlIHVwZGF0ZWQgZG1zIG9iamVjdFxuICAgKi9cbiAgdXBkYXRlT2JqZWN0KGlkOiBzdHJpbmcsIGluZGV4ZGF0YTogYW55LCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCBjaGVja3JlZmVyZW5jZXM/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShgL2Rtcy8ke2lkfWAsIHt0eXBlLCB2ZXJzaW9uLCBjaGVja3JlZmVyZW5jZXN9KTtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKDxhbnk+e2lkLCB0eXBlLCB0eXBlTmFtZTogdHlwZX0sIHRoaXMuYmFja2VuZC5wdXQodXJsLCBpbmRleGRhdGEpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgaGlzdG9yeSAoYXVkaXQpIG9mIG9uZSBkbXMgb2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgZG1zIG9iamVjdCB0byBmZXRjaCBoaXN0b3J5IGZvclxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGZldGNoIGhpc3RvcnkgZm9yXG4gICAqIEBwYXJhbSByZWN5Y2xlYmluIElmIHRydWUsIG9iamVjdHMgZnJvbSByZWN5Y2xlYmluIGFyZSBpbmNsdWRlZFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdEhpc3RvcnlFbnRyeVtdPiBUaGUgaGlzdG9yeSBvZiB0aGUgZG1zIG9iamVjdFxuICAgKi9cbiAgZ2V0SGlzdG9yeShpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCByZWN5Y2xlYmluPzogYm9vbGVhbik6IE9ic2VydmFibGU8RG1zT2JqZWN0SGlzdG9yeUVudHJ5W10+IHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfS9hdWRpdGA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRKc29uKFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGU6IHR5cGUsIHJlY3ljbGViaW46IHJlY3ljbGViaW59KSkucGlwZShtYXAoKHJlcykgPT4gcmVzLmF1ZGl0Lm1hcCgoYXVkaXRFbnRyeSkgPT4gbmV3IERtc09iamVjdEhpc3RvcnlFbnRyeShhdWRpdEVudHJ5KSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyBhbiBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIHNlbGVjdGVkIERtc09iamVjdCBieSBhZGRpbmcgdGhlIGVhcmxpZXIgdmVyc2lvblxuICAgKiBhcyB0aGUgbmV3IHJlY2VudCB2ZXJzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgRE1TIG9iamVjdCBpZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgdmVyc2lvbiB0byBiZSByZXN0b3JlZFxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZG1zIG9iamVjdCB0eXBlXG4gICAqIEByZXR1cm5cbiAgICovXG4gIHJlc3RvcmVWZXJzaW9uKGlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgdHlwZT86IHN0cmluZykge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3Jlc3RvcmV2ZXJzaW9uLyR7aWR9LyR7dmVyc2lvbn1gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlOiB0eXBlfSksIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gKiBSZXN0b3JlcyBGaWxlXG4gKiBAcGFyYW0gaWQgRE1TIG9iamVjdCBpZFxuICogQHBhcmFtIHR5cGUgVGhlIGRtcyBvYmplY3QgdHlwZVxuICogQHBhcmFtIHVzZXJJZCB1c2VyIGlkXG4gKiBAcmV0dXJuXG4gKi9cbiAgcmVzdG9yZShpZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZywgdHlwZT86IHN0cmluZykge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3Jlc3RvcmUvJHtpZH0/dXNlcmlkPSR7dXNlcklkfWA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQodXJpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBpZiBkbXNPYmplY3QgaXMgc3BlY2lmaWVkLCBsb2FkIGxhdGVzdCB2ZXJzaW9uIGFuZCB0cmlnZ2VyIEVuYWlvIGV2ZW50IERNU19PQkpFQ1RfVVBEQVRFRFxuICAgKlxuICAgKiBAcGFyYW0gZG1zT2JqZWN0XG4gICAqIEBwYXJhbSByZXF1ZXN0XG4gICAqIEByZXR1cm5cbiAgICovXG4gIHRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0OiBEbXNPYmplY3QsIHJlcXVlc3Q6IE9ic2VydmFibGU8YW55Pikge1xuICAgIHJldHVybiAhZG1zT2JqZWN0ID8gcmVxdWVzdCA6IHJlcXVlc3QucGlwZShcbiAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0RG1zT2JqZWN0KGRtc09iamVjdC5pZCwgZG1zT2JqZWN0LnR5cGVOYW1lKSksXG4gICAgICB0YXAoX2Rtc09iamVjdCA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVELCBfZG1zT2JqZWN0KSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBDb250ZW50XG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcmVtb3ZlQ29udGVudChkbXNPYmplY3Q6IERtc09iamVjdCkge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7ZG1zT2JqZWN0LmlkfS9jb250ZW50YDtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbCh1cmkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IERtc09iamVjdC5cbiAgICogQHBhcmFtIHRhcmdldFR5cGUgVGFyZ2V0IG9iamVjdCB0eXBlIG5hbWVcbiAgICogQHBhcmFtIGZpbGUgRmlsZSB0byBiZSBhZGRlZCBhcyBEbXNPYmplY3RzIGNvbnRlbnRcbiAgICogQHBhcmFtIGluZGV4RGF0YSBJbmRleGRhdGEgYXMgcGxhaW4gb2JqZWN0IHdoZXJlIGtleXMgYXJlIHRoZSBvYmplY3RzIHByb3BlcnRpZXMgYW5kIHZhbHVlcyB0aGUgdmFsdWVzIHRvIGJlIGFwcGxpZWQgdG8gaXRcbiAgICogQHBhcmFtIHBhcmVudCBQYXJlbnQgY29udGV4dCBmb2xkZXIgb2YgdGhlIG5ldyBEbXNPYmplY3RcbiAgICovXG4gIGNyZWF0ZURtc09iamVjdCh0YXJnZXRUeXBlOiBzdHJpbmcsIGZpbGU/OiBGaWxlLCBpbmRleERhdGE/OiBhbnksIHBhcmVudD86IHtpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nfSk6IE9ic2VydmFibGU8e2lkOiBzdHJpbmcsIHVyaTogc3RyaW5nfT4ge1xuXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBpZiAoaW5kZXhEYXRhKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2RhdGEnLCBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoaW5kZXhEYXRhKV0sIHtcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICB9KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnbm9pbmRleGRhdGEnLCAnJyk7XG4gICAgfVxuXG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZXNbXScsIGZpbGUsIFV0aWxzLmVuY29kZUZpbGVOYW1lKGZpbGUubmFtZSkpO1xuICAgIH1cblxuICAgIGxldCB1cmkgPSBgL2Rtcy9jcmVhdGUvJHt0YXJnZXRUeXBlfWA7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgdXJpID0gVXRpbHMuYnVpbGRVcmkodXJpLCB7XG4gICAgICAgIHBhcmVudElkOiBwYXJlbnQuaWQsXG4gICAgICAgIHBhcmVudFR5cGU6IHBhcmVudC50eXBlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0TXVsdGlQYXJ0KHVyaSwgZm9ybURhdGEsIG51bGwsIHtoZWFkZXJzOiB7fX0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIFN1YnNjcmlwdGlvblxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcGFyYW0gc3RyaW5nIHN1YmplY3RcbiAgICogQHBhcmFtIHJlY2VpdmVyXG4gICAqIEBwYXJhbSBib29sZWFuIHNlbmRlbWFpbFxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5ZW1haWxcbiAgICogQHBhcmFtIG1vZGUgU3Vic2NyaXB0aW9uTW9kZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIGNyZWF0ZVN1YnNjcmlwdGlvbihkbXNPYmplY3Q6IERtc09iamVjdCwgc3ViamVjdDogc3RyaW5nLCByZWNlaXZlciwgc2VuZGVtYWlsOiBib29sZWFuLCBvbmx5ZW1haWw6IGJvb2xlYW4sIG1vZGU/OiBTdWJzY3JpcHRpb25Nb2RlKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvc3Vic2NyaXB0aW9uLyR7ZG1zT2JqZWN0LmlkfWA7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xuICAgICAgc3ViamVjdCxcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcbiAgICAgIHJlY2VpdmVyLFxuICAgICAgc2VuZGVtYWlsLFxuICAgICAgb25seWVtYWlsLFxuICAgICAgbW9kZVxuICAgIH0pLCB7fSlcbiAgICApO1xuXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgUmVzdWJtaXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEBwYXJhbSBzdHJpbmcgc3ViamVjdFxuICAgKiBAcGFyYW0gZHVlXG4gICAqIEBwYXJhbSByZWNlaXZlclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzZW5kRW1haWxcbiAgICogQHBhcmFtIGJvb2xlYW4gb25seUVtYWlsXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgY3JlYXRlUmVzdWJtaXNzaW9uKGRtc09iamVjdDogRG1zT2JqZWN0LCBzdWJqZWN0OiBzdHJpbmcsIGR1ZSwgcmVjZWl2ZXIsIHNlbmRFbWFpbDogYm9vbGVhbiwgb25seUVtYWlsOiBib29sZWFuKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvcmVzdWJtaXNzaW9uLyR7ZG1zT2JqZWN0LmlkfWA7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xuICAgICAgc3ViamVjdCxcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcbiAgICAgIHJlY2VpdmVyLFxuICAgICAgZHVlOiBkdWUgPyBkdWUudG9JU09TdHJpbmcoKSA6ICcnLFxuICAgICAgc2VuZGVtYWlsOiBzZW5kRW1haWwsXG4gICAgICBvbmx5ZW1haWw6IG9ubHlFbWFpbFxuICAgIH0pLCB7fSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYW1vdmUgYSBTdWJzY3JpcHRpb24gYnkgYSBnaXZlbiBJZFxuICAgKlxuICAgKiBAcGFyYW0gc3Vic2NyaXB0aW9uSWRcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICByZW1vdmVTdWJzY3JpcHRpb25CeUlkKHN1YnNjcmlwdGlvbklkLCBkbXNPYmplY3Q/OiBEbXNPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbChgL21lc3NhZ2Vwcm92aWRlci9zdWJzY3JpcHRpb24vJHtzdWJzY3JpcHRpb25JZH1gKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgUmVzdWJtaXNzaW9uIGJ5IGEgZ2l2ZW4gSWRcbiAgICpcbiAgICogQHBhcmFtIGl0ZW1JZFxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHJlbW92ZVJlc3VibWlzc2lvbnNCeUlkKGl0ZW1JZCwgZG1zT2JqZWN0PzogRG1zT2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5kZWwoYC9kbXMvcmVzdWJtaXNzaW9uLyR7aXRlbUlkfWApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYSBSZXN1Ym1pc3Npb25cbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHBhcmFtIHN0cmluZyBzdWJqZWN0XG4gICAqIEBwYXJhbSBkdWVcbiAgICogQHBhcmFtIHJlY2VpdmVyXG4gICAqIEBwYXJhbSBib29sZWFuIHNlbmRFbWFpbFxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5RW1haWxcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICB1cGRhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0OiBEbXNPYmplY3QsIHN1YmplY3Q6IHN0cmluZywgZHVlLCByZWNlaXZlciwgc2VuZEVtYWlsOiBib29sZWFuLCBvbmx5RW1haWw6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVSZXN1Ym1pc3Npb25zQnlJZChkbXNPYmplY3QuaWQpLnBpcGUobWVyZ2VNYXAoKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmVzdWJtaXNzaW9uKGRtc09iamVjdCwgc3ViamVjdCwgZHVlLCByZWNlaXZlciwgc2VuZEVtYWlsLCBvbmx5RW1haWwpO1xuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaGFyZXMgYSBkbXMgb2JqZWN0IChhbmQgaXRzIGNoaWxkcmVuKSB3aXRoIGNlcnRhaW4gdXNlcnNcbiAgICogQHBhcmFtIGRtc09iamVjdCBUaGUgZG1zIG9iamVjdCB0byBiZSBzaGFyZWRcbiAgICogQHBhcmFtIHNoYXJlV2l0aCBBcnJheSBvZiBvcmdhbml6YXRpb24gb2JqZWN0cyB0byBzaGFyZSB0aGUgb2JqZWN0IHdpdGguIEVhY2ggZW50cnlcbiAgICogd2lsbCBoYXZlIHRoZSBJRCBvZiB0aGUgdGFyZ2V0IG9yZ2FuaXphdGlvbiBvYmplY3QgYXMgd2VsbCBhcyBhbiBvcHRpb25hbCBwYXJhbVxuICAgKiB3aGV0aGVyIG9yIG5vdCB0byBhbHNvIHNoYXJlIHRoZSBkbXMgb2JqZWN0cyBjaGlsZHJlbi5cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBiZWluZyByZXNvbHZlZCBvbmNlIHRoZSByZXF1ZXN0IGlzIGRvbmVcbiAgICovXG4gIHNoYXJlKGRtc09iamVjdDogRG1zT2JqZWN0LCBzaGFyZVdpdGg6IHtpZDogc3RyaW5nLCBzaGFyZUNoaWxkcmVuPzogYm9vbGVhbn1bXSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShcbiAgICAgIGRtc09iamVjdCxcbiAgICAgIHRoaXMuYmFja2VuZC5wdXQoXG4gICAgICAgIGAvZG1zLyR7ZG1zT2JqZWN0LmlkfS9zaGFyZWAsXG4gICAgICAgIHtcbiAgICAgICAgICBzaGFyZXM6IHNoYXJlV2l0aC5tYXAoaSA9PiAoe1xuICAgICAgICAgICAgb3JnYW5pemF0aW9ub2JqZWN0OiBpLmlkLFxuICAgICAgICAgICAgc2hhcmVjaGlsZHJlbjogISFpLnNoYXJlQ2hpbGRyZW5cbiAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSBhIERNUyBPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSB0eXBlTmFtZVxuICAgKiBAcGFyYW0gcGFyZW50SWRcbiAgICogQHBhcmFtIHBhcmVudFR5cGVOYW1lXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgbW92ZShpZCwgdHlwZU5hbWUsIHBhcmVudElkLCBwYXJlbnRUeXBlTmFtZSkge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL2xvY2F0aW9uLyR7aWR9YDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XG4gICAgICB0eXBlOiB0eXBlTmFtZSxcbiAgICAgIHBhcmVudElkLFxuICAgICAgcGFyZW50VHlwZTogcGFyZW50VHlwZU5hbWVcbiAgICB9KSwge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcHkgYSBETVMgT2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gdHlwZU5hbWVcbiAgICogQHBhcmFtIHBhcmVudElkXG4gICAqIEBwYXJhbSBwYXJlbnRUeXBlTmFtZVxuICAgKiBAcGFyYW0gY3JlYXRlQ29udGVudExpbmtcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBjb3B5KGlkLCB0eXBlTmFtZSwgcGFyZW50SWQsIHBhcmVudFR5cGVOYW1lLCBjcmVhdGVDb250ZW50TGluaykge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zL2NvcHkvJHtpZH1gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgIHR5cGU6IHR5cGVOYW1lLFxuICAgICAgcGFyZW50SWQsXG4gICAgICBwYXJlbnRUeXBlOiBwYXJlbnRUeXBlTmFtZSxcbiAgICAgIGNyZWF0ZWNvbnRlbnRsaW5rOiBjcmVhdGVDb250ZW50TGlua1xuICAgIH0pLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgRE1TIE9iamVjdCB0byBGaW5pbGl0ZWRcbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBpdGVtXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgZmluYWxpemUoaXRlbTogRG1zT2JqZWN0KSB7XG4gICAgY29uc3QgdXJsID0gJy9kbXMvZmluYWxpemUvJyArIGl0ZW0uaWQgKyAnP3R5cGU9JyArIGl0ZW0udHlwZU5hbWU7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShpdGVtLCB0aGlzLmJhY2tlbmQucHV0KHVybCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgRmluaWxpemVkIEZsYWcgZnJvbSBhIERNUyBPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBpdGVtXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgZGVmaW5hbGl6ZShpdGVtOiBEbXNPYmplY3QpIHtcbiAgICBjb25zdCB1cmwgPSAnL2Rtcy9kZWZpbmFsaXplLycgKyBpdGVtLmlkICsgJz90eXBlPScgKyBpdGVtLnR5cGVOYW1lO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoaXRlbSwgdGhpcy5iYWNrZW5kLnB1dCh1cmwpKTtcbiAgfVxuXG4gIGNyZWF0ZUxvY2FsQ29weU9mRE1TT2JqZWN0KGRtc09iamVjdDogRG1zT2JqZWN0KTogRG1zT2JqZWN0IHtcbiAgICBjb25zdCBiYXNlID0ge1xuICAgICAgaWQ6IGRtc09iamVjdC5pZCxcbiAgICAgIHRpdGxlOiBkbXNPYmplY3QudGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogZG1zT2JqZWN0LmRlc2NyaXB0aW9uLFxuICAgICAgdmVyc2lvbjogZG1zT2JqZWN0LnZlcnNpb24sXG4gICAgICB2ZXJzaW9uczogZG1zT2JqZWN0LnZlcnNpb25zLFxuICAgICAgZGF0YTogZG1zT2JqZWN0LmRhdGEsXG4gICAgICB0eXBlOiBkbXNPYmplY3QudHlwZU5hbWUsXG5cbiAgICAgIGFjdGl2ZXZlcnNpb246IGRtc09iamVjdC5pc0FjdGl2ZVZlcnNpb24sXG4gICAgICBmaW5hbGl6ZWQ6IGRtc09iamVjdC5pc0ZpbmFsaXplZCxcbiAgICAgIGZhdm9yaXRlOiBkbXNPYmplY3QuaXNGYXZvcml0ZSxcbiAgICAgIGZvbGRlcjogZG1zT2JqZWN0LmlzRm9sZGVyLFxuICAgICAgaXNjb250ZXh0Zm9sZGVyOiBkbXNPYmplY3QuaXNDb250ZXh0Rm9sZGVyLFxuXG4gICAgICBjb250ZXh0Zm9sZGVyOiBkbXNPYmplY3QuY29udGV4dEZvbGRlciA/IHtcbiAgICAgICAgaWQ6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLmlkLFxuICAgICAgICB0eXBlOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlTmFtZSxcbiAgICAgICAgdGl0bGU6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnRpdGxlLFxuICAgICAgICBkZXNjcmlwdGlvbjogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuZGVzY3JpcHRpb25cbiAgICAgIH0gOiBudWxsLFxuXG4gICAgICBjcmVhdGVkOiBkbXNPYmplY3QuY3JlYXRlZCxcbiAgICAgIG1vZGlmaWVkOiBkbXNPYmplY3QubW9kaWZpZWQsXG5cbiAgICAgIGxvY2s6ICFkbXNPYmplY3QubG9jayA/ICdOT1RfTE9DS0VEJyA6IGRtc09iamVjdC5sb2NrLmJ5Lm1lID8gJ0xPQ0tFRF9CWV9TRVNTSU9OX1VTRVInIDogJ0xPQ0tFRF9CWV9PVEhFUl9VU0VSJyxcbiAgICAgIGxvY2tpbmZvOiBkbXNPYmplY3QubG9jayA/IHt1c2VybmFtZTogZG1zT2JqZWN0LmxvY2suYnkubmFtZSwgdXNlcnRpdGxlOiBkbXNPYmplY3QubG9jay5ieS5sYWJlbCwgdGltZTogZG1zT2JqZWN0LmxvY2sub259IDogbnVsbCxcblxuICAgICAgcmlnaHRzOiBbe1xuICAgICAgICBwcml2aWxlZ2VzOiB7XG4gICAgICAgICAgc2VsZWN0OiBkbXNPYmplY3QucmlnaHRzLnNlbGVjdCxcbiAgICAgICAgICBlZGl0OiBkbXNPYmplY3QucmlnaHRzLmVkaXQsXG4gICAgICAgICAgZGVsZXRlOiBkbXNPYmplY3QucmlnaHRzLmRlbGV0ZSxcbiAgICAgICAgICBmaW5hbGl6ZTogZG1zT2JqZWN0LnJpZ2h0cy5maW5hbGl6ZSxcbiAgICAgICAgICByZWN5Y2xlOiBkbXNPYmplY3QucmlnaHRzLnJlY3ljbGVcbiAgICAgICAgfVxuICAgICAgfV0sXG4gICAgICBzaGFyZXM6IGRtc09iamVjdC5zaGFyZXMsXG4gICAgICBjb250ZW50aWQ6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQuaWQgOiBudWxsLFxuICAgICAgY29udGVudHR5cGU6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQudHlwZSA6IG51bGwsXG4gICAgICBjb250ZW50Y291bnQ6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQuY291bnQgOiBudWxsLFxuICAgICAgY29udGVudHM6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQuY29udGVudHMgOiBudWxsLFxuXG4gICAgICBzdWJzY3JpcHRpb25zOiBkbXNPYmplY3Quc3Vic2NyaXB0aW9ucyxcbiAgICAgIHJlc3VibWlzc2lvbnM6IGRtc09iamVjdC5yZXN1Ym1pc3Npb25zLFxuICAgICAgYWRkaXRpb25hbHZpc2liaWxpdHk6IGRtc09iamVjdC5hZGRpdGlvbmFsdmlzaWJpbGl0eVxuICAgIH07XG5cbiAgICBsZXQgY29waWVkRG1zT2JqZWN0ID0gbmV3IERtc09iamVjdChiYXNlKTtcbiAgICBjb3BpZWREbXNPYmplY3QudHlwZSA9IGRtc09iamVjdC50eXBlO1xuXG4gICAgcmV0dXJuIGNvcGllZERtc09iamVjdDtcbiAgfVxuXG59XG4iXX0=
|
|
507
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRzVFLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBSTVDLE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIsb0RBQWdDLENBQUE7SUFDaEMsNkRBQXlDLENBQUE7SUFDekMsK0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0I7QUFFRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFFdEM7O0dBRUc7QUFJSCxNQUFNLE9BQU8sVUFBVTtJQUVyQixZQUFvQixPQUF1QixFQUNqQyxhQUE0QixFQUM1QixZQUEwQjtRQUZoQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUNwQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILFlBQVksQ0FBQyxFQUFVLEVBQUUsSUFBYSxFQUFFLE9BQWdCLEVBQUUsTUFBZSxFQUFFLFVBQW9CLEVBQUUsZUFBeUI7UUFDeEgsTUFBTSxHQUFHLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUV6QixNQUFNLENBQUMsR0FBRztZQUNSLG9CQUFvQixFQUFFLElBQUk7WUFDMUIsWUFBWSxFQUFFLFNBQVM7WUFDdkIsWUFBWSxFQUFFLFNBQVM7WUFDdkIsTUFBTSxFQUFFLFNBQVM7WUFDakIsUUFBUSxFQUFFLE1BQU07WUFDaEIsYUFBYSxFQUFFLE1BQU07WUFDckIsSUFBSTtZQUNKLFVBQVU7WUFDVixPQUFPO1lBQ1AsV0FBVyxFQUFFLGVBQWU7WUFDNUIsU0FBUyxFQUFFLE1BQU07U0FDbEIsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDLElBQUksQ0FDSCxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFDdEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDeEQsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILG9CQUFvQixDQUFDLE1BQWlCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGtCQUFrQixDQUFDLFNBQW9CO1FBQ3JDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXRFLElBQUksU0FBUyxDQUFDLGFBQWEsRUFBRTtZQUMzQixTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25HO1FBRUQsT0FBTyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFDLEVBQVUsRUFBRSxJQUFhLEVBQUUsVUFBb0IsRUFBRSxLQUFLLEdBQUcsS0FBSztRQUM1RSxNQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxVQUFVLEVBQUU7WUFDZCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsVUFBVSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxLQUFLLEVBQUU7WUFDVCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYyxDQUFDLEVBQVU7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDO2FBQzFDLElBQUksQ0FDSCxHQUFHLENBQ0QsV0FBVyxDQUFDLEVBQUU7WUFDWixXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUM3QixRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsU0FBb0I7UUFDOUIsTUFBTSxHQUFHLEdBQUcsUUFBUSxTQUFTLENBQUMsRUFBRSxXQUFXLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3hGLEdBQUcsQ0FBQyxDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQ2pCLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUMsRUFBVSxFQUFFLElBQWE7UUFDbkMsTUFBTSxHQUFHLEdBQUcsUUFBUSxFQUFFLFdBQVcsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkUsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDZixPQUFPLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsU0FBb0I7UUFDakMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQ25FLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxTQUFTLGNBQWMsRUFBRSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNqRSxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFDdEQsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFdBQVc7YUFDcEcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzVJLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILG9CQUFvQixDQUFDLEVBQVUsRUFBRSxLQUFhLEVBQUUsSUFBWSxFQUFFLE9BQWdCO1FBQzVFLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGdCQUFnQixLQUFLLEVBQUUsRUFBRSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsUUFBUSxDQUFDLEVBQVUsRUFBRSxJQUFhLEVBQUUsT0FBZ0IsRUFBRSxJQUFhO1FBQ2pFLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsR0FBRyxPQUFPLEdBQUcsRUFBRSxHQUFHLFFBQVEsRUFDdkQ7WUFDRSxJQUFJO1lBQ0osT0FBTztZQUNQLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILFVBQVUsQ0FBQyxFQUFVLEVBQUUsSUFBYSxFQUFFLE9BQWdCLEVBQUUsU0FBa0IsRUFBRSxVQUFvQjtRQUM5RixPQUFPLEtBQUssQ0FBQyxRQUFRLENBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsT0FBTyxHQUFHLEVBQUUsR0FBRyxVQUFVLEVBQ3pEO1lBQ0UsU0FBUztZQUNULElBQUk7WUFDSixPQUFPO1lBQ1AsVUFBVTtTQUNYLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxZQUFZLENBQUMsRUFBVSxFQUFFLFNBQWMsRUFBRSxJQUFhLEVBQUUsT0FBZ0IsRUFBRSxlQUF5QjtRQUNqRyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQUM7UUFDM0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFNLEVBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxVQUFVLENBQUMsRUFBVSxFQUFFLElBQWEsRUFBRSxVQUFvQjtRQUN4RCxNQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUUsUUFBUSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUkscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEwsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsY0FBYyxDQUFDLEVBQVUsRUFBRSxPQUFlLEVBQUUsSUFBYTtRQUN2RCxNQUFNLEdBQUcsR0FBRyx1QkFBdUIsRUFBRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7Ozs7OztLQU1DO0lBQ0QsT0FBTyxDQUFDLEVBQVUsRUFBRSxNQUFjLEVBQUUsSUFBYTtRQUMvQyxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsRUFBRSxXQUFXLE1BQU0sRUFBRSxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGFBQWEsQ0FBQyxTQUFvQixFQUFFLE9BQXdCO1FBQzFELE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDeEMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDbkUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQUMsU0FBb0I7UUFDaEMsTUFBTSxHQUFHLEdBQUcsUUFBUSxTQUFTLENBQUMsRUFBRSxVQUFVLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxlQUFlLENBQUMsVUFBa0IsRUFBRSxJQUFXLEVBQUUsU0FBZSxFQUFFLE1BQW9DO1FBRXBHLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDaEMsSUFBSSxTQUFTLEVBQUU7WUFDYixRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRTtnQkFDNUQsSUFBSSxFQUFFLGtCQUFrQjthQUN6QixDQUFDLENBQUMsQ0FBQztTQUNMO2FBQU07WUFDTCxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNwQztRQUVELElBQUksSUFBSSxFQUFFO1lBQ1IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDbkU7UUFFRCxJQUFJLEdBQUcsR0FBRyxlQUFlLFVBQVUsRUFBRSxDQUFDO1FBQ3RDLElBQUksTUFBTSxFQUFFO1lBQ1YsR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO2dCQUN4QixRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ25CLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSTthQUN4QixDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBQyxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILGtCQUFrQixDQUFDLFNBQW9CLEVBQUUsT0FBZSxFQUFFLFFBQVEsRUFBRSxTQUFrQixFQUFFLFNBQWtCLEVBQUUsSUFBdUI7UUFDakksTUFBTSxHQUFHLEdBQUcscUJBQXFCLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pFLE9BQU87WUFDUCxJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFDeEIsUUFBUTtZQUNSLFNBQVM7WUFDVCxTQUFTO1lBQ1QsSUFBSTtTQUNMLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDTixDQUFDO0lBRUosQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxrQkFBa0IsQ0FBQyxTQUFvQixFQUFFLE9BQWUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQWtCLEVBQUUsU0FBa0I7UUFDN0csTUFBTSxHQUFHLEdBQUcscUJBQXFCLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3pFLE9BQU87WUFDUCxJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFDeEIsUUFBUTtZQUNSLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNqQyxTQUFTLEVBQUUsU0FBUztZQUNwQixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ04sQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsU0FBcUI7UUFDMUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsU0FBcUI7UUFDbkQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsa0JBQWtCLENBQUMsU0FBb0IsRUFBRSxPQUFlLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFrQixFQUFFLFNBQWtCO1FBQzdHLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuRSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzFGLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxTQUFvQixFQUFFLFNBQWtEO1FBQzVFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FDdkIsU0FBUyxFQUNULElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUNkLFFBQVEsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUM1QjtZQUNFLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDMUIsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hCLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7YUFDakMsQ0FBQyxDQUFDO1NBQ0osQ0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsY0FBYztRQUN6QyxNQUFNLEdBQUcsR0FBRyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQyxJQUFJLEVBQUUsUUFBUTtZQUNkLFFBQVE7WUFDUixVQUFVLEVBQUUsY0FBYztTQUMzQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxpQkFBaUI7UUFDNUQsTUFBTSxHQUFHLEdBQUcsYUFBYSxFQUFFLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzNDLElBQUksRUFBRSxRQUFRO1lBQ2QsUUFBUTtZQUNSLFVBQVUsRUFBRSxjQUFjO1lBQzFCLGlCQUFpQixFQUFFLGlCQUFpQjtTQUNyQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsSUFBZTtRQUN0QixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsSUFBZTtRQUN4QixNQUFNLEdBQUcsR0FBRyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsU0FBb0I7UUFDN0MsTUFBTSxJQUFJLEdBQUc7WUFDWCxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDaEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO1lBQ3RCLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVztZQUNsQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87WUFDMUIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQzVCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtZQUNwQixJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFFeEIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxlQUFlO1lBQ3hDLFNBQVMsRUFBRSxTQUFTLENBQUMsV0FBVztZQUNoQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFVBQVU7WUFDOUIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQzFCLGVBQWUsRUFBRSxTQUFTLENBQUMsZUFBZTtZQUUxQyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLEVBQUUsRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQzlCLElBQUksRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVE7Z0JBQ3RDLEtBQUssRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUs7Z0JBQ3BDLFdBQVcsRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLFdBQVc7YUFDakQsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUVSLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztZQUMxQixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7WUFFNUIsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxzQkFBc0I7WUFDL0csUUFBUSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBRWpJLE1BQU0sRUFBRSxDQUFDO29CQUNQLFVBQVUsRUFBRTt3QkFDVixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUMvQixJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJO3dCQUMzQixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNO3dCQUMvQixRQUFRLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRO3dCQUNuQyxPQUFPLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPO3FCQUNsQztpQkFDRixDQUFDO1lBQ0YsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1lBQ3hCLFNBQVMsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUMxRCxXQUFXLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDOUQsWUFBWSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ2hFLFFBQVEsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUUvRCxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDdEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO1lBQ3RDLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxvQkFBb0I7U0FDckQsQ0FBQztRQUVGLElBQUksZUFBZSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztRQUV0QyxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDOzt1R0FqaUJVLFVBQVU7MkdBQVYsVUFBVSxjQUZULE1BQU07MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3RhcCwgbWVyZ2VNYXAsIGNhdGNoRXJyb3IsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEbXNPYmplY3QsIERtc09iamVjdEF0dGFjaG1lbnR9IGZyb20gJy4uLy4uL21vZGVsL2Rtcy1vYmplY3QubW9kZWwnO1xuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xuaW1wb3J0IHtTeXN0ZW1TZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XG5pbXBvcnQge0Rtc09iamVjdEhpc3RvcnlFbnRyeX0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC1oaXN0b3J5Lm1vZGVsJztcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtEbXNQYXJhbXN9IGZyb20gJy4vZG1zUGFyYW1zLmludGVyZmFjZSc7XG5cbmV4cG9ydCBlbnVtIFN1YnNjcmlwdGlvbk1vZGUge1xuICBPTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCA9ICdNRVRBJyxcbiAgT05MWV9ET0NVTUVOVF9DT05URU5UX0NIQU5HRUQgPSAnQ09OVEVOVCcsXG4gIERNU19PQkpFQ1RfQ0hBTkdFRCA9ICdCT1RIJ1xufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZU9iamVjdFJpZ2h0cyA9IFtdO1xuXG4vKipcbiAqIENvbGxlY3Rpb24gb2YgRE1TIFNlcnZpY2VzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERtc1NlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIGEgZG1zIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcbiAgICogQHBhcmFtIHR5cGUgT2JqZWN0cyB0eXBlIG5hbWUsIHdpbGwgaW1wcm92ZSBsb2FkIHRpbWUgaWYgcHJvdmlkZWRcbiAgICogQHBhcmFtIHZlcnNpb24gVGFyZ2V0IHZlcnNpb25cbiAgICogQHBhcmFtIGludGVudCBVc2VkIGZvciBzZXJ2ZXIgc2lkZSBsb2dnaW5nLiBJZiB5b3UgcHJvdmlkZSBhbiBpbnRlbnQsIHRoZSBiYWNrZW5kIHdpbGwgcmVjb2duaXplIHRoZSByZXF1ZXN0IGFuZCBhZGQgaXQgdG8gaXRzIGxvZ3NcbiAgICogQHBhcmFtIHJlY3ljbGViaW4gSWYgdHJ1ZSwgb2JqZWN0cyBmcm9tIHJlY3ljbGViaW4gYXJlIGluY2x1ZGVkXG4gICAqIEBwYXJhbSB3aXRoU3RvcmFnZUluZm8gSWYgdHJ1ZSwgc3RvcmFnZWluZm8gaXMgaW5jbHVkZWQgb24gdGhlIGRtcyBvYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XG4gICAqL1xuICBnZXREbXNPYmplY3QoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgaW50ZW50Pzogc3RyaW5nLCByZWN5Y2xlYmluPzogYm9vbGVhbiwgd2l0aFN0b3JhZ2VJbmZvPzogYm9vbGVhbik6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH1gO1xuXG4gICAgY29uc3QgcSA9IHtcbiAgICAgIGFkZGl0aW9uYWx2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgc3Vic2NyaXB0aW9uOiAnQ1VSUkVOVCcsXG4gICAgICByZXN1Ym1pc3Npb246ICdDVVJSRU5UJyxcbiAgICAgIHJpZ2h0czogJ0NVUlJFTlQnLFxuICAgICAgZGF0YW1ldGE6ICd0cnVlJyxcbiAgICAgIGNvbnRleHRmb2xkZXI6ICd0cnVlJyxcbiAgICAgIHR5cGUsXG4gICAgICByZWN5Y2xlYmluLFxuICAgICAgdmVyc2lvbixcbiAgICAgIHN0b3JhZ2VpbmZvOiB3aXRoU3RvcmFnZUluZm8sXG4gICAgICAnX2ludGVudCc6IGludGVudFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0VmlhVGVtcENhY2hlKFV0aWxzLmJ1aWxkVXJpKHVyaSwgcSkpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpLFxuICAgICAgICBtYXAocmVzID0+IHRoaXMucmVzb2x2ZU9iamVjdFR5cGVzKG5ldyBEbXNPYmplY3QocmVzKSkpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciBmb3IgdGhlIERNUyBPYmplY3RzIGJ5IHBhcmFtc1xuICAgKlxuICAgKiBAcGFyYW0gRG1zUGFyYW1zIHBhcmFtc1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cbiAgICovXG4gIGdldERtc09iamVjdEJ5UGFyYW1zKHBhcmFtczogRG1zUGFyYW1zKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREbXNPYmplY3QocGFyYW1zLmlkLCBwYXJhbXMudHlwZSwgcGFyYW1zLnZlcnNpb24sIHBhcmFtcy5pbnRlbnQsIHBhcmFtcy5yZWN5Y2xlYmluLCBwYXJhbXMud2l0aFN0b3JhZ2VJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW9sdmVyIG9mIE9iamVjdCBUeXBlcyBieSBETVMgT2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIERtc09iamVjdFxuICAgKi9cbiAgcmVzb2x2ZU9iamVjdFR5cGVzKGRtc09iamVjdDogRG1zT2JqZWN0KTogRG1zT2JqZWN0IHtcbiAgICBkbXNPYmplY3QudHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGRtc09iamVjdC50eXBlTmFtZSk7XG5cbiAgICBpZiAoZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIpIHtcbiAgICAgIGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVPYmplY3RSaWdodHMucmVkdWNlKCh2YWx1ZSwgZm4pID0+IGZuLmNhbGwodGhpcywgdmFsdWUpLCBkbXNPYmplY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSBETVMgb2JqZWN0LlxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuXG4gICAqIEBwYXJhbSB0eXBlIFR5cGUgb2Ygb2JqZWN0XG4gICAqIEBwYXJhbSBoYXJkRGVsZXRlIElmIG9iamVjdCBzaG91bGQgcmVhbGx5IGJlIGRlbGV0ZWQgb3Igb25seSBwdXQgaW50byB0aGUgcmVjeWNsZSBiaW5cbiAgICogQHBhcmFtIGZvcmNlIElmIG9iamVjdCBzaG91bGQgYmUgZm9yY2VkIHRvIGJlIGRlbGV0ZWQsIGV2ZW4gaWYgaXQgaXMgdXNlZCBpbnNpZGUgb2YgYSBwcm9jZXNzLiBEZWZhdWx0OiBmYWxzZVxuICAgKi9cbiAgZGVsZXRlRG1zT2JqZWN0KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIGhhcmREZWxldGU/OiBib29sZWFuLCBmb3JjZSA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgL2Rtcy8ke2lkfWA7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgaWYgKHR5cGUgJiYgdHlwZS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXNbJ3R5cGUnXSA9IHR5cGU7XG4gICAgfVxuICAgIGlmIChoYXJkRGVsZXRlKSB7XG4gICAgICBwYXJhbXNbJ2hhcmRkZWxldGUnXSA9IGhhcmREZWxldGU7XG4gICAgfVxuICAgIGlmIChmb3JjZSkge1xuICAgICAgcGFyYW1zWydmb3JjZWRlbGV0ZSddID0gZm9yY2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZGVsKFV0aWxzLmJ1aWxkVXJpKHVybCwgcGFyYW1zKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29udGV4dCBwYXRoIG9mIHRoZSBnaXZlbiBkbXMgb2JqZWN0XG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIG9iamVjdC5cbiAgICogQHJldHVybnMgVGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgZG1zIG9iamVjdFxuICAgKi9cbiAgZ2V0Q29udGV4dFBhdGgoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0KGAvZG1zLyR7aWR9L2NvbnRleHRgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICBjb250ZXh0UGF0aCA9PiB7XG4gICAgICAgICAgICBjb250ZXh0UGF0aC5mb3JFYWNoKHBhdGhJdGVtID0+IHtcbiAgICAgICAgICAgICAgcGF0aEl0ZW0uZG1zb2JqZWN0ID0gbmV3IERtc09iamVjdChwYXRoSXRlbS5kbXNvYmplY3QpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gY29udGV4dFBhdGg7XG4gICAgICAgICAgfVxuICAgICAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBjaGlsZHJlbiBvZiBhIERtc09iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIGRtc09iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdFtdPlxuICAgKi9cbiAgZ2V0Q2hpbGRyZW4oZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBPYnNlcnZhYmxlPERtc09iamVjdFtdPiB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtkbXNPYmplY3QuaWR9L2NoaWxkcmVuYDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZShVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlOiBkbXNPYmplY3QudHlwZS5uYW1lfSkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55W10pID0+IHtcbiAgICAgICAgcmV0dXJuIHJlcy5tYXAociA9PiB0aGlzLnJlc29sdmVPYmplY3RUeXBlcyhuZXcgRG1zT2JqZWN0KHIpKSk7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgdmVyc2lvbnMgb2YgYSBEbXNPYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cbiAgICovXG4gIGdldFZlcnNpb25zKGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7aWR9L3ZlcnNpb25zYDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldFZpYVRlbXBDYWNoZShVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlfSkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRG1zT2JqZWN0KHJlcyk7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgYXR0YWNobWVudHMgb2YgYSBEbXNPYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RBdHRhY2htZW50W10+XG4gICAqL1xuICBnZXRBdHRhY2htZW50cyhkbXNPYmplY3Q6IERtc09iamVjdCk6IE9ic2VydmFibGU8RG1zT2JqZWN0QXR0YWNobWVudFtdPiB7XG4gICAgY29uc3QgdHlwZSA9IGRtc09iamVjdC5jb250ZW50Py50eXBlO1xuICAgIGNvbnN0IHZlcnNpb24gPSBkbXNPYmplY3QuY29udGVudD8ubGlua2VkID8gLTEgOiBkbXNPYmplY3QudmVyc2lvbjtcbiAgICBjb25zdCBjb250ZW50SUQgPSBkbXNPYmplY3QuY29udGVudD8uaWQ7XG4gICAgY29uc3QgdXJpID0gVXRpbHMuYnVpbGRVcmkoYC9kbXMvJHtjb250ZW50SUR9L2F0dGFjaG1lbnRzYCwge3R5cGUsIHZlcnNpb259KTtcbiAgICByZXR1cm4gIWNvbnRlbnRJRCA/IG9mKFtdKSA6IHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUodXJpKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpLFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4gcmVzLmF0dGFjaG1lbnRpbmZvICYmIHJlcy5hdHRhY2htZW50aW5mby5hdHRhY2htZW50cyA/IHJlcy5hdHRhY2htZW50aW5mby5hdHRhY2htZW50c1xuICAgICAgICAubWFwKChhLCBpKSA9PiBuZXcgRG1zT2JqZWN0QXR0YWNobWVudChPYmplY3QuYXNzaWduKGEsIHtpZDogaSwgcHJldmlld1VyaTogdGhpcy5nZXRBdHRhY2htZW50QnlJbmRleChjb250ZW50SUQsIGksIHR5cGUsIHZlcnNpb24pfSkpKSA6IFtdXG4gICAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBzcGVjaWZpYyBhdHRhY2htZW50IG9mIGEgRG1zT2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIGluZGV4XG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEBwYXJhbSB2ZXJzaW9uXG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZ2V0QXR0YWNobWVudEJ5SW5kZXgoaWQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgdHlwZTogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmkgPSBVdGlscy5idWlsZFVyaShgL2Rtcy8ke2lkfS9hdHRhY2htZW50cy8ke2luZGV4fWAsIHt0eXBlLCB2ZXJzaW9ufSk7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgdXJpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgVVJJIGZvciBnZXR0aW5nIGEgRG1zT2JqZWN0cyBzbGlkZSAoUHJldmlldyBpbWFnZSkuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBPYmplY3RzIGlkXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdHMgdHlwZSBuYW1lLCB3aWxsIGltcHJvdmUgbG9hZCB0aW1lIGlmIHByb3ZpZGVkXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRhcmdldCB2ZXJzaW9uXG4gICAqIEBwYXJhbSBzaXplIFRoZSBzaXplIG9mIHRoZSBwcmV2aWV3IGltYWdlIGluIHB4XG4gICAqIEByZXR1cm5zIHN0cmluZ1xuICAgKi9cbiAgZ2V0U2xpZGUoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgc2l6ZT86IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFV0aWxzLmJ1aWxkVXJpKFxuICAgICAgdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkgKyAnL2Rtcy8nICsgaWQgKyAnL3NsaWRlJyxcbiAgICAgIHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgaGVpZ2h0OiBzaXplXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIFVSSSBmb3IgZ2V0dGluZyBhIERtc09iamVjdHMgcHJldmlldyAoUERGIHJlbmRpdGlvbikuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBPYmplY3RzIGlkXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdHMgdHlwZSBuYW1lLCB3aWxsIGltcHJvdmUgbG9hZCB0aW1lIGlmIHByb3ZpZGVkXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRhcmdldCB2ZXJzaW9uXG4gICAqIEBwYXJhbSByZW5kaXRpb24gVGFyZ2V0IHJlbmRpdGlvbiAoUERGKVxuICAgKiBAcGFyYW0gcmVjeWNsZWJpbiBJZiB0cnVlLCBvYmplY3RzIGZyb20gcmVjeWNsZWJpbiBhcmUgaW5jbHVkZWRcbiAgICogQHJldHVybnMgc3RyaW5nXG4gICAqL1xuICBnZXRQcmV2aWV3KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIHJlbmRpdGlvbj86IHN0cmluZywgcmVjeWNsZWJpbj86IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgJy9kbXMvJyArIGlkICsgJy9jb250ZW50JyxcbiAgICAgIHtcbiAgICAgICAgcmVuZGl0aW9uLFxuICAgICAgICB0eXBlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICByZWN5Y2xlYmluXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGRtcyBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIGluZGV4ZGF0YSBPYmplY3QgaG9sZGluZyB0aGUgb2JqZWN0cyBpbmRleGRhdGEgKHByb3BlcnR5OiB2YWx1ZSlcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxuICAgKiBAcGFyYW0gY2hlY2tyZWZlcmVuY2VzIElmIHRoZSByZWZlcmVuY2UgZmllbGRzIHNob3VsZCBiZSB2YWxpZGF0ZWQgb3Igbm90XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PiBUaGUgdXBkYXRlZCBkbXMgb2JqZWN0XG4gICAqL1xuICB1cGRhdGVPYmplY3QoaWQ6IHN0cmluZywgaW5kZXhkYXRhOiBhbnksIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIGNoZWNrcmVmZXJlbmNlcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xuICAgIGNvbnN0IHVybCA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7aWR9YCwge3R5cGUsIHZlcnNpb24sIGNoZWNrcmVmZXJlbmNlc30pO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoPGFueT57aWQsIHR5cGUsIHR5cGVOYW1lOiB0eXBlfSwgdGhpcy5iYWNrZW5kLnB1dCh1cmwsIGluZGV4ZGF0YSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBoaXN0b3J5IChhdWRpdCkgb2Ygb25lIGRtcyBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGlkIElEIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGZldGNoIGhpc3RvcnkgZm9yXG4gICAqIEBwYXJhbSB0eXBlIFR5cGUgb2YgdGhlIGRtcyBvYmplY3QgdG8gZmV0Y2ggaGlzdG9yeSBmb3JcbiAgICogQHBhcmFtIHJlY3ljbGViaW4gSWYgdHJ1ZSwgb2JqZWN0cyBmcm9tIHJlY3ljbGViaW4gYXJlIGluY2x1ZGVkXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0SGlzdG9yeUVudHJ5W10+IFRoZSBoaXN0b3J5IG9mIHRoZSBkbXMgb2JqZWN0XG4gICAqL1xuICBnZXRIaXN0b3J5KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHJlY3ljbGViaW4/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxEbXNPYmplY3RIaXN0b3J5RW50cnlbXT4ge1xuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7aWR9L2F1ZGl0YDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEpzb24oVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogdHlwZSwgcmVjeWNsZWJpbjogcmVjeWNsZWJpbn0pKS5waXBlKG1hcCgocmVzKSA9PiByZXMuYXVkaXQubWFwKChhdWRpdEVudHJ5KSA9PiBuZXcgRG1zT2JqZWN0SGlzdG9yeUVudHJ5KGF1ZGl0RW50cnkpKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGUgc2VsZWN0ZWQgRG1zT2JqZWN0IGJ5IGFkZGluZyB0aGUgZWFybGllciB2ZXJzaW9uXG4gICAqIGFzIHRoZSBuZXcgcmVjZW50IHZlcnNpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpZCBETVMgb2JqZWN0IGlkXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIHRvIGJlIHJlc3RvcmVkXG4gICAqIEBwYXJhbSB0eXBlIFRoZSBkbXMgb2JqZWN0IHR5cGVcbiAgICogQHJldHVyblxuICAgKi9cbiAgcmVzdG9yZVZlcnNpb24oaWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyLCB0eXBlPzogc3RyaW5nKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvcmVzdG9yZXZlcnNpb24vJHtpZH0vJHt2ZXJzaW9ufWA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGU6IHR5cGV9KSwgbnVsbCk7XG4gIH1cblxuICAvKipcbiAqIFJlc3RvcmVzIEZpbGVcbiAqIEBwYXJhbSBpZCBETVMgb2JqZWN0IGlkXG4gKiBAcGFyYW0gdHlwZSBUaGUgZG1zIG9iamVjdCB0eXBlXG4gKiBAcGFyYW0gdXNlcklkIHVzZXIgaWRcbiAqIEByZXR1cm5cbiAqL1xuICByZXN0b3JlKGlkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvcmVzdG9yZS8ke2lkfT91c2VyaWQ9JHt1c2VySWR9YDtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dCh1cmkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGlmIGRtc09iamVjdCBpcyBzcGVjaWZpZWQsIGxvYWQgbGF0ZXN0IHZlcnNpb24gYW5kIHRyaWdnZXIgRW5haW8gZXZlbnQgRE1TX09CSkVDVF9VUERBVEVEXG4gICAqXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcbiAgICogQHBhcmFtIHJlcXVlc3RcbiAgICogQHJldHVyblxuICAgKi9cbiAgdHJpZ2dlclVwZGF0ZShkbXNPYmplY3Q6IERtc09iamVjdCwgcmVxdWVzdDogT2JzZXJ2YWJsZTxhbnk+KSB7XG4gICAgcmV0dXJuICFkbXNPYmplY3QgPyByZXF1ZXN0IDogcmVxdWVzdC5waXBlKFxuICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXREbXNPYmplY3QoZG1zT2JqZWN0LmlkLCBkbXNPYmplY3QudHlwZU5hbWUpKSxcbiAgICAgIHRhcChfZG1zT2JqZWN0ID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQsIF9kbXNPYmplY3QpKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIENvbnRlbnRcbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICByZW1vdmVDb250ZW50KGRtc09iamVjdDogRG1zT2JqZWN0KSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtkbXNPYmplY3QuaWR9L2NvbnRlbnRgO1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQuZGVsKHVyaSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgRG1zT2JqZWN0LlxuICAgKiBAcGFyYW0gdGFyZ2V0VHlwZSBUYXJnZXQgb2JqZWN0IHR5cGUgbmFtZVxuICAgKiBAcGFyYW0gZmlsZSBGaWxlIHRvIGJlIGFkZGVkIGFzIERtc09iamVjdHMgY29udGVudFxuICAgKiBAcGFyYW0gaW5kZXhEYXRhIEluZGV4ZGF0YSBhcyBwbGFpbiBvYmplY3Qgd2hlcmUga2V5cyBhcmUgdGhlIG9iamVjdHMgcHJvcGVydGllcyBhbmQgdmFsdWVzIHRoZSB2YWx1ZXMgdG8gYmUgYXBwbGllZCB0byBpdFxuICAgKiBAcGFyYW0gcGFyZW50IFBhcmVudCBjb250ZXh0IGZvbGRlciBvZiB0aGUgbmV3IERtc09iamVjdFxuICAgKi9cbiAgY3JlYXRlRG1zT2JqZWN0KHRhcmdldFR5cGU6IHN0cmluZywgZmlsZT86IEZpbGUsIGluZGV4RGF0YT86IGFueSwgcGFyZW50Pzoge2lkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmd9KTogT2JzZXJ2YWJsZTx7aWQ6IHN0cmluZywgdXJpOiBzdHJpbmd9PiB7XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGlmIChpbmRleERhdGEpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZGF0YScsIG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShpbmRleERhdGEpXSwge1xuICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdub2luZGV4ZGF0YScsICcnKTtcbiAgICB9XG5cbiAgICBpZiAoZmlsZSkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlc1tdJywgZmlsZSwgVXRpbHMuZW5jb2RlRmlsZU5hbWUoZmlsZS5uYW1lKSk7XG4gICAgfVxuXG4gICAgbGV0IHVyaSA9IGAvZG1zL2NyZWF0ZS8ke3RhcmdldFR5cGV9YDtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB1cmkgPSBVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgICAgcGFyZW50SWQ6IHBhcmVudC5pZCxcbiAgICAgICAgcGFyZW50VHlwZTogcGFyZW50LnR5cGVcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3RNdWx0aVBhcnQodXJpLCBmb3JtRGF0YSwgbnVsbCwge2hlYWRlcnM6IHt9fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgU3Vic2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEBwYXJhbSBzdHJpbmcgc3ViamVjdFxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2VuZGVtYWlsXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHllbWFpbFxuICAgKiBAcGFyYW0gbW9kZSBTdWJzY3JpcHRpb25Nb2RlXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgY3JlYXRlU3Vic2NyaXB0aW9uKGRtc09iamVjdDogRG1zT2JqZWN0LCBzdWJqZWN0OiBzdHJpbmcsIHJlY2VpdmVyLCBzZW5kZW1haWw6IGJvb2xlYW4sIG9ubHllbWFpbDogYm9vbGVhbiwgbW9kZT86IFN1YnNjcmlwdGlvbk1vZGUpIHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9zdWJzY3JpcHRpb24vJHtkbXNPYmplY3QuaWR9YDtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XG4gICAgICBzdWJqZWN0LFxuICAgICAgdHlwZTogZG1zT2JqZWN0LnR5cGVOYW1lLFxuICAgICAgcmVjZWl2ZXIsXG4gICAgICBzZW5kZW1haWwsXG4gICAgICBvbmx5ZW1haWwsXG4gICAgICBtb2RlXG4gICAgfSksIHt9KVxuICAgICk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBSZXN1Ym1pc3Npb25cbiAgICpcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcbiAgICogQHBhcmFtIHN0cmluZyBzdWJqZWN0XG4gICAqIEBwYXJhbSBkdWVcbiAgICogQHBhcmFtIHJlY2VpdmVyXG4gICAqIEBwYXJhbSBib29sZWFuIHNlbmRFbWFpbFxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5RW1haWxcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBjcmVhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0OiBEbXNPYmplY3QsIHN1YmplY3Q6IHN0cmluZywgZHVlLCByZWNlaXZlciwgc2VuZEVtYWlsOiBib29sZWFuLCBvbmx5RW1haWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9yZXN1Ym1pc3Npb24vJHtkbXNPYmplY3QuaWR9YDtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XG4gICAgICBzdWJqZWN0LFxuICAgICAgdHlwZTogZG1zT2JqZWN0LnR5cGVOYW1lLFxuICAgICAgcmVjZWl2ZXIsXG4gICAgICBkdWU6IGR1ZSA/IGR1ZS50b0lTT1N0cmluZygpIDogJycsXG4gICAgICBzZW5kZW1haWw6IHNlbmRFbWFpbCxcbiAgICAgIG9ubHllbWFpbDogb25seUVtYWlsXG4gICAgfSksIHt9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVhbW92ZSBhIFN1YnNjcmlwdGlvbiBieSBhIGdpdmVuIElkXG4gICAqXG4gICAqIEBwYXJhbSBzdWJzY3JpcHRpb25JZFxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHJlbW92ZVN1YnNjcmlwdGlvbkJ5SWQoc3Vic2NyaXB0aW9uSWQsIGRtc09iamVjdD86IERtc09iamVjdCkge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQuZGVsKGAvbWVzc2FnZXByb3ZpZGVyL3N1YnNjcmlwdGlvbi8ke3N1YnNjcmlwdGlvbklkfWApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBSZXN1Ym1pc3Npb24gYnkgYSBnaXZlbiBJZFxuICAgKlxuICAgKiBAcGFyYW0gaXRlbUlkXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxuICAgKi9cbiAgcmVtb3ZlUmVzdWJtaXNzaW9uc0J5SWQoaXRlbUlkLCBkbXNPYmplY3Q/OiBEbXNPYmplY3QpIHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbChgL2Rtcy9yZXN1Ym1pc3Npb24vJHtpdGVtSWR9YCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhIFJlc3VibWlzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxuICAgKiBAcGFyYW0gc3RyaW5nIHN1YmplY3RcbiAgICogQHBhcmFtIGR1ZVxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2VuZEVtYWlsXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHlFbWFpbFxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIHVwZGF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3Q6IERtc09iamVjdCwgc3ViamVjdDogc3RyaW5nLCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWw6IGJvb2xlYW4sIG9ubHlFbWFpbDogYm9vbGVhbikge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZVJlc3VibWlzc2lvbnNCeUlkKGRtc09iamVjdC5pZCkucGlwZShtZXJnZU1hcCgoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0LCBzdWJqZWN0LCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWwsIG9ubHlFbWFpbCk7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNoYXJlcyBhIGRtcyBvYmplY3QgKGFuZCBpdHMgY2hpbGRyZW4pIHdpdGggY2VydGFpbiB1c2Vyc1xuICAgKiBAcGFyYW0gZG1zT2JqZWN0IFRoZSBkbXMgb2JqZWN0IHRvIGJlIHNoYXJlZFxuICAgKiBAcGFyYW0gc2hhcmVXaXRoIEFycmF5IG9mIG9yZ2FuaXphdGlvbiBvYmplY3RzIHRvIHNoYXJlIHRoZSBvYmplY3Qgd2l0aC4gRWFjaCBlbnRyeVxuICAgKiB3aWxsIGhhdmUgdGhlIElEIG9mIHRoZSB0YXJnZXQgb3JnYW5pemF0aW9uIG9iamVjdCBhcyB3ZWxsIGFzIGFuIG9wdGlvbmFsIHBhcmFtXG4gICAqIHdoZXRoZXIgb3Igbm90IHRvIGFsc28gc2hhcmUgdGhlIGRtcyBvYmplY3RzIGNoaWxkcmVuLlxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIGJlaW5nIHJlc29sdmVkIG9uY2UgdGhlIHJlcXVlc3QgaXMgZG9uZVxuICAgKi9cbiAgc2hhcmUoZG1zT2JqZWN0OiBEbXNPYmplY3QsIHNoYXJlV2l0aDoge2lkOiBzdHJpbmcsIHNoYXJlQ2hpbGRyZW4/OiBib29sZWFufVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKFxuICAgICAgZG1zT2JqZWN0LFxuICAgICAgdGhpcy5iYWNrZW5kLnB1dChcbiAgICAgICAgYC9kbXMvJHtkbXNPYmplY3QuaWR9L3NoYXJlYCxcbiAgICAgICAge1xuICAgICAgICAgIHNoYXJlczogc2hhcmVXaXRoLm1hcChpID0+ICh7XG4gICAgICAgICAgICBvcmdhbml6YXRpb25vYmplY3Q6IGkuaWQsXG4gICAgICAgICAgICBzaGFyZWNoaWxkcmVuOiAhIWkuc2hhcmVDaGlsZHJlblxuICAgICAgICAgIH0pKVxuICAgICAgICB9XG4gICAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIGEgRE1TIE9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIHR5cGVOYW1lXG4gICAqIEBwYXJhbSBwYXJlbnRJZFxuICAgKiBAcGFyYW0gcGFyZW50VHlwZU5hbWVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBtb3ZlKGlkLCB0eXBlTmFtZSwgcGFyZW50SWQsIHBhcmVudFR5cGVOYW1lKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvbG9jYXRpb24vJHtpZH1gO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcbiAgICAgIHR5cGU6IHR5cGVOYW1lLFxuICAgICAgcGFyZW50SWQsXG4gICAgICBwYXJlbnRUeXBlOiBwYXJlbnRUeXBlTmFtZVxuICAgIH0pLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ29weSBhIERNUyBPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGlkXG4gICAqIEBwYXJhbSB0eXBlTmFtZVxuICAgKiBAcGFyYW0gcGFyZW50SWRcbiAgICogQHBhcmFtIHBhcmVudFR5cGVOYW1lXG4gICAqIEBwYXJhbSBjcmVhdGVDb250ZW50TGlua1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cbiAgICovXG4gIGNvcHkoaWQsIHR5cGVOYW1lLCBwYXJlbnRJZCwgcGFyZW50VHlwZU5hbWUsIGNyZWF0ZUNvbnRlbnRMaW5rKSB7XG4gICAgY29uc3QgdXJpID0gYC9kbXMvY29weS8ke2lkfWA7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xuICAgICAgdHlwZTogdHlwZU5hbWUsXG4gICAgICBwYXJlbnRJZCxcbiAgICAgIHBhcmVudFR5cGU6IHBhcmVudFR5cGVOYW1lLFxuICAgICAgY3JlYXRlY29udGVudGxpbms6IGNyZWF0ZUNvbnRlbnRMaW5rXG4gICAgfSksIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBETVMgT2JqZWN0IHRvIEZpbmlsaXRlZFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBmaW5hbGl6ZShpdGVtOiBEbXNPYmplY3QpIHtcbiAgICBjb25zdCB1cmwgPSAnL2Rtcy9maW5hbGl6ZS8nICsgaXRlbS5pZCArICc/dHlwZT0nICsgaXRlbS50eXBlTmFtZTtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGl0ZW0sIHRoaXMuYmFja2VuZC5wdXQodXJsKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBGaW5pbGl6ZWQgRmxhZyBmcm9tIGEgRE1TIE9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XG4gICAqL1xuICBkZWZpbmFsaXplKGl0ZW06IERtc09iamVjdCkge1xuICAgIGNvbnN0IHVybCA9ICcvZG1zL2RlZmluYWxpemUvJyArIGl0ZW0uaWQgKyAnP3R5cGU9JyArIGl0ZW0udHlwZU5hbWU7XG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShpdGVtLCB0aGlzLmJhY2tlbmQucHV0KHVybCkpO1xuICB9XG5cbiAgY3JlYXRlTG9jYWxDb3B5T2ZETVNPYmplY3QoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBEbXNPYmplY3Qge1xuICAgIGNvbnN0IGJhc2UgPSB7XG4gICAgICBpZDogZG1zT2JqZWN0LmlkLFxuICAgICAgdGl0bGU6IGRtc09iamVjdC50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuZGVzY3JpcHRpb24sXG4gICAgICB2ZXJzaW9uOiBkbXNPYmplY3QudmVyc2lvbixcbiAgICAgIHZlcnNpb25zOiBkbXNPYmplY3QudmVyc2lvbnMsXG4gICAgICBkYXRhOiBkbXNPYmplY3QuZGF0YSxcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcblxuICAgICAgYWN0aXZldmVyc2lvbjogZG1zT2JqZWN0LmlzQWN0aXZlVmVyc2lvbixcbiAgICAgIGZpbmFsaXplZDogZG1zT2JqZWN0LmlzRmluYWxpemVkLFxuICAgICAgZmF2b3JpdGU6IGRtc09iamVjdC5pc0Zhdm9yaXRlLFxuICAgICAgZm9sZGVyOiBkbXNPYmplY3QuaXNGb2xkZXIsXG4gICAgICBpc2NvbnRleHRmb2xkZXI6IGRtc09iamVjdC5pc0NvbnRleHRGb2xkZXIsXG5cbiAgICAgIGNvbnRleHRmb2xkZXI6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyID8ge1xuICAgICAgICBpZDogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuaWQsXG4gICAgICAgIHR5cGU6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGVOYW1lLFxuICAgICAgICB0aXRsZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudGl0bGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci5kZXNjcmlwdGlvblxuICAgICAgfSA6IG51bGwsXG5cbiAgICAgIGNyZWF0ZWQ6IGRtc09iamVjdC5jcmVhdGVkLFxuICAgICAgbW9kaWZpZWQ6IGRtc09iamVjdC5tb2RpZmllZCxcblxuICAgICAgbG9jazogIWRtc09iamVjdC5sb2NrID8gJ05PVF9MT0NLRUQnIDogZG1zT2JqZWN0LmxvY2suYnkubWUgPyAnTE9DS0VEX0JZX1NFU1NJT05fVVNFUicgOiAnTE9DS0VEX0JZX09USEVSX1VTRVInLFxuICAgICAgbG9ja2luZm86IGRtc09iamVjdC5sb2NrID8ge3VzZXJuYW1lOiBkbXNPYmplY3QubG9jay5ieS5uYW1lLCB1c2VydGl0bGU6IGRtc09iamVjdC5sb2NrLmJ5LmxhYmVsLCB0aW1lOiBkbXNPYmplY3QubG9jay5vbn0gOiBudWxsLFxuXG4gICAgICByaWdodHM6IFt7XG4gICAgICAgIHByaXZpbGVnZXM6IHtcbiAgICAgICAgICBzZWxlY3Q6IGRtc09iamVjdC5yaWdodHMuc2VsZWN0LFxuICAgICAgICAgIGVkaXQ6IGRtc09iamVjdC5yaWdodHMuZWRpdCxcbiAgICAgICAgICBkZWxldGU6IGRtc09iamVjdC5yaWdodHMuZGVsZXRlLFxuICAgICAgICAgIGZpbmFsaXplOiBkbXNPYmplY3QucmlnaHRzLmZpbmFsaXplLFxuICAgICAgICAgIHJlY3ljbGU6IGRtc09iamVjdC5yaWdodHMucmVjeWNsZVxuICAgICAgICB9XG4gICAgICB9XSxcbiAgICAgIHNoYXJlczogZG1zT2JqZWN0LnNoYXJlcyxcbiAgICAgIGNvbnRlbnRpZDogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5pZCA6IG51bGwsXG4gICAgICBjb250ZW50dHlwZTogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC50eXBlIDogbnVsbCxcbiAgICAgIGNvbnRlbnRjb3VudDogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5jb3VudCA6IG51bGwsXG4gICAgICBjb250ZW50czogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5jb250ZW50cyA6IG51bGwsXG5cbiAgICAgIHN1YnNjcmlwdGlvbnM6IGRtc09iamVjdC5zdWJzY3JpcHRpb25zLFxuICAgICAgcmVzdWJtaXNzaW9uczogZG1zT2JqZWN0LnJlc3VibWlzc2lvbnMsXG4gICAgICBhZGRpdGlvbmFsdmlzaWJpbGl0eTogZG1zT2JqZWN0LmFkZGl0aW9uYWx2aXNpYmlsaXR5XG4gICAgfTtcblxuICAgIGxldCBjb3BpZWREbXNPYmplY3QgPSBuZXcgRG1zT2JqZWN0KGJhc2UpO1xuICAgIGNvcGllZERtc09iamVjdC50eXBlID0gZG1zT2JqZWN0LnR5cGU7XG5cbiAgICByZXR1cm4gY29waWVkRG1zT2JqZWN0O1xuICB9XG5cbn1cbiJdfQ==
|