@eo-sdk/client 7.16.8 → 7.16.11

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.
Files changed (28) hide show
  1. package/app/eo-framework/object-details/object-history/object-history.component.d.ts +3 -2
  2. package/app/eo-framework-core/api/plugins.service.d.ts +3 -2
  3. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +7 -5
  4. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
  5. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +1 -1
  6. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
  7. package/bundles/eo-sdk-client.umd.js +35 -21
  8. package/bundles/eo-sdk-client.umd.js.map +1 -1
  9. package/bundles/eo-sdk-client.umd.min.js +1 -1
  10. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  11. package/eo-sdk-client.metadata.json +1 -1
  12. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  13. package/esm2015/app/eo-framework/inbox-details/inbox-details.component.js +5 -6
  14. package/esm2015/app/eo-framework/object-details/object-history/object-history.component.js +14 -7
  15. package/esm2015/app/eo-framework/object-form/object-form/object-form.component.js +2 -2
  16. package/esm2015/app/eo-framework/process/details/process-details.component.js +6 -9
  17. package/esm2015/app/eo-framework/process/history/process-history.component.js +2 -2
  18. package/esm2015/app/eo-framework-core/api/plugins.service.js +10 -3
  19. package/esm2015/projects/eo-sdk/core/lib/model/dms-object-history.model.js +1 -1
  20. package/esm2015/projects/eo-sdk/core/lib/service/bpm/bpm.service.js +1 -1
  21. package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +5 -3
  22. package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +4 -4
  23. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +7 -5
  24. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  25. package/fesm2015/eo-sdk-client.js +32 -22
  26. package/fesm2015/eo-sdk-client.js.map +1 -1
  27. package/package.json +2 -2
  28. package/projects/eo-sdk/core/package.json +1 -1
@@ -1,11 +1,11 @@
1
1
  import { map } from 'rxjs/operators';
2
- import { Injectable, NgZone } from '@angular/core';
2
+ import { ApplicationRef, Injectable, NgZone } from '@angular/core';
3
3
  import { Router } from '@angular/router';
4
4
  import { AgentService } from '../agent/agent.service';
5
5
  import { Logger, NotificationsService, BackendService, ClipboardService, DmsService, EventService, UserService, DmsObject, Utils, TranslateService, EnaioEvent } from '@eo-sdk/core';
6
6
  export const UNDOCK_WINDOW_NAME = 'eoViewer';
7
7
  export class PluginsService {
8
- constructor(backend, notifications, clipboard, logger, translate, dmsService, router, agentService, eventService, userService, ngZone) {
8
+ constructor(backend, notifications, clipboard, logger, translate, dmsService, router, agentService, eventService, userService, appRef, ngZone) {
9
9
  this.backend = backend;
10
10
  this.notifications = notifications;
11
11
  this.clipboard = clipboard;
@@ -16,6 +16,7 @@ export class PluginsService {
16
16
  this.agentService = agentService;
17
17
  this.eventService = eventService;
18
18
  this.userService = userService;
19
+ this.appRef = appRef;
19
20
  this.ngZone = ngZone;
20
21
  this.agentAction = {
21
22
  OPEN: 'eo.agent.action.open',
@@ -56,6 +57,11 @@ export class PluginsService {
56
57
  // todo: create inreface for API
57
58
  getApi() {
58
59
  return {
60
+ detectChanges: () => {
61
+ setTimeout(() => {
62
+ this.appRef.tick();
63
+ }, 500);
64
+ },
59
65
  router: {
60
66
  get: () => this.router
61
67
  },
@@ -248,6 +254,7 @@ PluginsService.ctorParameters = () => [
248
254
  { type: AgentService },
249
255
  { type: EventService },
250
256
  { type: UserService },
257
+ { type: ApplicationRef },
251
258
  { type: NgZone }
252
259
  ];
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFDRyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUN0RSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQW1CLEtBQUssRUFDeEUsZ0JBQWdCLEVBQWUsVUFBVSxFQUMxQyxNQUFNLGNBQWMsQ0FBQztBQUV0QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUM7QUFFN0MsTUFBTSxPQUFPLGNBQWM7SUFvQ3pCLFlBQW9CLE9BQXVCLEVBQ2pDLGFBQW1DLEVBQ25DLFNBQTJCLEVBQzNCLE1BQWMsRUFDZixTQUEyQixFQUMxQixVQUFzQixFQUN0QixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsTUFBYztRQVZKLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQUNuQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENB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LENBQUM7UUFDckMsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU87UUFFNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7YUFDM0QsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7OztZQS9QRixVQUFVOzs7WUFONkIsY0FBYztZQUFwQyxvQkFBb0I7WUFBa0IsZ0JBQWdCO1lBQTlELE1BQU07WUFFZCxnQkFBZ0I7WUFEaEIsVUFBVTtZQUpKLE1BQU07WUFDTixZQUFZO1lBR04sWUFBWTtZQUFFLFdBQVc7WUFMbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7QWdlbnRTZXJ2aWNlfSBmcm9tICcuLi9hZ2VudC9hZ2VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBFb1VzZXIsIExvZ2dlciwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIEJhY2tlbmRTZXJ2aWNlLCBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gIERtc1NlcnZpY2UsIEV2ZW50U2VydmljZSwgVXNlclNlcnZpY2UsIERtc09iamVjdCwgQ2xpcGJvYXJkQWN0aW9uLCBVdGlscyxcclxuICBUcmFuc2xhdGVTZXJ2aWNlLCBIdHRwT3B0aW9ucywgRW5haW9FdmVudFxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgVU5ET0NLX1dJTkRPV19OQU1FID0gJ2VvVmlld2VyJztcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUGx1Z2luc1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHVzZXI6IEVvVXNlcjtcclxuICBwcml2YXRlIGFnZW50QWN0aW9uID0ge1xyXG4gICAgT1BFTjogJ2VvLmFnZW50LmFjdGlvbi5vcGVuJyxcclxuICAgIE1BSUw6ICdlby5hZ2VudC5hY3Rpb24ubWFpbCcsXHJcbiAgICBNQUlMX0FTX1BERjogJ2VvLmFnZW50LmFjdGlvbi5tYWlsLXBkZicsXHJcbiAgICBDTElQQk9BUkQ6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkJyxcclxuICAgIENMSVBCT0FSRF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkLXBkZicsXHJcbiAgICBFWFRFUk5BTDogJ2VvLmFnZW50LmFjdGlvbi5leHRlcm5hbCdcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhcGkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBcGkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseUZ1bmN0aW9uKHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbiB8IGFueSwgcGFyYW1zPzogc3RyaW5nLCBhcmdzPzogYW55KSB7XHJcbiAgICBjb25zdCBmbmMgPSB2YWx1ZT8udG9TdHJpbmcoKS50cmltKCk7XHJcbiAgICBpZiAoIWZuYykgcmV0dXJuO1xyXG4gICAgY29uc3QgZiA9IGZuYy5tYXRjaCgvXmZ1bmN0aW9ufF5cXCguKlxcKVxccyo9Pi8pXHJcbiAgICAgID8gYHJldHVybiAoJHtmbmN9KS5hcHBseSh0aGlzLGFyZ3VtZW50cylgXHJcbiAgICAgIDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhZm5jLnN0YXJ0c1dpdGgoXCInXCIpXHJcbiAgICAgID8gYHJldHVybiAnJHtmbmN9J2BcclxuICAgICAgOiBgcmV0dXJuICR7Zm5jfWA7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbiguLi4ocGFyYW1zIHx8ICdhcGknKS5zcGxpdCgnLCcpLm1hcCgoYSkgPT4gYS50cmltKCkpLCBmKS5hcHBseSh0aGlzLmFwaSwgYXJncyB8fCBbdGhpcy5hcGldKTtcclxuICAgICAgfSBjYXRjaChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xyXG5cclxuICAgIHdpbmRvd1snYXBpJ10gPSB0aGlzLmFwaTtcclxuXHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC51c2VyJFxyXG4gICAgICAuc3Vic2NyaWJlKCh1c2VyKSA9PiB0aGlzLnVzZXIgPSB1c2VyKTtcclxuICB9XHJcblxyXG4gIC8vIHRvZG86IGNyZWF0ZSBpbnJlZmFjZSBmb3IgQVBJXHJcblxyXG4gIHB1YmxpYyBnZXRBcGkoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHJvdXRlcjoge1xyXG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5yb3V0ZXJcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRzOiB7XHJcbiAgICAgICAgZW5haW9FdmVudFR5cGU6IEVuYWlvRXZlbnQsXHJcbiAgICAgICAgb246ICh0eXBlOiBzdHJpbmcpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS5vbih0eXBlKSksXHJcbiAgICAgICAgdHJpZ2dlcjogKHR5cGU6IHN0cmluZywgZGF0YT86IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIodHlwZSwgZGF0YSkpXHJcbiAgICAgIH0sXHJcbiAgICAgIHNlc3Npb246IHtcclxuICAgICAgICBnZXRVc2VyOiAoKSA9PiB0aGlzLmdldEN1cnJlbnRVc2VyKClcclxuICAgICAgfSxcclxuICAgICAgZG1zOiB7XHJcbiAgICAgICAgZ2V0T2JqZWN0OiAoaWQsIHR5cGUsIHZlcnNpb24pID0+IHRoaXMuZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uKSxcclxuICAgICAgICBnZXRSZXN1bHQ6IChmaWVsZHMsIHR5cGUpID0+IHRoaXMuZ2V0UmVzdWx0KGZpZWxkcywgdHlwZSksXHJcbiAgICAgICAgZG93bmxvYWRDb250ZW50OiAoZG1zT2JqZWN0czogRG1zT2JqZWN0W10sIHJlbmRpdGlvbj86ICdQREYnXHJcbiAgICAgICAgICB8ICdUSUZGJ1xyXG4gICAgICAgICAgfCAnVEVYVCdcclxuICAgICAgICAgIHwgJ0pQRUcnKSA9PiB0aGlzLmJhY2tlbmQuZG93bmxvYWRDb250ZW50KGRtc09iamVjdHMsIHJlbmRpdGlvbilcclxuICAgICAgfSxcclxuICAgICAgaHR0cDoge1xyXG4gICAgICAgIGdldDogKHVyaSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5nZXQodXJpLCBiYXNlLCBvcHRpb25zKSxcclxuICAgICAgICBwb3N0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnBvc3QodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSxcclxuICAgICAgICBkZWw6ICh1cmksIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMuZGVsKHVyaSwgYmFzZSwgb3B0aW9ucyksXHJcbiAgICAgICAgcHV0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnB1dCh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5nZXRDb25maWcoKVxyXG4gICAgICB9LFxyXG4gICAgICBjb250ZW50OiB7XHJcbiAgICAgICAgdmlld2VyOiAoKSA9PiB3aW5kb3dbVU5ET0NLX1dJTkRPV19OQU1FXSB8fCAod2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2VvLW1lZGlhIGlmcmFtZVtzcmNdJykgfHwge30pWydjb250ZW50V2luZG93J10sXHJcbiAgICAgICAgdHJpZ2dlckVycm9yOiAoZXJyLCB3aW4sIHBhcmFtZXRlcnMpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKFVORE9DS19XSU5ET1dfTkFNRSArICdFcnJvcicsIHsgZXJyLCB3aW4sIHBhcmFtZXRlcnMgfSkpLFxyXG4gICAgICAgIGNhdGNoRXJyb3I6ICgpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS5vbihVTkRPQ0tfV0lORE9XX05BTUUgKyAnRXJyb3InKSlcclxuICAgICAgfSxcclxuICAgICAgdXRpbDoge1xyXG4gICAgICAgICQ6IChzZWxlY3RvcnMsIGVsZW1lbnQpID0+IChlbGVtZW50IHx8IHdpbmRvdy5kb2N1bWVudCkucXVlcnlTZWxlY3RvcihzZWxlY3RvcnMpLFxyXG4gICAgICAgICQkOiAoc2VsZWN0b3JzLCBlbGVtZW50KSA9PiAoZWxlbWVudCB8fCB3aW5kb3cuZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzKSxcclxuICAgICAgICBzdHlsZXM6IChzdHlsZXMsIGlkID0gJ19fc3R5bGVzJywgd2luOiBhbnkgPSB3aW5kb3cpID0+IHtcclxuICAgICAgICAgIGxldCBzID0gd2luLmRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcignIycgKyBpZCk7XHJcbiAgICAgICAgICBpZiAoIXMpIHtcclxuICAgICAgICAgICAgcyA9IHdpbi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgICAgICAgICBzLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XHJcbiAgICAgICAgICAgIHdpbi5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcy5pbm5lckhUTUwgPSBzdHlsZXM7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmFuc2xhdGU6IChrZXksIGRhdGEpID0+IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5LCBkYXRhKSxcclxuICAgICAgICBlbmNvZGVGaWxlTmFtZTogKGZpbGVuYW1lKSA9PiB0aGlzLmVuY29kZUZpbGVOYW1lKGZpbGVuYW1lKSxcclxuICAgICAgICBub3RpZmllcjoge1xyXG4gICAgICAgICAgc3VjY2VzczogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuc3VjY2Vzcyh0aXRsZSwgdGV4dCksXHJcbiAgICAgICAgICBlcnJvcjogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IodGl0bGUsIHRleHQpLFxyXG4gICAgICAgICAgaW5mbzogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuaW5mbyh0aXRsZSwgdGV4dCksXHJcbiAgICAgICAgICB3YXJuaW5nOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy53YXJuaW5nKHRpdGxlLCB0ZXh0KVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgY2xpcGJvYXJkOiB7XHJcbiAgICAgICAgc2V0OiAoZWxlbWVudHM6IERtc09iamVjdFtdLCBhY3Rpb246IENsaXBib2FyZEFjdGlvbikgPT4gdGhpcy5jbGlwYm9hcmQuc2V0KGVsZW1lbnRzLCBhY3Rpb24pLFxyXG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5jbGlwYm9hcmQuZ2V0KCksXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHRoaXMuY2xpcGJvYXJkLmNsZWFyKClcclxuICAgICAgfSxcclxuICAgICAgLy8gQWdlbnRcclxuICAgICAgYWdlbnQ6IHtcclxuICAgICAgICBnZXRBdmFpbGFiaWxpdHk6ICgpID0+IHRoaXMuZ2V0QWdlbnRBdmFpbGFiaWxpdHkoKSxcclxuICAgICAgICBleGVjdXRlQWN0aW9uOiAoYWN0aW9uLCBhcmdzKSA9PiB0aGlzLmV4ZWN1dGVBZ2VudEFjdGlvbihhY3Rpb24sIGFyZ3MpLFxyXG4gICAgICAgIGFjdGlvbjogdGhpcy5hZ2VudEFjdGlvblxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBnZXRBZ2VudEF2YWlsYWJpbGl0eSgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKHRoaXMuYWdlbnRTZXJ2aWNlLmlzQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmFnZW50U2VydmljZS5hZ2VudEF2YWlsYWJpbGl0eS5DT05ORUNURUQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUodGhpcy5hZ2VudFNlcnZpY2UuYWdlbnRBdmFpbGFiaWxpdHkuVU5BVkFJTEFCTEUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleGVjdXRlQWdlbnRBY3Rpb24oYWN0aW9uLCBhcmdzKSB7XHJcblxyXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkNMSVBCT0FSRDpcclxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5jb3B5VG9DbGlwYm9hcmQoYXJncyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5DTElQQk9BUkRfQVNfUERGOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChhcmdzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkVYVEVSTkFMOlxyXG4gICAgICAgIGlmICghYXJncy5leGVjdXRhYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignTWlzc2luZyBmaWVsZCBhcmdzLmV4ZWN1dGFibGUnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKChhcmdzLmFyZ3MgJiYgYXJncy5hcmdzLmxlbmd0aCA9PT0gMCkgJiYgIUFycmF5LmlzQXJyYXkoYXJncy5hcmdzKSkge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZpZWxkIGFyZ3MuYXJncyBtdXN0IGJlIGVtcHR5IG9yIGFycmF5LicpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kRXh0ZXJuYWxBY3Rpb24oYXJncy5leGVjdXRhYmxlLCBhcmdzLmFyZ3MgfHwgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUw6XHJcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5NQUlMX0FTX1BERjpcclxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kQXNNYWlsKGFyZ3MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uT1BFTjpcclxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5vcGVuRG9jdW1lbnQoYXJncywgYXJncy5sb2NrKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQodXJpLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0KHVyaSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMgfHwge29ic2VydmU6ICdyZXNwb25zZSd9KS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiBvcHRpb25zID8gcmVzIDogeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGRhdGE6IHJlcy5ib2R5IH07XHJcbiAgICAgICAgfSkpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHB1dCh1cmksIGRhdGEsIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dCh1cmksIGRhdGEsIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwb3N0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdCh1cmksIGRhdGEsIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWwodXJpLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q3VycmVudFVzZXIoKTogRW9Vc2VyIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpIHtcclxuICAgIHJldHVybiBVdGlscy5lbmNvZGVGaWxlTmFtZShmaWxlbmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2VydmljZUJhc2U6IHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpXHJcblxyXG4gICAgICAvLyB0b2RvOiBkbyB3ZSBoYXZlIHRvIHByb3ZpZGUgdGhlIHBsdWdpbiBkZXZlbG9wZXJzIHdpdGggdGhlc2UgaW5mb3JtYXRpb25zP1xyXG4gICAgICAvLyBwbHVnaW5zQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpbkJhc2UoKSxcclxuICAgICAgLy8gcGx1Z2luU3RhdGVzQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpblN0YXRlc0Jhc2UoKSxcclxuICAgICAgLy8gdGhlbWVCYXNlOiAkZW9Db25maWcuZ2V0VGhlbWVCYXNlKClcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBmZXRjaGVzIGRtcyBvYmplY3RzIGZyb20gdGhlIHNlcnZlciB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwYXJhbXNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWVsZHMgLSB0aGUgZmllbGRzIHRvIG1hdGNoZWQuIGV4YW1wbGU6IHtuYW1lOiAnbWF4JywgcGx6OiAnNDcxMTF9XHJcbiAgICogQHBhcmFtIHR5cGUgLSB0aGUgdGFyZ2V0IG9iamVjdCB0eXBlXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB3aGljaCB3aWxsIGJlIHJlc29sdmVkIGJ5IGFuIGFycmF5IG9mIERtc09iamVjdHMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhcmFtc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRSZXN1bHQoZmllbGRzLCB0eXBlKTogUHJvbWlzZTxEbXNPYmplY3RbXT4ge1xyXG5cclxuICAgIGxldCBxID0gT2JqZWN0LmtleXMoZmllbGRzKS5maWx0ZXIoayA9PiAoZmllbGRzW2tdICE9PSB1bmRlZmluZWQgJiYgZmllbGRzW2tdICE9PSBudWxsKSkubWFwKGsgPT4gayArICc9JyArIGZpZWxkc1trXSkuam9pbignOycpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmdldEpzb24oYC9yZXN1bHQvcXVlcnk/cXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQocSl9JnR5cGU9JHt0eXBlfWApXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCByZXNPYmplY3RzID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaXRlbSBvZiByZXNwb25zZSkge1xyXG4gICAgICAgICAgcmVzT2JqZWN0cy5wdXNoKG5ldyBEbXNPYmplY3QoaXRlbSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc09iamVjdHMpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkcyBhIERNUyBvYmplY3QgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgRE1TLU9iamVjdCB0byBiZSBmZXRjaGVkLlxyXG4gICAqIEBwYXJhbSBbdHlwZV0gLSBUaGUgb2JqZWN0IHR5cGUgb2YgdGhlIHNlbGVjdGVkIERNUy1PYmplY3QuIFdpbGwgaW1wcm92ZSBwZXJmb3JtYW5jZSBpZiBzZXQuXHJcbiAgICogQHBhcmFtIFt2ZXJzaW9uXSAtIHJldHJpZXZlIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgZG1zIG9iamVjdFxyXG4gICAqIEBwYXJhbSBbaW50ZW50XSAtIHVzZWQgZm9yIHNlcnZlciBzaWRlIGxvZ2dpbmcuIElmIHlvdSBwcm92aWRlIGFuIGludGVudCwgdGhlXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB3aGljaCB3aWxsIGJlIHJlc29sdmVkIGJ5IHRoZSBETVMgb2JqZWN0IGZldGNoZWQgZnJvbSB0aGUgc2VydmVyXHJcbiAgICovXHJcbiAgcHVibGljIGdldERtc09iamVjdChpZCwgdHlwZSwgdmVyc2lvbiwgaW50ZW50Pyk6IFByb21pc2U8RG1zT2JqZWN0PiB7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24sIGludGVudClcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKHRoaXMuaGFuZGxlRXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcclxuICB9XHJcbn1cclxuIl19
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQ0csTUFBTSxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFDdEUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFtQixLQUFLLEVBQ3hFLGdCQUFnQixFQUFlLFVBQVUsRUFDMUMsTUFBTSxjQUFjLENBQUM7QUFFdEIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBRTdDLE1BQU0sT0FBTyxjQUFjO0lBb0N6QixZQUFvQixPQUF1QixFQUNqQyxhQUFtQyxFQUNuQyxTQUEyQixFQUMzQixNQUFjLEVBQ2YsU0FBMkIsRUFDMUIsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLFlBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE1BQXNCLEVBQ3RCLE1BQWM7UUFYSixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtR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RUFBRSxFQUFFO1lBQ3RCLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNwQixLQUFLLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRTtnQkFDekIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3RDO1lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFPO1FBRTVDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO2FBQzNELFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNmLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBVTtRQUM1QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDOzs7WUFyUUYsVUFBVTs7O1lBTjZCLGNBQWM7WUFBcEMsb0JBQW9CO1lBQWtCLGdCQUFnQjtZQUE5RCxNQUFNO1lBRWQsZ0JBQWdCO1lBRGhCLFVBQVU7WUFKSixNQUFNO1lBQ04sWUFBWTtZQUdOLFlBQVk7WUFBRSxXQUFXO1lBTC9CLGNBQWM7WUFBYyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7QWdlbnRTZXJ2aWNlfSBmcm9tICcuLi9hZ2VudC9hZ2VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBFb1VzZXIsIExvZ2dlciwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIEJhY2tlbmRTZXJ2aWNlLCBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gIERtc1NlcnZpY2UsIEV2ZW50U2VydmljZSwgVXNlclNlcnZpY2UsIERtc09iamVjdCwgQ2xpcGJvYXJkQWN0aW9uLCBVdGlscyxcclxuICBUcmFuc2xhdGVTZXJ2aWNlLCBIdHRwT3B0aW9ucywgRW5haW9FdmVudFxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgVU5ET0NLX1dJTkRPV19OQU1FID0gJ2VvVmlld2VyJztcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUGx1Z2luc1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHVzZXI6IEVvVXNlcjtcclxuICBwcml2YXRlIGFnZW50QWN0aW9uID0ge1xyXG4gICAgT1BFTjogJ2VvLmFnZW50LmFjdGlvbi5vcGVuJyxcclxuICAgIE1BSUw6ICdlby5hZ2VudC5hY3Rpb24ubWFpbCcsXHJcbiAgICBNQUlMX0FTX1BERjogJ2VvLmFnZW50LmFjdGlvbi5tYWlsLXBkZicsXHJcbiAgICBDTElQQk9BUkQ6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkJyxcclxuICAgIENMSVBCT0FSRF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkLXBkZicsXHJcbiAgICBFWFRFUk5BTDogJ2VvLmFnZW50LmFjdGlvbi5leHRlcm5hbCdcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhcGkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBcGkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseUZ1bmN0aW9uKHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbiB8IGFueSwgcGFyYW1zPzogc3RyaW5nLCBhcmdzPzogYW55KSB7XHJcbiAgICBjb25zdCBmbmMgPSB2YWx1ZT8udG9TdHJpbmcoKS50cmltKCk7XHJcbiAgICBpZiAoIWZuYykgcmV0dXJuO1xyXG4gICAgY29uc3QgZiA9IGZuYy5tYXRjaCgvXmZ1bmN0aW9ufF5cXCguKlxcKVxccyo9Pi8pXHJcbiAgICAgID8gYHJldHVybiAoJHtmbmN9KS5hcHBseSh0aGlzLGFyZ3VtZW50cylgXHJcbiAgICAgIDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhZm5jLnN0YXJ0c1dpdGgoXCInXCIpXHJcbiAgICAgID8gYHJldHVybiAnJHtmbmN9J2BcclxuICAgICAgOiBgcmV0dXJuICR7Zm5jfWA7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbiguLi4ocGFyYW1zIHx8ICdhcGknKS5zcGxpdCgnLCcpLm1hcCgoYSkgPT4gYS50cmltKCkpLCBmKS5hcHBseSh0aGlzLmFwaSwgYXJncyB8fCBbdGhpcy5hcGldKTtcclxuICAgICAgfSBjYXRjaChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xyXG5cclxuICAgIHdpbmRvd1snYXBpJ10gPSB0aGlzLmFwaTtcclxuXHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC51c2VyJFxyXG4gICAgICAuc3Vic2NyaWJlKCh1c2VyKSA9PiB0aGlzLnVzZXIgPSB1c2VyKTtcclxuICB9XHJcblxyXG4gIC8vIHRvZG86IGNyZWF0ZSBpbnJlZmFjZSBmb3IgQVBJXHJcblxyXG4gIHB1YmxpYyBnZXRBcGkoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRldGVjdENoYW5nZXM6ICgpID0+IHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XHJcbiAgICAgICAgfSwgNTAwKTtcclxuICAgICAgfSxcclxuICAgICAgcm91dGVyOiB7XHJcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLnJvdXRlclxyXG4gICAgICB9LFxyXG4gICAgICBldmVudHM6IHtcclxuICAgICAgICBlbmFpb0V2ZW50VHlwZTogRW5haW9FdmVudCxcclxuICAgICAgICBvbjogKHR5cGU6IHN0cmluZykgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLm9uKHR5cGUpKSxcclxuICAgICAgICB0cmlnZ2VyOiAodHlwZTogc3RyaW5nLCBkYXRhPzogYW55KSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcih0eXBlLCBkYXRhKSlcclxuICAgICAgfSxcclxuICAgICAgc2Vzc2lvbjoge1xyXG4gICAgICAgIGdldFVzZXI6ICgpID0+IHRoaXMuZ2V0Q3VycmVudFVzZXIoKVxyXG4gICAgICB9LFxyXG4gICAgICBkbXM6IHtcclxuICAgICAgICBnZXRPYmplY3Q6IChpZCwgdHlwZSwgdmVyc2lvbikgPT4gdGhpcy5nZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24pLFxyXG4gICAgICAgIGdldFJlc3VsdDogKGZpZWxkcywgdHlwZSkgPT4gdGhpcy5nZXRSZXN1bHQoZmllbGRzLCB0eXBlKSxcclxuICAgICAgICBkb3dubG9hZENvbnRlbnQ6IChkbXNPYmplY3RzOiBEbXNPYmplY3RbXSwgcmVuZGl0aW9uPzogJ1BERidcclxuICAgICAgICAgIHwgJ1RJRkYnXHJcbiAgICAgICAgICB8ICdURVhUJ1xyXG4gICAgICAgICAgfCAnSlBFRycpID0+IHRoaXMuYmFja2VuZC5kb3dubG9hZENvbnRlbnQoZG1zT2JqZWN0cywgcmVuZGl0aW9uKVxyXG4gICAgICB9LFxyXG4gICAgICBodHRwOiB7XHJcbiAgICAgICAgZ2V0OiAodXJpLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLmdldCh1cmksIGJhc2UsIG9wdGlvbnMpLFxyXG4gICAgICAgIHBvc3Q6ICh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMucG9zdCh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpLFxyXG4gICAgICAgIGRlbDogKHVyaSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5kZWwodXJpLCBiYXNlLCBvcHRpb25zKSxcclxuICAgICAgICBwdXQ6ICh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMucHV0KHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmdldENvbmZpZygpXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbnRlbnQ6IHtcclxuICAgICAgICB2aWV3ZXI6ICgpID0+IHdpbmRvd1tVTkRPQ0tfV0lORE9XX05BTUVdIHx8ICh3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZW8tbWVkaWEgaWZyYW1lW3NyY10nKSB8fCB7fSlbJ2NvbnRlbnRXaW5kb3cnXSxcclxuICAgICAgICB0cmlnZ2VyRXJyb3I6IChlcnIsIHdpbiwgcGFyYW1ldGVycykgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoVU5ET0NLX1dJTkRPV19OQU1FICsgJ0Vycm9yJywgeyBlcnIsIHdpbiwgcGFyYW1ldGVycyB9KSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcjogKCkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLm9uKFVORE9DS19XSU5ET1dfTkFNRSArICdFcnJvcicpKVxyXG4gICAgICB9LFxyXG4gICAgICB1dGlsOiB7XHJcbiAgICAgICAgJDogKHNlbGVjdG9ycywgZWxlbWVudCkgPT4gKGVsZW1lbnQgfHwgd2luZG93LmRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9ycyksXHJcbiAgICAgICAgJCQ6IChzZWxlY3RvcnMsIGVsZW1lbnQpID0+IChlbGVtZW50IHx8IHdpbmRvdy5kb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcnMpLFxyXG4gICAgICAgIHN0eWxlczogKHN0eWxlcywgaWQgPSAnX19zdHlsZXMnLCB3aW46IGFueSA9IHdpbmRvdykgPT4ge1xyXG4gICAgICAgICAgbGV0IHMgPSB3aW4uZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKTtcclxuICAgICAgICAgIGlmICghcykge1xyXG4gICAgICAgICAgICBzID0gd2luLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgICAgICAgICAgIHMuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcclxuICAgICAgICAgICAgd2luLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzLmlubmVySFRNTCA9IHN0eWxlcztcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyYW5zbGF0ZTogKGtleSwgZGF0YSkgPT4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChrZXksIGRhdGEpLFxyXG4gICAgICAgIGVuY29kZUZpbGVOYW1lOiAoZmlsZW5hbWUpID0+IHRoaXMuZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpLFxyXG4gICAgICAgIG5vdGlmaWVyOiB7XHJcbiAgICAgICAgICBzdWNjZXNzOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5zdWNjZXNzKHRpdGxlLCB0ZXh0KSxcclxuICAgICAgICAgIGVycm9yOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5lcnJvcih0aXRsZSwgdGV4dCksXHJcbiAgICAgICAgICBpbmZvOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5pbmZvKHRpdGxlLCB0ZXh0KSxcclxuICAgICAgICAgIHdhcm5pbmc6ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLndhcm5pbmcodGl0bGUsIHRleHQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBjbGlwYm9hcmQ6IHtcclxuICAgICAgICBzZXQ6IChlbGVtZW50czogRG1zT2JqZWN0W10sIGFjdGlvbjogQ2xpcGJvYXJkQWN0aW9uKSA9PiB0aGlzLmNsaXBib2FyZC5zZXQoZWxlbWVudHMsIGFjdGlvbiksXHJcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmNsaXBib2FyZC5nZXQoKSxcclxuICAgICAgICBjbGVhcjogKCkgPT4gdGhpcy5jbGlwYm9hcmQuY2xlYXIoKVxyXG4gICAgICB9LFxyXG4gICAgICAvLyBBZ2VudFxyXG4gICAgICBhZ2VudDoge1xyXG4gICAgICAgIGdldEF2YWlsYWJpbGl0eTogKCkgPT4gdGhpcy5nZXRBZ2VudEF2YWlsYWJpbGl0eSgpLFxyXG4gICAgICAgIGV4ZWN1dGVBY3Rpb246IChhY3Rpb24sIGFyZ3MpID0+IHRoaXMuZXhlY3V0ZUFnZW50QWN0aW9uKGFjdGlvbiwgYXJncyksXHJcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFnZW50QWN0aW9uXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGdldEFnZW50QXZhaWxhYmlsaXR5KCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQpIHtcclxuICAgICAgICByZXNvbHZlKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50QXZhaWxhYmlsaXR5LkNPTk5FQ1RFRCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmFnZW50U2VydmljZS5hZ2VudEF2YWlsYWJpbGl0eS5VTkFWQUlMQUJMRSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4ZWN1dGVBZ2VudEFjdGlvbihhY3Rpb24sIGFyZ3MpIHtcclxuXHJcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uQ0xJUEJPQVJEOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChhcmdzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkNMSVBCT0FSRF9BU19QREY6XHJcbiAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKGFyZ3MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uRVhURVJOQUw6XHJcbiAgICAgICAgaWYgKCFhcmdzLmV4ZWN1dGFibGUpIHtcclxuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdNaXNzaW5nIGZpZWxkIGFyZ3MuZXhlY3V0YWJsZScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKGFyZ3MuYXJncyAmJiBhcmdzLmFyZ3MubGVuZ3RoID09PSAwKSAmJiAhQXJyYXkuaXNBcnJheShhcmdzLmFyZ3MpKSB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmllbGQgYXJncy5hcmdzIG11c3QgYmUgZW1wdHkgb3IgYXJyYXkuJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNlbmRFeHRlcm5hbEFjdGlvbihhcmdzLmV4ZWN1dGFibGUsIGFyZ3MuYXJncyB8fCBbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uTUFJTDpcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUxfQVNfUERGOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNlbmRBc01haWwoYXJncyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5PUEVOOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLm9wZW5Eb2N1bWVudChhcmdzLCBhcmdzLmxvY2spO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCh1cmksIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXQodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucyB8fCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMgPyByZXMgOiB7IHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogcmVzLmJvZHkgfTtcclxuICAgICAgICB9KSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHV0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucHV0KHVyaSwgZGF0YSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBvc3QodXJpLCBkYXRhLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KHVyaSwgZGF0YSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbCh1cmksIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCh1cmksIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlcigpOiBFb1VzZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbmNvZGVGaWxlTmFtZShmaWxlbmFtZSkge1xyXG4gICAgcmV0dXJuIFV0aWxzLmVuY29kZUZpbGVOYW1lKGZpbGVuYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDb25maWcoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzZXJ2aWNlQmFzZTogdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKClcclxuXHJcbiAgICAgIC8vIHRvZG86IGRvIHdlIGhhdmUgdG8gcHJvdmlkZSB0aGUgcGx1Z2luIGRldmVsb3BlcnMgd2l0aCB0aGVzZSBpbmZvcm1hdGlvbnM/XHJcbiAgICAgIC8vIHBsdWdpbnNCYXNlOiAkZW9Db25maWcuZ2V0UGx1Z2luQmFzZSgpLFxyXG4gICAgICAvLyBwbHVnaW5TdGF0ZXNCYXNlOiAkZW9Db25maWcuZ2V0UGx1Z2luU3RhdGVzQmFzZSgpLFxyXG4gICAgICAvLyB0aGVtZUJhc2U6ICRlb0NvbmZpZy5nZXRUaGVtZUJhc2UoKVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGZldGNoZXMgZG1zIG9iamVjdHMgZnJvbSB0aGUgc2VydmVyIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIHBhcmFtc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpZWxkcyAtIHRoZSBmaWVsZHMgdG8gbWF0Y2hlZC4gZXhhbXBsZToge25hbWU6ICdtYXgnLCBwbHo6ICc0NzExMX1cclxuICAgKiBAcGFyYW0gdHlwZSAtIHRoZSB0YXJnZXQgb2JqZWN0IHR5cGVcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgYW4gYXJyYXkgb2YgRG1zT2JqZWN0cyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGFyYW1zXHJcbiAgICovXHJcbiAgcHVibGljIGdldFJlc3VsdChmaWVsZHMsIHR5cGUpOiBQcm9taXNlPERtc09iamVjdFtdPiB7XHJcblxyXG4gICAgbGV0IHEgPSBPYmplY3Qua2V5cyhmaWVsZHMpLmZpbHRlcihrID0+IChmaWVsZHNba10gIT09IHVuZGVmaW5lZCAmJiBmaWVsZHNba10gIT09IG51bGwpKS5tYXAoayA9PiBrICsgJz0nICsgZmllbGRzW2tdKS5qb2luKCc7Jyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL3Jlc3VsdC9xdWVyeT9xdWVyeT0ke2VuY29kZVVSSUNvbXBvbmVudChxKX0mdHlwZT0ke3R5cGV9YClcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IHJlc09iamVjdHMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICByZXNPYmplY3RzLnB1c2gobmV3IERtc09iamVjdChpdGVtKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzT2JqZWN0cyk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCh0aGlzLmhhbmRsZUVycm9yKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGEgRE1TIG9iamVjdCBmcm9tIHRoZSBiYWNrZW5kLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBETVMtT2JqZWN0IHRvIGJlIGZldGNoZWQuXHJcbiAgICogQHBhcmFtIFt0eXBlXSAtIFRoZSBvYmplY3QgdHlwZSBvZiB0aGUgc2VsZWN0ZWQgRE1TLU9iamVjdC4gV2lsbCBpbXByb3ZlIHBlcmZvcm1hbmNlIGlmIHNldC5cclxuICAgKiBAcGFyYW0gW3ZlcnNpb25dIC0gcmV0cmlldmUgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBkbXMgb2JqZWN0XHJcbiAgICogQHBhcmFtIFtpbnRlbnRdIC0gdXNlZCBmb3Igc2VydmVyIHNpZGUgbG9nZ2luZy4gSWYgeW91IHByb3ZpZGUgYW4gaW50ZW50LCB0aGVcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgdGhlIERNUyBvYmplY3QgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXJcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uLCBpbnRlbnQ/KTogUHJvbWlzZTxEbXNPYmplY3Q+IHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5kbXNTZXJ2aWNlLmdldERtc09iamVjdChpZCwgdHlwZSwgdmVyc2lvbiwgaW50ZW50KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -20,4 +20,4 @@ export class DmsObjectHistoryEntry {
20
20
  }
21
21
  }
22
22
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLW9iamVjdC1oaXN0b3J5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9tb2RlbC9kbXMtb2JqZWN0LWhpc3RvcnkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBOENoQzs7O09BR0c7SUFDSCxZQUFZLElBQVM7UUFFbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsbUNBQVEsSUFBSSxDQUFDLFNBQVMsS0FDbEMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUNoQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQ3BDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFDaEMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUNyQyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09yZ1VzZXJ9IGZyb20gJy4vb3JnLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRhdGlvbiBvZiBhIGhpc3RvcnkgZW50cnkgZm9yIGEgZG1zIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERtc09iamVjdEhpc3RvcnlFbnRyeSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcnNpb24gb2YgdGhlIGRtcyBvYmplY3QgYXQgdGhlIHRpbWUgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWRcclxuICAgKi9cclxuICB2ZXJzaW9uOiBudW1iZXI7XHJcbiAgLyoqXHJcbiAgICogVGhlIHRpbWUgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWRcclxuICAgKi9cclxuICB0aW1lOiBEYXRlO1xyXG4gIC8qKlxyXG4gICAqIEVudHJ5J3MgdGl0bGVcclxuICAgKi9cclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEVudHJ5J3MgZGVzY3JpcHRpb25cclxuICAgKi9cclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBjb21tZW50IGFwcGxpZWQgdG8gdGhlIGVudHJ5XHJcbiAgICovXHJcbiAgY29tbWVudDogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEdyb3VwIG9mIHRoZSBlbnRyeVxyXG4gICAqL1xyXG4gIGdyb3VwOiAnUFJPQ0VTUycgfCAnTU9ESUZJQ0FUSU9OJyB8ICdJTkZPUk1BVElPTkFMJztcclxuICAvKipcclxuICAgKiBIaXN0b3J5IGVudHJ5J3MgdHlwZVxyXG4gICAqL1xyXG4gIHR5cGU6IHN0cmluZztcclxuICAvKipcclxuICAgKiBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHNwZWNpYWwgKEJQTSByZWxhdGVkKSB0eXBlcyBvZiBlbnRyaWVzXHJcbiAgICovXHJcbiAgcGFyYW1ldGVyPzoge1xyXG4gICAgcHJvY2Vzc0lkOiBzdHJpbmcsXHJcbiAgICBwcm9jZXNzTmFtZTogc3RyaW5nLFxyXG4gICAgYWN0aXZpdHlJZD86IHN0cmluZyxcclxuICAgIGFjdGl2aXR5TmFtZT86IHN0cmluZyxcclxuICAgIHR5cGU6IHN0cmluZ1xyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWQgZnJvbSBhIHVzZXJzIGFjdGl2aXR5IChlLmcuIGluZGV4ZGF0YSBjaGFuZ2VzKSwgdGhpcyBwcm9wZXJ0eVxyXG4gICAqIGhvbGRzIHRoZSB1c2VyIHRoYXQgY2F1c2VkIHRoZSBlbnRyeVxyXG4gICAqL1xyXG4gIHVzZXI6IE9yZ1VzZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcclxuICAgKiBAcGFyYW0ganNvbiBUaGUgSlNPTiBvYmplY3QgcmVjZWl2ZWQgZnJvbSB0aGUgYmFja2VuZC4gVGhpcyB3aWxsIGJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBuZXcgaGlzdG9yeSBlbnRyeSBpbnN0YW5jZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKGpzb246IGFueSkge1xyXG5cclxuICAgIHRoaXMudmVyc2lvbiA9IGpzb24udmVyc2lvbjtcclxuICAgIHRoaXMudGltZSA9IGpzb24udGltZTtcclxuICAgIHRoaXMudGl0bGUgPSBqc29uLnRpdGxlO1xyXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGpzb24uZGVzY3JpcHRpb247XHJcbiAgICB0aGlzLmNvbW1lbnQgPSBqc29uLmNvbW1lbnQ7XHJcbiAgICB0aGlzLmdyb3VwID0ganNvbi5ncm91cDtcclxuICAgIHRoaXMudHlwZSA9IGpzb24udHlwZTtcclxuICAgIHRoaXMudXNlciA9IGpzb24udXNlcjtcclxuXHJcbiAgICBpZiAoanNvbi5wYXJhbWV0ZXIpIHtcclxuICAgICAgdGhpcy5wYXJhbWV0ZXIgPSB7IC4uLmpzb24ucGFyYW1ldGVyLCBcclxuICAgICAgICBwcm9jZXNzSWQ6IGpzb24ucGFyYW1ldGVyLnByb2NJZCxcclxuICAgICAgICBwcm9jZXNzTmFtZToganNvbi5wYXJhbWV0ZXIucHJvY05hbWUsXHJcbiAgICAgICAgYWN0aXZpdHlJZDoganNvbi5wYXJhbWV0ZXIuYWN0SWQsXHJcbiAgICAgICAgYWN0aXZpdHlOYW1lOiBqc29uLnBhcmFtZXRlci5hY3ROYW1lXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLW9iamVjdC1oaXN0b3J5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9tb2RlbC9kbXMtb2JqZWN0LWhpc3RvcnkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBOENoQzs7O09BR0c7SUFDSCxZQUFZLElBQVM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsbUNBQ1QsSUFBSSxDQUFDLFNBQVMsS0FDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUNoQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQ3BDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFDaEMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUNyQyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09yZ1VzZXJ9IGZyb20gJy4vb3JnLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRhdGlvbiBvZiBhIGhpc3RvcnkgZW50cnkgZm9yIGEgZG1zIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERtc09iamVjdEhpc3RvcnlFbnRyeSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcnNpb24gb2YgdGhlIGRtcyBvYmplY3QgYXQgdGhlIHRpbWUgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWRcclxuICAgKi9cclxuICB2ZXJzaW9uOiBudW1iZXI7XHJcbiAgLyoqXHJcbiAgICogVGhlIHRpbWUgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWRcclxuICAgKi9cclxuICB0aW1lOiBEYXRlO1xyXG4gIC8qKlxyXG4gICAqIEVudHJ5J3MgdGl0bGVcclxuICAgKi9cclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEVudHJ5J3MgZGVzY3JpcHRpb25cclxuICAgKi9cclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBjb21tZW50IGFwcGxpZWQgdG8gdGhlIGVudHJ5XHJcbiAgICovXHJcbiAgY29tbWVudDogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEdyb3VwIG9mIHRoZSBlbnRyeVxyXG4gICAqL1xyXG4gIGdyb3VwOiAnUFJPQ0VTUycgfCAnTU9ESUZJQ0FUSU9OJyB8ICdJTkZPUk1BVElPTkFMJztcclxuICAvKipcclxuICAgKiBIaXN0b3J5IGVudHJ5J3MgdHlwZVxyXG4gICAqL1xyXG4gIHR5cGU6IHN0cmluZztcclxuICAvKipcclxuICAgKiBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHNwZWNpYWwgKEJQTSByZWxhdGVkKSB0eXBlcyBvZiBlbnRyaWVzXHJcbiAgICovXHJcbiAgcGFyYW1ldGVyPzoge1xyXG4gICAgcHJvY2Vzc0lkOiBzdHJpbmcsXHJcbiAgICBwcm9jZXNzTmFtZTogc3RyaW5nLFxyXG4gICAgYWN0aXZpdHlJZD86IHN0cmluZyxcclxuICAgIGFjdGl2aXR5TmFtZT86IHN0cmluZyxcclxuICAgIHR5cGU6IHN0cmluZ1xyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWQgZnJvbSBhIHVzZXJzIGFjdGl2aXR5IChlLmcuIGluZGV4ZGF0YSBjaGFuZ2VzKSwgdGhpcyBwcm9wZXJ0eVxyXG4gICAqIGhvbGRzIHRoZSB1c2VyIHRoYXQgY2F1c2VkIHRoZSBlbnRyeVxyXG4gICAqL1xyXG4gIHVzZXI6IE9yZ1VzZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcclxuICAgKiBAcGFyYW0ganNvbiBUaGUgSlNPTiBvYmplY3QgcmVjZWl2ZWQgZnJvbSB0aGUgYmFja2VuZC4gVGhpcyB3aWxsIGJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBuZXcgaGlzdG9yeSBlbnRyeSBpbnN0YW5jZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKGpzb246IGFueSkge1xyXG4gICAgdGhpcy52ZXJzaW9uID0ganNvbi52ZXJzaW9uO1xyXG4gICAgdGhpcy50aW1lID0ganNvbi50aW1lO1xyXG4gICAgdGhpcy50aXRsZSA9IGpzb24udGl0bGU7XHJcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0ganNvbi5kZXNjcmlwdGlvbjtcclxuICAgIHRoaXMuY29tbWVudCA9IGpzb24uY29tbWVudDtcclxuICAgIHRoaXMuZ3JvdXAgPSBqc29uLmdyb3VwO1xyXG4gICAgdGhpcy50eXBlID0ganNvbi50eXBlO1xyXG4gICAgdGhpcy51c2VyID0ganNvbi51c2VyO1xyXG5cclxuICAgIGlmIChqc29uLnBhcmFtZXRlcikge1xyXG4gICAgICB0aGlzLnBhcmFtZXRlciA9IHtcclxuICAgICAgICAuLi5qc29uLnBhcmFtZXRlcixcclxuICAgICAgICBwcm9jZXNzSWQ6IGpzb24ucGFyYW1ldGVyLnByb2NJZCxcclxuICAgICAgICBwcm9jZXNzTmFtZToganNvbi5wYXJhbWV0ZXIucHJvY05hbWUsXHJcbiAgICAgICAgYWN0aXZpdHlJZDoganNvbi5wYXJhbWV0ZXIuYWN0SWQsXHJcbiAgICAgICAgYWN0aXZpdHlOYW1lOiBqc29uLnBhcmFtZXRlci5hY3ROYW1lXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -247,4 +247,4 @@ BpmService.ctorParameters = () => [
247
247
  { type: EventService },
248
248
  { type: InboxService }
249
249
  ];
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvYnBtL2JwbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBYyxhQUFhLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZJLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBK0IsT0FBTyxFQUFFLFFBQVEsRUFBaUIsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkU7Ozs7Ozs7OztHQVNHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFTckIsWUFBb0IsWUFBaUMsRUFDakMsT0FBdUIsRUFDdkIsWUFBMEIsRUFDMUIsWUFBMEI7UUFIMUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGlC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QUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvRTtpQkFBTTtnQkFDTCxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUMvQjtZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNMLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs7WUE3UEYsVUFBVTs7O1lBZkgsbUJBQW1CO1lBTG5CLGNBQWM7WUFJZCxZQUFZO1lBRFosWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBvZiBhcyBvYnNlcnZhYmxlT2YsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21lcmdlTWFwLCB0YXAsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge1dvcmtJdGVtSGlzdG9yeUVudHJ5fSBmcm9tICcuLi8uLi9tb2RlbC93b3JrLWl0ZW0taGlzdG9yeS5tb2RlbCc7XHJcbmltcG9ydCB7RG1zT2JqZWN0fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcclxuaW1wb3J0IHtJbmJveFNlcnZpY2V9IGZyb20gJy4uL2luYm94L2luYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhcGFiaWxpdGllc1NlcnZpY2V9IGZyb20gJy4uL2NhcGFiaWxpdGllcy9jYXBhYmlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7RXhlY3V0YWJsZVByb2Nlc3MsIEZpbGVFbnRyeSwgUHJvY2VzcywgV29ya0l0ZW0sIFdvcmtJdGVtQWN0aW9ufSBmcm9tICcuLi8uLi9tb2RlbC9icG0ubW9kZWwnO1xyXG5pbXBvcnQge0NsaXBib2FyZH0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NsaXBib2FyZEFjdGlvbn0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC1hY3Rpb24uZW51bSc7XHJcblxyXG4vKipcclxuICogYEJwbVNlcnZpY2VgIGhhbmRsZXMgaW50ZXJhY3Rpb24gcmVsYXRlZCB0byBCUE0gdGFza3MuXHJcbiAqXHJcbiAqIFRoZSBtYWluIHBhcnRzIHByb3ZpZGVkIGFuZCB1c2VkIGJ5IHRoaXMgc2VydmljZSBhcmUgUHJvY2Vzc2VzIGFuZCBXb3JrSXRlbXMuXHJcbiAqIFByb2Nlc3NlcyBhcmUgZGVmaW5lZCBvbiB0aGUgYmFja2VuZCBzaWRlLiBUaGV5IGRlc2NyaWJlIGEgc2V0IG9mIHRhc2tzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBieSB0aGUgcHJvY2Vzcy5cclxuICogVGFza3MgdGhhdCByZXF1aXJlIHVzZXIgaW50ZXJhY3Rpb24gYXJlIHJlZmVycmVkIHRvIGFzIFdvcmtJdGVtcy5cclxuICpcclxuICogUHJvY2Vzc2VzIGNhbiBiZSByZWxhdGVkIHRvIGEgc3BlY2lhbCBvYmplY3QgdHlwZSwgYnV0IHRoZXkgZG9uJ3QgaGF2ZSB0by4gSW4gYWRkaXRpb24gdG8gdGhhdCB0aGV5IGNhbiByZWZlclxyXG4gKiB0byBkbXMgb2JqZWN0cy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJwbVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHByb2Nlc3NJdGVtczogUHJvY2Vzc1tdO1xyXG4gIHByaXZhdGUgcHJvY2Vzc0l0ZW1zU291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8UHJvY2Vzc1tdPigxKTtcclxuICAvKipcclxuICAgKiBMb25nIHRlcm0gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgY3VycmVudCBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcm9jZXNzSXRlbXMkOiBPYnNlcnZhYmxlPFByb2Nlc3NbXT4gPSB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllc1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGFsbCBwcm9jZXNzZXMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzaXplIE1heGltdW0gbnVtYmVyIG9mIHByb2Nlc3NlcyB0byBiZSBmZXRjaGVkXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBQcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRQcm9jZXNzZXMoc2l6ZTogbnVtYmVyID0gMTAwMCk6IE9ic2VydmFibGU8UHJvY2Vzc1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKGAvcHJvY2Vzcy91c2VyP3NpemU9JHtzaXplfWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5jb250ZW50Lm1hcChpdGVtID0+IG5ldyBQcm9jZXNzKGl0ZW0pKSksXHJcbiAgICAgICAgdGFwKChwcm9jZXNzZXM6IFByb2Nlc3NbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzSXRlbXMgPSBwcm9jZXNzZXM7XHJcbiAgICAgICAgICB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5uZXh0KHRoaXMucHJvY2Vzc0l0ZW1zKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciB0aGUgZXhlY3V0YWJsZSBQcm9jZXNzZXMuIElmIHR5cGVzIGFyZSBwcm92aWRlZCwgeW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbVxyXG4gICAqIEBwYXJhbSB0eXBlcyBMaXN0IG9mIGRtcyBvYmplY3QgdHlwZXMgdG8gZmV0Y2ggZXhlY3V0YWJsZSBwcm9jZXNzZXMgZm9yXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBleGVjdXRhYmxlIHByb2Nlc3Nlc1xyXG4gICAqL1xyXG4gIGdldEV4ZWN1dGFibGVQcm9jZXNzZXModHlwZXM/OiBzdHJpbmdbXSk6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgaWYgKHRoaXMuY2FwYWJpbGl0aWVzLmhhc0NhcGFiaWxpdHkoJ2JwbScpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZldGNoRXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKFtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZm9yIGEgZ2l2ZW4gc2V0IG9mIGRtcyBvYmplY3QuWW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbS5cclxuICAgKiBAcGFyYW0gZG1zT2JqZWN0cyBMaXN0IG9mIGRtcyBvYmplY3RzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRFeGVjdXRhYmxlUHJvY2Vzc2VzRm9yRG1zT2JqZWN0cyhkbXNPYmplY3RzOiBEbXNPYmplY3RbXSk6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0YWJsZVByb2Nlc3NlcyhkbXNPYmplY3RzLm1hcChvID0+IG8udHlwZU5hbWUpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKiBAcGFyYW0gdHlwZXMgTGlzdCBvZiBkbXMgb2JqZWN0IHR5cGVzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoRXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcz86IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxFeGVjdXRhYmxlUHJvY2Vzc1tdPiB7XHJcbiAgICBsZXQgdXJpID0gJy9icG0vcHJvY2Vzcy9leGVjdXRhYmxlP2Zvcm09dHJ1ZSZmaWVsZHM9dHJ1ZSc7XHJcbiAgICBpZiAodHlwZXMpIHtcclxuICAgICAgdXJpICs9IGAmdHlwZT0ke3R5cGVzLmpvaW4oJywnKX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXQodXJpKS5waXBlKG1hcChyZXMgPT4gcmVzIGFzIEV4ZWN1dGFibGVQcm9jZXNzW10pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgYSBwcm9jZXNzZXMgZmlsZS4gVGhlIGZpbGUgb2YgYSBwcm9jZXNzIGNvbnRhaW5zXHJcbiAgICogZG1zIG9iamVjdHMgYXR0YWNoZWQgdG8gdGhlIHByb2Nlc3MuXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBhdHRhY2hlZCBvYmplY3RzIGZvclxyXG4gICAqL1xyXG4gIGdldFByb2Nlc3NGaWxlKHByb2Nlc3NJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGaWxlRW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2ZpbGVgLCB0aGlzLmJhY2tlbmQuZ2V0QnBtQmFzZSgpKS5waXBlKFxyXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLmNvbnRlbnQubWFwKGkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGkuZWxlbWVudGlkLFxyXG4gICAgICAgICAgICB0aXRsZTogaS50aXRsZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGkuZGVzY3JpcHRpb24gPyBpLmRlc2NyaXB0aW9uIDogJycsXHJcbiAgICAgICAgICAgIGljb25pZDogaS5pY29uaWQsXHJcbiAgICAgICAgICAgIGNyZWF0b3I6IGkuY3JlYXRvcixcclxuICAgICAgICAgICAgYWRkdGltZTogaS5hZGR0aW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBpLnR5cGVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSB3b3JrIGl0ZW0uXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcGFyZW50IHByb2Nlc3NcclxuICAgKiBAcGFyYW0gaXRlbUlkIElEIG9mIHRoZSB3b3JrIGl0ZW0gaXRzZWxmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBiZSBhZGRlZCB0byB0aGUgYmFja2VuZCBjYWxsXHJcbiAgICogQHJldHVybnMgYSBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGdldFdvcmtJdGVtKHByb2Nlc3NJZDogc3RyaW5nLCBpdGVtSWQ6IHN0cmluZywgb3B0aW9ucyA/OiBhbnkpOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBvcHRpb25zID8gb3B0aW9ucyA6IHtmb3JtOiB0cnVlLCBmaWVsZHM6IHRydWV9O1xyXG4gICAgY29uc3QgdGFza3MgPSBbXHJcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRKc29uKFV0aWxzLmJ1aWxkVXJpKGAvYnBtL3Byb2Nlc3MvJHtwcm9jZXNzSWR9LyR7aXRlbUlkfWAsIHBhcmFtcykpLFxyXG4gICAgICB0aGlzLmdldFByb2Nlc3NGaWxlKHByb2Nlc3NJZClcclxuICAgIF07XHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRhc2tzKS5waXBlKFxyXG4gICAgICBtYXAocmVzID0+IHtcclxuICAgICAgICBjb25zdCB3aSA9IG5ldyBXb3JrSXRlbShyZXNbMF0pO1xyXG4gICAgICAgIHdpLnNldEZpbGUocmVzWzFdKTtcclxuICAgICAgICByZXR1cm4gd2k7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmVzIGEgd29yayBpdGVtLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSB3b3JrIGl0ZW0gdG8gYmUgc2F2ZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIHNhdmVXb3JrSXRlbShpdGVtOiBXb3JrSXRlbSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIGNvbnN0IHtpZCwgcHJvY2Vzc0lkLCBmaWxlLCBkYXRhfSA9IGl0ZW07XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge2NvbnRlbnRzOiBmaWxlLCBkYXRhfTtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtrZWVwbG9jazogdHJ1ZSwgaXNhdXRvbG9jazogZmFsc2V9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLnBvc3QoVXRpbHMuYnVpbGRVcmkoYC9icG0vcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vJHtpZH0vc2F2ZWAsIHBhcmFtcyksIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0V29ya0l0ZW0ocHJvY2Vzc0lkLCBpZCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3J3YXJkcyBhIHdvcmsgaXRlbS4gSWYgYSBXb3JrSXRlbSBwcm92aWRlcyBkaWZmZXJlbnQgYWN0aW9ucyAoQGxpbmsgV29ya0l0ZW1BY3Rpb24pXHJcbiAgICogeW91IGNhbiBwcm92aWRlIHRoZSBzZWxlY3RlZCBhY3Rpb24gdG9vLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSB3b3JrIGl0ZW0gdG8gYmUgZm9yd2FyZGVkXHJcbiAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb24gdXNlZCBmb3IgZm9yd2FyZGluZ1xyXG4gICAqL1xyXG4gIGZvcndhcmRXb3JrSXRlbShpdGVtOiBXb3JrSXRlbSwgYWN0aW9uPzogV29ya0l0ZW1BY3Rpb24pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge2tlZXBsb2NrOiBmYWxzZSwgaXNhdXRvbG9jazogZmFsc2V9O1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgYWN0aW9uOiBhY3Rpb24sXHJcbiAgICAgIGNvbnRlbnRzOiBpdGVtLmZpbGUsXHJcbiAgICAgIGRhdGE6IGl0ZW0uZGF0YVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLnBvc3QoVXRpbHMuYnVpbGRVcmkoYC9icG0vcHJvY2Vzcy8ke2l0ZW0ucHJvY2Vzc0lkfS8ke2l0ZW0uaWR9L3NhdmVgLCBwYXJhbXMpLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5pbmJveFNlcnZpY2UudXBkYXRlSW5ib3hJdGVtcyhpdGVtLmlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvY2tzIGEgV29ya0l0ZW0gZm9yIHRoZSBjdXJyZW50IHVzZXIgKHBlcnNvbmFsaXphdGlvbiksIG1lYW5pbmcgdGhhdCB0aGVcclxuICAgKiBjdXJyZW50IHVzZXIgaXMgbm93IGluIGNoYXJnZSBvZiBmdWxmaWxsaW5nIHRoZSBXb3JrSXRlbSB0YXNrLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBXb3JrSXRlbSB0byBiZSBsb2NrZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGxvY2tXb3JrSXRlbShpdGVtOiBXb3JrSXRlbSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucHV0KGAvYnBtL3Byb2Nlc3MvJHtpdGVtLnByb2Nlc3NJZH0vJHtpdGVtLmlkfS9sb2NrYClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRXb3JrSXRlbShpdGVtLnByb2Nlc3NJZCwgaXRlbS5pZCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWxlYXNlcyB0aGUgbG9jayBmb3IgYSBXb3JrSXRlbS5cclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgd29yayBpdGVtIHRvIGJlIHVubG9ja2VkXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICB1bmxvY2tXb3JrSXRlbShpdGVtOiBXb3JrSXRlbSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZGVsKGAvYnBtL3Byb2Nlc3MvJHtpdGVtLnByb2Nlc3NJZH0vJHtpdGVtLmlkfS9sb2NrYCkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRXb3JrSXRlbShpdGVtLnByb2Nlc3NJZCwgaXRlbS5pZCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnRzIGFuIGV4ZWN1dGFibGUgcHJvY2Vzcy5cclxuICAgKiBAcGFyYW0gZXhlY3V0YWJsZVByb2Nlc3NJZCBJRCBvZiB0aGUgZXhlY3V0YWJsZSBQcm9jZXNzIHRvIGJlIHN0YXJ0ZWRcclxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIGJlIHBhc3NlZCB0byB0aGUgcHJvY2VzcyAoc2ltcGxlIG9iamVjdCBvZiBrZXkvdmFsdWUgcGFpcnMpXHJcbiAgICogQHBhcmFtIGNvbnRlbnRzIE9iamVjdHMgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIHByb2Nlc3MgKHByb2Nlc3MuZmlsZSkuXHJcbiAgICovXHJcbiAgc3RhcnRQcm9jZXNzKGV4ZWN1dGFibGVQcm9jZXNzSWQ6IHN0cmluZywgZGF0YTogYW55LCBjb250ZW50czogeyBpZDogc3RyaW5nLCB0eXBlOiBzdHJpbmcgfVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChgL2JwbS9wcm9jZXNzLz9tb2RlbGlkPSR7ZXhlY3V0YWJsZVByb2Nlc3NJZH1gLCB7XHJcbiAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgIGNvbnRlbnRzOiBjb250ZW50c1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBoaXN0b3J5IGZvciBhIHByb2Nlc3MuIFdoaWNoIGVudHJpZXMgYXJlIHJldHVybmVkIGRlcGVuZHMgb24gdGhlXHJcbiAgICogcGVybWlzc2lvbnMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBoaXN0b3J5IGZvclxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT5cclxuICAgKi9cclxuICBnZXRQcm9jZXNzSGlzdG9yeShwcm9jZXNzSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9oaXN0b3J5YClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlcyA9PiByZXMgJiYgcmVzLmxlbmd0aCA/IHJlcy5tYXAoaXRlbSA9PiBuZXcgV29ya0l0ZW1IaXN0b3J5RW50cnkoaXRlbSkpIDogW10pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgY29udGVudCBmcm9tIHRoZSB3b3JrIGl0ZW1zIGZpbGUuXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBUaGUgSUQgb2YgdGhlIHByb2Nlc3MgdG8gcmVtb3ZlIHRoZSBpdGVtIGZyb21cclxuICAgKiBAcGFyYW0gd29ya0l0ZW1JZCBUaGUgSUQgb2YgdGhlIHdvcmsgaXRlbSBjb250YWluaW5nIHRoZSBmaWxlIGVsZW1lbnQgdG8gYmUgcmVtb3ZlZFxyXG4gICAqIEBwYXJhbSB3b3JrSXRlbUNvbnRlbnRJZCBUaGUgdGhlIElEIG9mIHRoZSBmaWxlIGVsZW1lbnQgdG8gYmUgcmVtb3ZlZFxyXG4gICAqL1xyXG4gIHJlbW92ZUZpbGVFbGVtZW50KHByb2Nlc3NJZDogc3RyaW5nLCB3b3JrSXRlbUlkOiBzdHJpbmcsIHdvcmtJdGVtQ29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZGVsKGAvcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vZmlsZS8ke3dvcmtJdGVtQ29udGVudElkfT9hY3Rpdml0eWlkPSR7d29ya0l0ZW1JZH1gLCB0aGlzLmJhY2tlbmQuZ2V0QnBtQmFzZSgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBjb250ZW50cyB0byBhIHdvcmsgaXRlbXMgZmlsZS5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2Vzc1xyXG4gICAqIEBwYXJhbSB3b3JrSXRlbUlkIFRoZSBJRCBvZiB0aGUgYWN0aXZpdHlcclxuICAgKiBAcGFyYW0gZWxlbWVudHMgVGhlIEVsZW1lbnRzIHRvIGJlIGFkZGVkXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICBhZGRGaWxlRWxlbWVudHMocHJvY2Vzc0lkOiBzdHJpbmcsIHdvcmtJdGVtSWQ6IHN0cmluZywgZWxlbWVudHM6IERtc09iamVjdFtdKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgY29uc3QgdGFza3MgPSBbXTtcclxuICAgIGVsZW1lbnRzLmZvckVhY2goKGUpID0+IHtcclxuICAgICAgdGFza3MucHVzaCh0aGlzLmJhY2tlbmQucG9zdChcclxuICAgICAgICBgL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2ZpbGUvJHtlLmlkfT90eXBlPSR7ZS50eXBlLm5hbWV9JmFjdGl2aXR5aWQ9JHt3b3JrSXRlbUlkfWAsXHJcbiAgICAgICAge30sIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbih0YXNrcylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRXb3JrSXRlbShwcm9jZXNzSWQsIHdvcmtJdGVtSWQpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgb2JqZWN0cyBmcm9tIHRoZSBjbGlwYm9hcmQgdG8gYSBXb3JrSXRlbS5cclxuICAgKiBAcGFyYW0gd29ya0l0ZW0gVGhlIHdvcmtJdGVtIHRvIGFkZCB0aGUgb2JqZWN0cyB0b1xyXG4gICAqIEBwYXJhbSBjbGlwYm9hcmQgQ2xpcGJvYXJkIG9iamVjdCBob2xkaW5nIHVzZXIgc2VsZWN0ZWQgb2JqZWN0c1xyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgYWRkRmlsZUVsZW1lbnRzRnJvbUNsaXBib2FyZCh3b3JrSXRlbTogV29ya0l0ZW0sIGNsaXBib2FyZDogQ2xpcGJvYXJkKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgaWYgKCh3b3JrSXRlbSAmJiB3b3JrSXRlbS5maWxlRW50cnlQZXJtaXNzaW9ucy5hZGQpICYmIGNsaXBib2FyZCAmJiBjbGlwYm9hcmQuZWxlbWVudHMubGVuZ3RoICYmIGNsaXBib2FyZC5hY3Rpb24gPT09IENsaXBib2FyZEFjdGlvbi5DT1BZKSB7XHJcbiAgICAgIGxldCBjb250ZW50czogRG1zT2JqZWN0W107XHJcbiAgICAgIGlmICh3b3JrSXRlbS5maWxlLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIG9ubHkgYWRkIGl0ZW1zIHRoYXQgYXJlIG5vdCBhbHJlYWR5IHBhcnQgb2YgdGhlIGF0dGFjaG1lbnRzXHJcbiAgICAgICAgY29uc3QgYXR0YWNobWVudElkcyA9IHdvcmtJdGVtLmZpbGUubWFwKGUgPT4gZS5pZCk7XHJcbiAgICAgICAgY29udGVudHMgPSBjbGlwYm9hcmQuZWxlbWVudHMuZmlsdGVyKGUgPT4gYXR0YWNobWVudElkcy5pbmRleE9mKGUuaWQpID09PSAtMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29udGVudHMgPSBjbGlwYm9hcmQuZWxlbWVudHM7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuYWRkRmlsZUVsZW1lbnRzKHdvcmtJdGVtLnByb2Nlc3NJZCwgd29ya0l0ZW0uaWQsIGNvbnRlbnRzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcignZXJyb3InKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvYnBtL2JwbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBYyxhQUFhLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZJLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBK0IsT0FBTyxFQUFFLFFBQVEsRUFBaUIsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkU7Ozs7Ozs7OztHQVNHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFTckIsWUFBb0IsWUFBaUMsRUFDM0MsT0FBdUIsRUFDdkIsWUFBMEIsRUFDMUIsWUFBMEI7UUFIaEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQzNDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGlC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QUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvRTtpQkFBTTtnQkFDTCxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUMvQjtZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNMLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs7WUEzUEYsVUFBVTs7O1lBZkgsbUJBQW1CO1lBTG5CLGNBQWM7WUFJZCxZQUFZO1lBRFosWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBvZiBhcyBvYnNlcnZhYmxlT2YsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21lcmdlTWFwLCB0YXAsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge1dvcmtJdGVtSGlzdG9yeUVudHJ5fSBmcm9tICcuLi8uLi9tb2RlbC93b3JrLWl0ZW0taGlzdG9yeS5tb2RlbCc7XHJcbmltcG9ydCB7RG1zT2JqZWN0fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcclxuaW1wb3J0IHtJbmJveFNlcnZpY2V9IGZyb20gJy4uL2luYm94L2luYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhcGFiaWxpdGllc1NlcnZpY2V9IGZyb20gJy4uL2NhcGFiaWxpdGllcy9jYXBhYmlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7RXhlY3V0YWJsZVByb2Nlc3MsIEZpbGVFbnRyeSwgUHJvY2VzcywgV29ya0l0ZW0sIFdvcmtJdGVtQWN0aW9ufSBmcm9tICcuLi8uLi9tb2RlbC9icG0ubW9kZWwnO1xyXG5pbXBvcnQge0NsaXBib2FyZH0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NsaXBib2FyZEFjdGlvbn0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC1hY3Rpb24uZW51bSc7XHJcblxyXG4vKipcclxuICogYEJwbVNlcnZpY2VgIGhhbmRsZXMgaW50ZXJhY3Rpb24gcmVsYXRlZCB0byBCUE0gdGFza3MuXHJcbiAqXHJcbiAqIFRoZSBtYWluIHBhcnRzIHByb3ZpZGVkIGFuZCB1c2VkIGJ5IHRoaXMgc2VydmljZSBhcmUgUHJvY2Vzc2VzIGFuZCBXb3JrSXRlbXMuXHJcbiAqIFByb2Nlc3NlcyBhcmUgZGVmaW5lZCBvbiB0aGUgYmFja2VuZCBzaWRlLiBUaGV5IGRlc2NyaWJlIGEgc2V0IG9mIHRhc2tzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBieSB0aGUgcHJvY2Vzcy5cclxuICogVGFza3MgdGhhdCByZXF1aXJlIHVzZXIgaW50ZXJhY3Rpb24gYXJlIHJlZmVycmVkIHRvIGFzIFdvcmtJdGVtcy5cclxuICpcclxuICogUHJvY2Vzc2VzIGNhbiBiZSByZWxhdGVkIHRvIGEgc3BlY2lhbCBvYmplY3QgdHlwZSwgYnV0IHRoZXkgZG9uJ3QgaGF2ZSB0by4gSW4gYWRkaXRpb24gdG8gdGhhdCB0aGV5IGNhbiByZWZlclxyXG4gKiB0byBkbXMgb2JqZWN0cy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJwbVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHByb2Nlc3NJdGVtczogUHJvY2Vzc1tdO1xyXG4gIHByaXZhdGUgcHJvY2Vzc0l0ZW1zU291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8UHJvY2Vzc1tdPigxKTtcclxuICAvKipcclxuICAgKiBMb25nIHRlcm0gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgY3VycmVudCBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcm9jZXNzSXRlbXMkOiBPYnNlcnZhYmxlPFByb2Nlc3NbXT4gPSB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGFsbCBwcm9jZXNzZXMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzaXplIE1heGltdW0gbnVtYmVyIG9mIHByb2Nlc3NlcyB0byBiZSBmZXRjaGVkXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBQcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRQcm9jZXNzZXMoc2l6ZTogbnVtYmVyID0gMTAwMCk6IE9ic2VydmFibGU8UHJvY2Vzc1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKGAvcHJvY2Vzcy91c2VyP3NpemU9JHtzaXplfWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5jb250ZW50Lm1hcChpdGVtID0+IG5ldyBQcm9jZXNzKGl0ZW0pKSksXHJcbiAgICAgICAgdGFwKChwcm9jZXNzZXM6IFByb2Nlc3NbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzSXRlbXMgPSBwcm9jZXNzZXM7XHJcbiAgICAgICAgICB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5uZXh0KHRoaXMucHJvY2Vzc0l0ZW1zKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciB0aGUgZXhlY3V0YWJsZSBQcm9jZXNzZXMuIElmIHR5cGVzIGFyZSBwcm92aWRlZCwgeW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbVxyXG4gICAqIEBwYXJhbSB0eXBlcyBMaXN0IG9mIGRtcyBvYmplY3QgdHlwZXMgdG8gZmV0Y2ggZXhlY3V0YWJsZSBwcm9jZXNzZXMgZm9yXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBleGVjdXRhYmxlIHByb2Nlc3Nlc1xyXG4gICAqL1xyXG4gIGdldEV4ZWN1dGFibGVQcm9jZXNzZXModHlwZXM/OiBzdHJpbmdbXSk6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgaWYgKHRoaXMuY2FwYWJpbGl0aWVzLmhhc0NhcGFiaWxpdHkoJ2JwbScpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZldGNoRXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKFtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZm9yIGEgZ2l2ZW4gc2V0IG9mIGRtcyBvYmplY3QuWW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbS5cclxuICAgKiBAcGFyYW0gZG1zT2JqZWN0cyBMaXN0IG9mIGRtcyBvYmplY3RzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRFeGVjdXRhYmxlUHJvY2Vzc2VzRm9yRG1zT2JqZWN0cyhkbXNPYmplY3RzOiBEbXNPYmplY3RbXSk6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0YWJsZVByb2Nlc3NlcyhkbXNPYmplY3RzLm1hcChvID0+IG8udHlwZU5hbWUpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKiBAcGFyYW0gdHlwZXMgTGlzdCBvZiBkbXMgb2JqZWN0IHR5cGVzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoRXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcz86IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxFeGVjdXRhYmxlUHJvY2Vzc1tdPiB7XHJcbiAgICBsZXQgdXJpID0gJy9icG0vcHJvY2Vzcy9leGVjdXRhYmxlP2Zvcm09dHJ1ZSZmaWVsZHM9dHJ1ZSc7XHJcbiAgICBpZiAodHlwZXMpIHtcclxuICAgICAgdXJpICs9IGAmdHlwZT0ke3R5cGVzLmpvaW4oJywnKX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXQodXJpKS5waXBlKG1hcChyZXMgPT4gcmVzIGFzIEV4ZWN1dGFibGVQcm9jZXNzW10pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgYSBwcm9jZXNzZXMgZmlsZS4gVGhlIGZpbGUgb2YgYSBwcm9jZXNzIGNvbnRhaW5zXHJcbiAgICogZG1zIG9iamVjdHMgYXR0YWNoZWQgdG8gdGhlIHByb2Nlc3MuXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBhdHRhY2hlZCBvYmplY3RzIGZvclxyXG4gICAqL1xyXG4gIGdldFByb2Nlc3NGaWxlKHByb2Nlc3NJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGaWxlRW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2ZpbGVgLCB0aGlzLmJhY2tlbmQuZ2V0QnBtQmFzZSgpKS5waXBlKFxyXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLmNvbnRlbnQubWFwKGkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGkuZWxlbWVudGlkLFxyXG4gICAgICAgICAgICB0aXRsZTogaS50aXRsZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGkuZGVzY3JpcHRpb24gPyBpLmRlc2NyaXB0aW9uIDogJycsXHJcbiAgICAgICAgICAgIGljb25pZDogaS5pY29uaWQsXHJcbiAgICAgICAgICAgIGNyZWF0b3I6IGkuY3JlYXRvcixcclxuICAgICAgICAgICAgYWRkdGltZTogaS5hZGR0aW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBpLnR5cGVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSB3b3JrIGl0ZW0uXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcGFyZW50IHByb2Nlc3NcclxuICAgKiBAcGFyYW0gaXRlbUlkIElEIG9mIHRoZSB3b3JrIGl0ZW0gaXRzZWxmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBiZSBhZGRlZCB0byB0aGUgYmFja2VuZCBjYWxsXHJcbiAgICogQHJldHVybnMgYSBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGdldFdvcmtJdGVtKHByb2Nlc3NJZDogc3RyaW5nLCBpdGVtSWQ6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IG9wdGlvbnMgPyBvcHRpb25zIDoge2Zvcm06IHRydWUsIGZpZWxkczogdHJ1ZX07XHJcbiAgICBjb25zdCB0YXNrcyA9IFtcclxuICAgICAgdGhpcy5iYWNrZW5kLmdldEpzb24oVXRpbHMuYnVpbGRVcmkoYC9icG0vcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vJHtpdGVtSWR9YCwgcGFyYW1zKSksXHJcbiAgICAgIHRoaXMuZ2V0UHJvY2Vzc0ZpbGUocHJvY2Vzc0lkKVxyXG4gICAgXTtcclxuICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4odGFza3MpLnBpcGUoXHJcbiAgICAgIG1hcChyZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHdpID0gbmV3IFdvcmtJdGVtKHJlc1swXSk7XHJcbiAgICAgICAgd2kuc2V0RmlsZShyZXNbMV0pO1xyXG4gICAgICAgIHJldHVybiB3aTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZXMgYSB3b3JrIGl0ZW0uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIHdvcmsgaXRlbSB0byBiZSBzYXZlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgc2F2ZVdvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgY29uc3Qge2lkLCBwcm9jZXNzSWQsIGZpbGUsIGRhdGF9ID0gaXRlbTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7Y29udGVudHM6IGZpbGUsIGRhdGF9O1xyXG4gICAgY29uc3QgcGFyYW1zID0ge2tlZXBsb2NrOiB0cnVlLCBpc2F1dG9sb2NrOiBmYWxzZX07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucG9zdChVdGlscy5idWlsZFVyaShgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS8ke2lkfS9zYXZlYCwgcGFyYW1zKSwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRXb3JrSXRlbShwcm9jZXNzSWQsIGlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcndhcmRzIGEgd29yayBpdGVtLiBJZiBhIFdvcmtJdGVtIHByb3ZpZGVzIGRpZmZlcmVudCBhY3Rpb25zIChAbGluayBXb3JrSXRlbUFjdGlvbilcclxuICAgKiB5b3UgY2FuIHByb3ZpZGUgdGhlIHNlbGVjdGVkIGFjdGlvbiB0b28uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIHdvcmsgaXRlbSB0byBiZSBmb3J3YXJkZWRcclxuICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiB1c2VkIGZvciBmb3J3YXJkaW5nXHJcbiAgICovXHJcbiAgZm9yd2FyZFdvcmtJdGVtKGl0ZW06IFdvcmtJdGVtLCBhY3Rpb24/OiBXb3JrSXRlbUFjdGlvbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7a2VlcGxvY2s6IGZhbHNlLCBpc2F1dG9sb2NrOiBmYWxzZX07XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBhY3Rpb246IGFjdGlvbixcclxuICAgICAgY29udGVudHM6IGl0ZW0uZmlsZSxcclxuICAgICAgZGF0YTogaXRlbS5kYXRhXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucG9zdChVdGlscy5idWlsZFVyaShgL2JwbS9wcm9jZXNzLyR7aXRlbS5wcm9jZXNzSWR9LyR7aXRlbS5pZH0vc2F2ZWAsIHBhcmFtcyksIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmluYm94U2VydmljZS51cGRhdGVJbmJveEl0ZW1zKGl0ZW0uaWQpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ja3MgYSBXb3JrSXRlbSBmb3IgdGhlIGN1cnJlbnQgdXNlciAocGVyc29uYWxpemF0aW9uKSwgbWVhbmluZyB0aGF0IHRoZVxyXG4gICAqIGN1cnJlbnQgdXNlciBpcyBub3cgaW4gY2hhcmdlIG9mIGZ1bGZpbGxpbmcgdGhlIFdvcmtJdGVtIHRhc2suXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIFdvcmtJdGVtIHRvIGJlIGxvY2tlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgbG9ja1dvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQoYC9icG0vcHJvY2Vzcy8ke2l0ZW0ucHJvY2Vzc0lkfS8ke2l0ZW0uaWR9L2xvY2tgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKGl0ZW0ucHJvY2Vzc0lkLCBpdGVtLmlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbGVhc2VzIHRoZSBsb2NrIGZvciBhIFdvcmtJdGVtLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSB3b3JrIGl0ZW0gdG8gYmUgdW5sb2NrZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIHVubG9ja1dvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwoYC9icG0vcHJvY2Vzcy8ke2l0ZW0ucHJvY2Vzc0lkfS8ke2l0ZW0uaWR9L2xvY2tgKS5waXBlKFxyXG4gICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKGl0ZW0ucHJvY2Vzc0lkLCBpdGVtLmlkKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdGFydHMgYW4gZXhlY3V0YWJsZSBwcm9jZXNzLlxyXG4gICAqIEBwYXJhbSBleGVjdXRhYmxlUHJvY2Vzc0lkIElEIG9mIHRoZSBleGVjdXRhYmxlIFByb2Nlc3MgdG8gYmUgc3RhcnRlZFxyXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBwcm9jZXNzIChzaW1wbGUgb2JqZWN0IG9mIGtleS92YWx1ZSBwYWlycylcclxuICAgKiBAcGFyYW0gY29udGVudHMgT2JqZWN0cyB0byBiZSBhdHRhY2hlZCB0byB0aGUgcHJvY2VzcyAocHJvY2Vzcy5maWxlKS5cclxuICAgKi9cclxuICBzdGFydFByb2Nlc3MoZXhlY3V0YWJsZVByb2Nlc3NJZDogc3RyaW5nLCBkYXRhOiBhbnksIGNvbnRlbnRzOiB7aWQ6IHN0cmluZywgdHlwZTogc3RyaW5nfVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChgL2JwbS9wcm9jZXNzLz9tb2RlbGlkPSR7ZXhlY3V0YWJsZVByb2Nlc3NJZH1gLCB7XHJcbiAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgIGNvbnRlbnRzOiBjb250ZW50c1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBoaXN0b3J5IGZvciBhIHByb2Nlc3MuIFdoaWNoIGVudHJpZXMgYXJlIHJldHVybmVkIGRlcGVuZHMgb24gdGhlXHJcbiAgICogcGVybWlzc2lvbnMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBoaXN0b3J5IGZvclxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT5cclxuICAgKi9cclxuICBnZXRQcm9jZXNzSGlzdG9yeShwcm9jZXNzSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9oaXN0b3J5YClcclxuICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXMgJiYgcmVzLmxlbmd0aCA/IHJlcy5tYXAoaXRlbSA9PiBuZXcgV29ya0l0ZW1IaXN0b3J5RW50cnkoaXRlbSkpIDogW10pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBjb250ZW50IGZyb20gdGhlIHdvcmsgaXRlbXMgZmlsZS5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyB0byByZW1vdmUgdGhlIGl0ZW0gZnJvbVxyXG4gICAqIEBwYXJhbSB3b3JrSXRlbUlkIFRoZSBJRCBvZiB0aGUgd29yayBpdGVtIGNvbnRhaW5pbmcgdGhlIGZpbGUgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtQ29udGVudElkIFRoZSB0aGUgSUQgb2YgdGhlIGZpbGUgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICovXHJcbiAgcmVtb3ZlRmlsZUVsZW1lbnQocHJvY2Vzc0lkOiBzdHJpbmcsIHdvcmtJdGVtSWQ6IHN0cmluZywgd29ya0l0ZW1Db250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5kZWwoYC9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9maWxlLyR7d29ya0l0ZW1Db250ZW50SWR9P2FjdGl2aXR5aWQ9JHt3b3JrSXRlbUlkfWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGNvbnRlbnRzIHRvIGEgd29yayBpdGVtcyBmaWxlLlxyXG4gICAqIEBwYXJhbSBwcm9jZXNzSWQgVGhlIElEIG9mIHRoZSBwcm9jZXNzXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtSWQgVGhlIElEIG9mIHRoZSBhY3Rpdml0eVxyXG4gICAqIEBwYXJhbSBlbGVtZW50cyBUaGUgRWxlbWVudHMgdG8gYmUgYWRkZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGFkZEZpbGVFbGVtZW50cyhwcm9jZXNzSWQ6IHN0cmluZywgd29ya0l0ZW1JZDogc3RyaW5nLCBlbGVtZW50czogRG1zT2JqZWN0W10pOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBjb25zdCB0YXNrcyA9IFtdO1xyXG4gICAgZWxlbWVudHMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICB0YXNrcy5wdXNoKHRoaXMuYmFja2VuZC5wb3N0KFxyXG4gICAgICAgIGAvcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vZmlsZS8ke2UuaWR9P3R5cGU9JHtlLnR5cGUubmFtZX0mYWN0aXZpdHlpZD0ke3dvcmtJdGVtSWR9YCxcclxuICAgICAgICB7fSwgdGhpcy5iYWNrZW5kLmdldEJwbUJhc2UoKSkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRhc2tzKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKHByb2Nlc3NJZCwgd29ya0l0ZW1JZCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYSBvYmplY3RzIGZyb20gdGhlIGNsaXBib2FyZCB0byBhIFdvcmtJdGVtLlxyXG4gICAqIEBwYXJhbSB3b3JrSXRlbSBUaGUgd29ya0l0ZW0gdG8gYWRkIHRoZSBvYmplY3RzIHRvXHJcbiAgICogQHBhcmFtIGNsaXBib2FyZCBDbGlwYm9hcmQgb2JqZWN0IGhvbGRpbmcgdXNlciBzZWxlY3RlZCBvYmplY3RzXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICBhZGRGaWxlRWxlbWVudHNGcm9tQ2xpcGJvYXJkKHdvcmtJdGVtOiBXb3JrSXRlbSwgY2xpcGJvYXJkOiBDbGlwYm9hcmQpOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBpZiAoKHdvcmtJdGVtICYmIHdvcmtJdGVtLmZpbGVFbnRyeVBlcm1pc3Npb25zLmFkZCkgJiYgY2xpcGJvYXJkICYmIGNsaXBib2FyZC5lbGVtZW50cy5sZW5ndGggJiYgY2xpcGJvYXJkLmFjdGlvbiA9PT0gQ2xpcGJvYXJkQWN0aW9uLkNPUFkpIHtcclxuICAgICAgbGV0IGNvbnRlbnRzOiBEbXNPYmplY3RbXTtcclxuICAgICAgaWYgKHdvcmtJdGVtLmZpbGUubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gb25seSBhZGQgaXRlbXMgdGhhdCBhcmUgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgYXR0YWNobWVudHNcclxuICAgICAgICBjb25zdCBhdHRhY2htZW50SWRzID0gd29ya0l0ZW0uZmlsZS5tYXAoZSA9PiBlLmlkKTtcclxuICAgICAgICBjb250ZW50cyA9IGNsaXBib2FyZC5lbGVtZW50cy5maWx0ZXIoZSA9PiBhdHRhY2htZW50SWRzLmluZGV4T2YoZS5pZCkgPT09IC0xKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZW50cyA9IGNsaXBib2FyZC5lbGVtZW50cztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5hZGRGaWxlRWxlbWVudHMod29ya0l0ZW0ucHJvY2Vzc0lkLCB3b3JrSXRlbS5pZCwgY29udGVudHMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKCdlcnJvcicpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -455,13 +455,15 @@ export class DmsService {
455
455
  modified: dmsObject.modified,
456
456
  lock: !dmsObject.lock ? 'NOT_LOCKED' : dmsObject.lock.by.me ? 'LOCKED_BY_SESSION_USER' : 'LOCKED_BY_OTHER_USER',
457
457
  lockinfo: dmsObject.lock ? { username: dmsObject.lock.by.name, usertitle: dmsObject.lock.by.label, time: dmsObject.lock.on } : null,
458
- rights: [{ privileges: {
458
+ rights: [{
459
+ privileges: {
459
460
  select: dmsObject.rights.select,
460
461
  edit: dmsObject.rights.edit,
461
462
  delete: dmsObject.rights.delete,
462
463
  finalize: dmsObject.rights.finalize,
463
464
  recycle: dmsObject.rights.recycle
464
- } }],
465
+ }
466
+ }],
465
467
  contentid: dmsObject.content ? dmsObject.content.id : null,
466
468
  contenttype: dmsObject.content ? dmsObject.content.type : null,
467
469
  contentcount: dmsObject.content ? dmsObject.content.count : null,
@@ -483,4 +485,4 @@ DmsService.ctorParameters = () => [
483
485
  { type: SystemService },
484
486
  { type: EventService }
485
487
  ];
486
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFHckQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQixvREFBZ0MsQ0FBQTtJQUNoQyw2REFBeUMsQ0FBQTtJQUN6QywrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVEOztHQUVHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFFckIsWUFBb0IsT0FBdUIsRUFDakMsYUFBNEIsRUFDNUIsWUFBMEI7UUFGaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDakMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxZQUFZLENBQUMsRUFBVSxFQUFFLElBQWEsRUFBRSxPQUFnQixFQUFFLE1BQWUsRUFBRSxVQUFvQixFQUFFLGVBQXlCO1FBQ3hILE1BQU0sR0FBRyxHQUFHLFFBQVEsRUFBRSxFQUFFLENBQUM7UUFFekIsTUFBTSxDQUFDLEdBQUc7WUFDUixvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLGFBQWEsRUFBRSxNQUFNO1lBQ3JCLElBQUk7WUFDSixVQUFVO1lBQ1YsT0FBTztZQUNQLFdBQVcsRUFBRSxlQUFlO1lBQzVCLFNBQVMsRUFBRSxNQUFNO1NBQ2xCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN2QyxJQUFJLENBQ0gsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQ3RELEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ3hELENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxvQkFBb0IsQ0FBQyxNQUFpQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3SCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxTQUFvQjtRQUNyQyxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0RSxJQUFJLFNBQVMsQ0FBQyxhQUFhLEVBQUU7WUFDM0IsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNuRztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWUsQ0FBQyxFQUFVLEVBQUUsSUFBYSxFQUFFLFVBQW9CO1FBQzdELE1BQU0sR0FBRyxHQUFHLFFBQVEsRUFBRSxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDdkI7UUFDRCxJQUFJLFVBQVUsRUFBRTtZQUNkLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxVQUFVLENBQUM7U0FDbkM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsRUFBVTtRQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUM7YUFDMUMsSUFBSSxDQUNILEdBQUcsQ0FDRCxXQUFXLENBQUMsRUFBRTtZQUNaLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzdCLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3pELENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxTQUFvQjtRQUM5QixNQUFNLEdBQUcsR0FBRyxRQUFRLFNBQVMsQ0FBQyxFQUFFLFdBQVcsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDeEYsR0FBRyxDQUFDLENBQUMsR0FBVSxFQUFFLEVBQUU7WUFDakIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxFQUFVLEVBQUUsSUFBYTtRQUNuQyxNQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUUsV0FBVyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNuRSxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxTQUFvQjs7UUFDakMsTUFBTSxJQUFJLFNBQUcsU0FBUyxDQUFDLE9BQU8sMENBQUUsSUFBSSxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLE9BQUEsU0FBUyxDQUFDLE9BQU8sMENBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUNuRSxNQUFNLFNBQVMsU0FBRyxTQUFTLENBQUMsT0FBTywwQ0FBRSxFQUFFLENBQUM7UUFDeEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLFNBQVMsY0FBYyxFQUFFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7UUFDN0UsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2hFLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUN0RCxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVzthQUNwRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDNUksQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsb0JBQW9CLENBQUMsRUFBVSxFQUFFLEtBQWEsRUFBRSxJQUFZLEVBQUUsT0FBZ0I7UUFDNUUsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEtBQUssRUFBRSxFQUFFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7UUFDL0UsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxRQUFRLENBQUMsRUFBVSxFQUFFLElBQWEsRUFBRSxPQUFnQixFQUFFLElBQWE7UUFDakUsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLE9BQU8sR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUN2RDtZQUNFLElBQUk7WUFDSixPQUFPO1lBQ1AsTUFBTSxFQUFFLElBQUk7U0FDYixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxVQUFVLENBQUMsRUFBVSxFQUFFLElBQWEsRUFBRSxPQUFnQixFQUFFLFNBQWtCO1FBQ3hFLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsR0FBRyxPQUFPLEdBQUcsRUFBRSxHQUFHLFVBQVUsRUFDekQ7WUFDRSxTQUFTO1lBQ1QsSUFBSTtZQUNKLE9BQU87U0FDUixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxZQUFZLENBQUMsRUFBVSxFQUFFLFNBQWMsRUFBRSxJQUFhLEVBQUUsT0FBZ0I7UUFDdEUsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFNLEVBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FBQyxFQUFVLEVBQUUsSUFBYTtRQUNsQyxNQUFNLEdBQUcsR0FBRyxRQUFRLEVBQUUsUUFBUSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDakUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxjQUFjLENBQUMsRUFBVSxFQUFFLE9BQWUsRUFBRSxJQUFhO1FBQ3ZELE1BQU0sR0FBRyxHQUFHLHVCQUF1QixFQUFFLElBQUksT0FBTyxFQUFFLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQUMsU0FBb0IsRUFBRSxPQUF3QjtRQUMxRCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3hDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQ25FLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLFNBQW9CO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLFFBQVEsU0FBUyxDQUFDLEVBQUUsVUFBVSxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFDLFVBQWtCLEVBQUUsSUFBVyxFQUFFLFNBQWUsRUFBRSxNQUFvQztRQUVwRyxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLElBQUksU0FBUyxFQUFFO1lBQ2IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzVELElBQUksRUFBRSxrQkFBa0I7YUFDekIsQ0FBQyxDQUFDLENBQUM7U0FDTDthQUFNO1lBQ0wsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDcEM7UUFFRCxJQUFJLElBQUksRUFBRTtZQUNSLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsSUFBSSxHQUFHLEdBQUcsZUFBZSxVQUFVLEVBQUUsQ0FBQztRQUN0QyxJQUFJLE1BQU0sRUFBRTtZQUNWLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtnQkFDeEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNuQixVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUk7YUFDeEIsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUMsT0FBTyxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxrQkFBa0IsQ0FBQyxTQUFvQixFQUFFLE9BQWUsRUFBRSxRQUFRLEVBQUUsU0FBa0IsRUFBRSxTQUFrQixFQUFFLElBQXVCO1FBQ2pJLE1BQU0sR0FBRyxHQUFHLHFCQUFxQixTQUFTLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN6RSxPQUFPO1lBQ1AsSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQ3hCLFFBQVE7WUFDUixTQUFTO1lBQ1QsU0FBUztZQUNULElBQUk7U0FDTCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQ04sQ0FBQztJQUVKLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsa0JBQWtCLENBQUMsU0FBb0IsRUFBRSxPQUFlLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFrQixFQUFFLFNBQWtCO1FBQzdHLE1BQU0sR0FBRyxHQUFHLHFCQUFxQixTQUFTLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN6RSxPQUFPO1lBQ1AsSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBQ3hCLFFBQVE7WUFDUixHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakMsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNOLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsc0JBQXNCLENBQUMsY0FBYyxFQUFFLFNBQXFCO1FBQzFELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsdUJBQXVCLENBQUMsTUFBTSxFQUFFLFNBQXFCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILGtCQUFrQixDQUFDLFNBQW9CLEVBQUUsT0FBZSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBa0IsRUFBRSxTQUFrQjtRQUM3RyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkUsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMxRixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILG9DQUFvQyxDQUFDLFVBQXVCLEVBQUUsU0FBbUI7UUFDL0UsTUFBTSxHQUFHLEdBQUcsb0NBQW9DLENBQUM7UUFDakQsTUFBTSxJQUFJLEdBQUc7WUFDWCxtQkFBbUIsRUFBRSxTQUFTO1lBQzlCLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDNUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUNaLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUk7YUFDbEIsQ0FBQyxDQUFDO1NBQ0osQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWM7UUFDekMsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDM0MsSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRO1lBQ1IsVUFBVSxFQUFFLGNBQWM7U0FDM0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCO1FBQzVELE1BQU0sR0FBRyxHQUFHLGFBQWEsRUFBRSxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQyxJQUFJLEVBQUUsUUFBUTtZQUNkLFFBQVE7WUFDUixVQUFVLEVBQUUsY0FBYztZQUMxQixpQkFBaUIsRUFBRSxpQkFBaUI7U0FDckMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsUUFBUSxDQUFDLElBQWU7UUFDdEIsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLElBQWU7UUFDeEIsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNwRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELDBCQUEwQixDQUFDLFNBQW9CO1FBQzdDLE1BQU0sSUFBSSxHQUFHO1lBQ1gsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1lBQ2hCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSztZQUN0QixXQUFXLEVBQUUsU0FBUyxDQUFDLFdBQVc7WUFDbEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO1lBQzFCLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTtZQUM1QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7WUFDcEIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBRXhCLGFBQWEsRUFBRSxTQUFTLENBQUMsZUFBZTtZQUN4QyxTQUFTLEVBQUUsU0FBUyxDQUFDLFdBQVc7WUFDaEMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxVQUFVO1lBQzlCLE1BQU0sRUFBRSxTQUFTLENBQUMsUUFBUTtZQUMxQixlQUFlLEVBQUUsU0FBUyxDQUFDLGVBQWU7WUFFMUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxFQUFFLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUM5QixJQUFJLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRO2dCQUN0QyxLQUFLLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLO2dCQUNwQyxXQUFXLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXO2FBQ2pELENBQUMsQ0FBQyxDQUFDLElBQUk7WUFFUixPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87WUFDMUIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO1lBRTVCLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO1lBQy9HLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUVqSSxNQUFNLEVBQUUsQ0FBQyxFQUFDLFVBQVUsRUFBRTt3QkFDcEIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTTt3QkFDL0IsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSTt3QkFDM0IsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTTt3QkFDL0IsUUFBUSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUTt3QkFDbkMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTztxQkFDbEMsRUFBQyxDQUFDO1lBRUgsU0FBUyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzFELFdBQVcsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUM5RCxZQUFZLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDaEUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBRS9ELGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTtZQUN0QyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDdEMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLG9CQUFvQjtTQUNyRCxDQUFDO1FBRUYsSUFBSSxlQUFlLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsZUFBZSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBRXRDLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7OztZQTFnQkYsVUFBVTs7O1lBakJILGNBQWM7WUFDZCxhQUFhO1lBSWIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGFwLCBtZXJnZU1hcCwgY2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0Rtc09iamVjdCwgRG1zT2JqZWN0QXR0YWNobWVudH0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC5tb2RlbCc7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtTeXN0ZW1TZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtEbXNPYmplY3RIaXN0b3J5RW50cnl9IGZyb20gJy4uLy4uL21vZGVsL2Rtcy1vYmplY3QtaGlzdG9yeS5tb2RlbCc7XHJcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XHJcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7RG1zUGFyYW1zfSBmcm9tICcuL2Rtc1BhcmFtcy5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGVudW0gU3Vic2NyaXB0aW9uTW9kZXtcclxuICBPTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCA9ICdNRVRBJyxcclxuICBPTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCA9ICdDT05URU5UJyxcclxuICBETVNfT0JKRUNUX0NIQU5HRUQgPSAnQk9USCdcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbGxlY3Rpb24gb2YgRE1TIFNlcnZpY2VzXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEbXNTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcclxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYSBkbXMgb2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcclxuICAgKiBAcGFyYW0gdHlwZSBPYmplY3RzIHR5cGUgbmFtZSwgd2lsbCBpbXByb3ZlIGxvYWQgdGltZSBpZiBwcm92aWRlZFxyXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRhcmdldCB2ZXJzaW9uXHJcbiAgICogQHBhcmFtIGludGVudCBVc2VkIGZvciBzZXJ2ZXIgc2lkZSBsb2dnaW5nLiBJZiB5b3UgcHJvdmlkZSBhbiBpbnRlbnQsIHRoZSBiYWNrZW5kIHdpbGwgcmVjb2duaXplIHRoZSByZXF1ZXN0IGFuZCBhZGQgaXQgdG8gaXRzIGxvZ3NcclxuICAgKiBAcGFyYW0gcmVjeWNsZWJpbiBJZiB0cnVlLCBvYmplY3RzIGZyb20gcmVjeWNsZWJpbiBhcmUgaW5jbHVkZWRcclxuICAgKiBAcGFyYW0gd2l0aFN0b3JhZ2VJbmZvIElmIHRydWUsIHN0b3JhZ2VpbmZvIGlzIGluY2x1ZGVkIG9uIHRoZSBkbXMgb2JqZWN0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+XHJcbiAgICovXHJcbiAgZ2V0RG1zT2JqZWN0KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIGludGVudD86IHN0cmluZywgcmVjeWNsZWJpbj86IGJvb2xlYW4sIHdpdGhTdG9yYWdlSW5mbz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH1gO1xyXG5cclxuICAgIGNvbnN0IHEgPSB7XHJcbiAgICAgIGFkZGl0aW9uYWx2aXNpYmlsaXR5OiB0cnVlLFxyXG4gICAgICBzdWJzY3JpcHRpb246ICdDVVJSRU5UJyxcclxuICAgICAgcmVzdWJtaXNzaW9uOiAnQ1VSUkVOVCcsXHJcbiAgICAgIHJpZ2h0czogJ0NVUlJFTlQnLFxyXG4gICAgICBkYXRhbWV0YTogJ3RydWUnLFxyXG4gICAgICBjb250ZXh0Zm9sZGVyOiAndHJ1ZScsXHJcbiAgICAgIHR5cGUsXHJcbiAgICAgIHJlY3ljbGViaW4sXHJcbiAgICAgIHZlcnNpb24sXHJcbiAgICAgIHN0b3JhZ2VpbmZvOiB3aXRoU3RvcmFnZUluZm8sXHJcbiAgICAgICdfaW50ZW50JzogaW50ZW50XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmdldFZpYVRlbXBDYWNoZShVdGlscy5idWlsZFVyaSh1cmksIHEpKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFV0aWxzLmNhdGNoU2tpcChlcnIgPT4gZXJyLnN0YXR1cyA9PT0gNDA0KSksXHJcbiAgICAgICAgbWFwKHJlcyA9PiB0aGlzLnJlc29sdmVPYmplY3RUeXBlcyhuZXcgRG1zT2JqZWN0KHJlcykpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciB0aGUgRE1TIE9iamVjdHMgYnkgcGFyYW1zXHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zUGFyYW1zIHBhcmFtc1xyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PlxyXG4gICAqL1xyXG4gIGdldERtc09iamVjdEJ5UGFyYW1zKHBhcmFtczogRG1zUGFyYW1zKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLmdldERtc09iamVjdChwYXJhbXMuaWQsIHBhcmFtcy50eXBlLCBwYXJhbXMudmVyc2lvbiwgcGFyYW1zLmludGVudCwgcGFyYW1zLnJlY3ljbGViaW4sIHBhcmFtcy53aXRoU3RvcmFnZUluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVvbHZlciBvZiBPYmplY3QgVHlwZXMgYnkgRE1TIE9iamVjdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcclxuICAgKiBAcmV0dXJucyBEbXNPYmplY3RcclxuICAgKi9cclxuICByZXNvbHZlT2JqZWN0VHlwZXMoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBEbXNPYmplY3Qge1xyXG4gICAgZG1zT2JqZWN0LnR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShkbXNPYmplY3QudHlwZU5hbWUpO1xyXG5cclxuICAgIGlmIChkbXNPYmplY3QuY29udGV4dEZvbGRlcikge1xyXG4gICAgICBkbXNPYmplY3QuY29udGV4dEZvbGRlci50eXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUoZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudHlwZU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkbXNPYmplY3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgRE1TIG9iamVjdC5cclxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuXHJcbiAgICogQHBhcmFtIHR5cGUgVHlwZSBvZiBvYmplY3RcclxuICAgKiBAcGFyYW0gaGFyZERlbGV0ZSBJZiBvYmplY3Qgc2hvdWxkIHJlYWxseSBiZSBkZWxldGVkIG9yIG9ubHkgcHV0IGludG8gdGhlIHJlY3ljbGUgYmluXHJcbiAgICovXHJcbiAgZGVsZXRlRG1zT2JqZWN0KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIGhhcmREZWxldGU/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAvZG1zLyR7aWR9YDtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xyXG4gICAgaWYgKHR5cGUgJiYgdHlwZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHBhcmFtc1sndHlwZSddID0gdHlwZTtcclxuICAgIH1cclxuICAgIGlmIChoYXJkRGVsZXRlKSB7XHJcbiAgICAgIHBhcmFtc1snaGFyZGRlbGV0ZSddID0gaGFyZERlbGV0ZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZGVsKFV0aWxzLmJ1aWxkVXJpKHVybCwgcGFyYW1zKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBjb250ZXh0IHBhdGggb2YgdGhlIGdpdmVuIGRtcyBvYmplY3RcclxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBvYmplY3QuXHJcbiAgICogQHJldHVybnMgVGhlIGNvbnRleHQgcGF0aCBvZiB0aGUgZG1zIG9iamVjdFxyXG4gICAqL1xyXG4gIGdldENvbnRleHRQYXRoKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0KGAvZG1zLyR7aWR9L2NvbnRleHRgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoXHJcbiAgICAgICAgICBjb250ZXh0UGF0aCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnRleHRQYXRoLmZvckVhY2gocGF0aEl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgIHBhdGhJdGVtLmRtc29iamVjdCA9IG5ldyBEbXNPYmplY3QocGF0aEl0ZW0uZG1zb2JqZWN0KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0UGF0aDtcclxuICAgICAgICAgIH1cclxuICAgICAgICApKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGNoaWxkcmVuIG9mIGEgRG1zT2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRtc09iamVjdFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0W10+XHJcbiAgICovXHJcbiAgZ2V0Q2hpbGRyZW4oZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBPYnNlcnZhYmxlPERtc09iamVjdFtdPiB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2Rtc09iamVjdC5pZH0vY2hpbGRyZW5gO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogZG1zT2JqZWN0LnR5cGUubmFtZX0pKS5waXBlKFxyXG4gICAgICBtYXAoKHJlczogYW55W10pID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzLm1hcChyID0+IHRoaXMucmVzb2x2ZU9iamVjdFR5cGVzKG5ldyBEbXNPYmplY3QocikpKTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgdmVyc2lvbnMgb2YgYSBEbXNPYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWRcclxuICAgKiBAcGFyYW0gdHlwZVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PlxyXG4gICAqL1xyXG4gIGdldFZlcnNpb25zKGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtpZH0vdmVyc2lvbnNgO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZX0pKS5waXBlKFxyXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEbXNPYmplY3QocmVzKTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgYXR0YWNobWVudHMgb2YgYSBEbXNPYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZG1zT2JqZWN0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RBdHRhY2htZW50W10+XHJcbiAgICovXHJcbiAgZ2V0QXR0YWNobWVudHMoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBPYnNlcnZhYmxlPERtc09iamVjdEF0dGFjaG1lbnRbXT4ge1xyXG4gICAgY29uc3QgdHlwZSA9IGRtc09iamVjdC5jb250ZW50Py50eXBlO1xyXG4gICAgY29uc3QgdmVyc2lvbiA9IGRtc09iamVjdC5jb250ZW50Py5saW5rZWQgPyAtMSA6IGRtc09iamVjdC52ZXJzaW9uO1xyXG4gICAgY29uc3QgY29udGVudElEID0gZG1zT2JqZWN0LmNvbnRlbnQ/LmlkO1xyXG4gICAgY29uc3QgdXJpID0gVXRpbHMuYnVpbGRVcmkoYC9kbXMvJHtjb250ZW50SUR9L2F0dGFjaG1lbnRzYCwge3R5cGUsIHZlcnNpb259KTtcclxuICAgIHJldHVybiAhY29udGVudElEID8gb2YoW10pOiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKHVyaSkucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpLFxyXG4gICAgICBtYXAoKHJlczogYW55KSA9PiByZXMuYXR0YWNobWVudGluZm8gJiYgcmVzLmF0dGFjaG1lbnRpbmZvLmF0dGFjaG1lbnRzID8gcmVzLmF0dGFjaG1lbnRpbmZvLmF0dGFjaG1lbnRzXHJcbiAgICAgICAgLm1hcCgoYSwgaSkgPT4gbmV3IERtc09iamVjdEF0dGFjaG1lbnQoT2JqZWN0LmFzc2lnbihhLCB7aWQ6IGksIHByZXZpZXdVcmk6IHRoaXMuZ2V0QXR0YWNobWVudEJ5SW5kZXgoY29udGVudElELCBpLCB0eXBlLCB2ZXJzaW9uKX0pKSkgOiBbXVxyXG4gICAgICApKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIHNwZWNpZmljIGF0dGFjaG1lbnQgb2YgYSBEbXNPYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWRcclxuICAgKiBAcGFyYW0gaW5kZXhcclxuICAgKiBAcGFyYW0gdHlwZVxyXG4gICAqIEBwYXJhbSB2ZXJzaW9uXHJcbiAgICogQHJldHVybnMgc3RyaW5nXHJcbiAgICovXHJcbiAgZ2V0QXR0YWNobWVudEJ5SW5kZXgoaWQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgdHlwZTogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVyaSA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7aWR9L2F0dGFjaG1lbnRzLyR7aW5kZXh9YCwge3R5cGUsIHZlcnNpb259KTtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArIHVyaTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyB0aGUgVVJJIGZvciBnZXR0aW5nIGEgRG1zT2JqZWN0cyBzbGlkZSAoUHJldmlldyBpbWFnZSkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxyXG4gICAqIEBwYXJhbSB0eXBlIE9iamVjdHMgdHlwZSBuYW1lLCB3aWxsIGltcHJvdmUgbG9hZCB0aW1lIGlmIHByb3ZpZGVkXHJcbiAgICogQHBhcmFtIHZlcnNpb24gVGFyZ2V0IHZlcnNpb25cclxuICAgKiBAcGFyYW0gc2l6ZSBUaGUgc2l6ZSBvZiB0aGUgcHJldmlldyBpbWFnZSBpbiBweFxyXG4gICAqIEByZXR1cm5zIHN0cmluZ1xyXG4gICAqL1xyXG4gIGdldFNsaWRlKGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIsIHNpemU/OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFV0aWxzLmJ1aWxkVXJpKFxyXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArICcvZG1zLycgKyBpZCArICcvc2xpZGUnLFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICB2ZXJzaW9uLFxyXG4gICAgICAgIGhlaWdodDogc2l6ZVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIHRoZSBVUkkgZm9yIGdldHRpbmcgYSBEbXNPYmplY3RzIHByZXZpZXcgKFBERiByZW5kaXRpb24pLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIE9iamVjdHMgaWRcclxuICAgKiBAcGFyYW0gdHlwZV0gT2JqZWN0cyB0eXBlIG5hbWUsIHdpbGwgaW1wcm92ZSBsb2FkIHRpbWUgaWYgcHJvdmlkZWRcclxuICAgKiBAcGFyYW0gdmVyc2lvbiBUYXJnZXQgdmVyc2lvblxyXG4gICAqIEBwYXJhbSByZW5kaXRpb24gVGFyZ2V0IHJlbmRpdGlvbiAoUERGKVxyXG4gICAqIEByZXR1cm5zIHN0cmluZ1xyXG4gICAqL1xyXG4gIGdldFByZXZpZXcoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgcmVuZGl0aW9uPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShcclxuICAgICAgdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkgKyAnL2Rtcy8nICsgaWQgKyAnL2NvbnRlbnQnLFxyXG4gICAgICB7XHJcbiAgICAgICAgcmVuZGl0aW9uLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgdmVyc2lvblxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBhbiBleGlzdGluZyBkbXMgb2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIElEIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxyXG4gICAqIEBwYXJhbSBpbmRleGRhdGEgT2JqZWN0IGhvbGRpbmcgdGhlIG9iamVjdHMgaW5kZXhkYXRhIChwcm9wZXJ0eTogdmFsdWUpXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBvYmplY3QgdG8gYmUgdXBkYXRlZFxyXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIG9iamVjdCB0byBiZSB1cGRhdGVkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IFRoZSB1cGRhdGVkIGRtcyBvYmplY3RcclxuICAgKi9cclxuICB1cGRhdGVPYmplY3QoaWQ6IHN0cmluZywgaW5kZXhkYXRhOiBhbnksIHR5cGU/OiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIpOiBPYnNlcnZhYmxlPERtc09iamVjdD4ge1xyXG4gICAgY29uc3QgdXJsID0gVXRpbHMuYnVpbGRVcmkoYC9kbXMvJHtpZH1gLCB7dHlwZSwgdmVyc2lvbn0pO1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZSg8YW55PntpZCwgdHlwZSwgdHlwZU5hbWU6IHR5cGV9LCB0aGlzLmJhY2tlbmQucHV0KHVybCwgaW5kZXhkYXRhKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaCB0aGUgaGlzdG9yeSAoYXVkaXQpIG9mIG9uZSBkbXMgb2JqZWN0XHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGRtcyBvYmplY3QgdG8gZmV0Y2ggaGlzdG9yeSBmb3JcclxuICAgKiBAcGFyYW0gdHlwZSBUeXBlIG9mIHRoZSBkbXMgb2JqZWN0IHRvIGZldGNoIGhpc3RvcnkgZm9yXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxEbXNPYmplY3RIaXN0b3J5RW50cnlbXT4gVGhlIGhpc3Rvcnkgb2YgdGhlIGRtcyBvYmplY3RcclxuICAgKi9cclxuICBnZXRIaXN0b3J5KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPERtc09iamVjdEhpc3RvcnlFbnRyeVtdPiB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2lkfS9hdWRpdGA7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldEpzb24oVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogdHlwZX0pKS5waXBlKFxyXG4gICAgICBtYXAoKHJlcykgPT4gcmVzLmF1ZGl0Lm1hcCgoYXVkaXRFbnRyeSkgPT4gbmV3IERtc09iamVjdEhpc3RvcnlFbnRyeShhdWRpdEVudHJ5KSkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc3RvcmVzIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGUgc2VsZWN0ZWQgRG1zT2JqZWN0IGJ5IGFkZGluZyB0aGUgZWFybGllciB2ZXJzaW9uXHJcbiAgICogYXMgdGhlIG5ldyByZWNlbnQgdmVyc2lvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBETVMgb2JqZWN0IGlkXHJcbiAgICogQHBhcmFtIHZlcnNpb24gVGhlIHZlcnNpb24gdG8gYmUgcmVzdG9yZWRcclxuICAgKiBAcGFyYW0gdHlwZSBUaGUgZG1zIG9iamVjdCB0eXBlXHJcbiAgICogQHJldHVyblxyXG4gICAqL1xyXG4gIHJlc3RvcmVWZXJzaW9uKGlkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlciwgdHlwZT86IHN0cmluZykge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvcmVzdG9yZXZlcnNpb24vJHtpZH0vJHt2ZXJzaW9ufWA7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7dHlwZTogdHlwZX0pLCBudWxsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGlmIGRtc09iamVjdCBpcyBzcGVjaWZpZWQsIGxvYWQgbGF0ZXN0IHZlcnNpb24gYW5kIHRyaWdnZXIgRW5haW8gZXZlbnQgRE1TX09CSkVDVF9VUERBVEVEXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZG1zT2JqZWN0XHJcbiAgICogQHBhcmFtIHJlcXVlc3RcclxuICAgKiBAcmV0dXJuXHJcbiAgICovXHJcbiAgdHJpZ2dlclVwZGF0ZShkbXNPYmplY3Q6IERtc09iamVjdCwgcmVxdWVzdDogT2JzZXJ2YWJsZTxhbnk+KSB7XHJcbiAgICByZXR1cm4gIWRtc09iamVjdCA/IHJlcXVlc3QgOiByZXF1ZXN0LnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0RG1zT2JqZWN0KGRtc09iamVjdC5pZCwgZG1zT2JqZWN0LnR5cGVOYW1lKSksXHJcbiAgICAgIHRhcChfZG1zT2JqZWN0ID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQsIF9kbXNPYmplY3QpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgQ29udGVudFxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICByZW1vdmVDb250ZW50KGRtc09iamVjdDogRG1zT2JqZWN0KSB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy8ke2Rtc09iamVjdC5pZH0vY29udGVudGA7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbCh1cmkpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgRG1zT2JqZWN0LlxyXG4gICAqIEBwYXJhbSB0YXJnZXRUeXBlIFRhcmdldCBvYmplY3QgdHlwZSBuYW1lXHJcbiAgICogQHBhcmFtIGZpbGUgRmlsZSB0byBiZSBhZGRlZCBhcyBEbXNPYmplY3RzIGNvbnRlbnRcclxuICAgKiBAcGFyYW0gaW5kZXhEYXRhIEluZGV4ZGF0YSBhcyBwbGFpbiBvYmplY3Qgd2hlcmUga2V5cyBhcmUgdGhlIG9iamVjdHMgcHJvcGVydGllcyBhbmQgdmFsdWVzIHRoZSB2YWx1ZXMgdG8gYmUgYXBwbGllZCB0byBpdFxyXG4gICAqIEBwYXJhbSBwYXJlbnQgUGFyZW50IGNvbnRleHQgZm9sZGVyIG9mIHRoZSBuZXcgRG1zT2JqZWN0XHJcbiAgICovXHJcbiAgY3JlYXRlRG1zT2JqZWN0KHRhcmdldFR5cGU6IHN0cmluZywgZmlsZT86IEZpbGUsIGluZGV4RGF0YT86IGFueSwgcGFyZW50Pzoge2lkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmd9KTogT2JzZXJ2YWJsZTx7aWQ6IHN0cmluZywgdXJpOiBzdHJpbmd9PiB7XHJcblxyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGlmIChpbmRleERhdGEpIHtcclxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdkYXRhJywgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KGluZGV4RGF0YSldLCB7XHJcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgIH0pKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnbm9pbmRleGRhdGEnLCAnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpbGUpIHtcclxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlc1tdJywgZmlsZSwgVXRpbHMuZW5jb2RlRmlsZU5hbWUoZmlsZS5uYW1lKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHVyaSA9IGAvZG1zL2NyZWF0ZS8ke3RhcmdldFR5cGV9YDtcclxuICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgdXJpID0gVXRpbHMuYnVpbGRVcmkodXJpLCB7XHJcbiAgICAgICAgcGFyZW50SWQ6IHBhcmVudC5pZCxcclxuICAgICAgICBwYXJlbnRUeXBlOiBwYXJlbnQudHlwZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdE11bHRpUGFydCh1cmksIGZvcm1EYXRhLCBudWxsLCB7aGVhZGVyczoge319KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSBhIFN1YnNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcclxuICAgKiBAcGFyYW0gc3RyaW5nIHN1YmplY3RcclxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzZW5kZW1haWxcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5ZW1haWxcclxuICAgKiBAcGFyYW0gbW9kZSBTdWJzY3JpcHRpb25Nb2RlXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgY3JlYXRlU3Vic2NyaXB0aW9uKGRtc09iamVjdDogRG1zT2JqZWN0LCBzdWJqZWN0OiBzdHJpbmcsIHJlY2VpdmVyLCBzZW5kZW1haWw6IGJvb2xlYW4sIG9ubHllbWFpbDogYm9vbGVhbiwgbW9kZT86IFN1YnNjcmlwdGlvbk1vZGUpIHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3N1YnNjcmlwdGlvbi8ke2Rtc09iamVjdC5pZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xyXG4gICAgICBzdWJqZWN0LFxyXG4gICAgICB0eXBlOiBkbXNPYmplY3QudHlwZU5hbWUsXHJcbiAgICAgIHJlY2VpdmVyLFxyXG4gICAgICBzZW5kZW1haWwsXHJcbiAgICAgIG9ubHllbWFpbCxcclxuICAgICAgbW9kZVxyXG4gICAgfSksIHt9KVxyXG4gICAgKTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBSZXN1Ym1pc3Npb25cclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XHJcbiAgICogQHBhcmFtIHN0cmluZyBzdWJqZWN0XHJcbiAgICogQHBhcmFtIGR1ZVxyXG4gICAqIEBwYXJhbSByZWNlaXZlclxyXG4gICAqIEBwYXJhbSBib29sZWFuIHNlbmRFbWFpbFxyXG4gICAqIEBwYXJhbSBib29sZWFuIG9ubHlFbWFpbFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIGNyZWF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3Q6IERtc09iamVjdCwgc3ViamVjdDogc3RyaW5nLCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWw6IGJvb2xlYW4sIG9ubHlFbWFpbDogYm9vbGVhbikge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvcmVzdWJtaXNzaW9uLyR7ZG1zT2JqZWN0LmlkfWA7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XHJcbiAgICAgIHN1YmplY3QsXHJcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcclxuICAgICAgcmVjZWl2ZXIsXHJcbiAgICAgIGR1ZTogZHVlID8gZHVlLnRvSVNPU3RyaW5nKCkgOiAnJyxcclxuICAgICAgc2VuZGVtYWlsOiBzZW5kRW1haWwsXHJcbiAgICAgIG9ubHllbWFpbDogb25seUVtYWlsXHJcbiAgICB9KSwge30pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVhbW92ZSBhIFN1YnNjcmlwdGlvbiBieSBhIGdpdmVuIElkXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3Vic2NyaXB0aW9uSWRcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHJlbW92ZVN1YnNjcmlwdGlvbkJ5SWQoc3Vic2NyaXB0aW9uSWQsIGRtc09iamVjdD86IERtc09iamVjdCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5kZWwoYC9tZXNzYWdlcHJvdmlkZXIvc3Vic2NyaXB0aW9uLyR7c3Vic2NyaXB0aW9uSWR9YCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGEgUmVzdWJtaXNzaW9uIGJ5IGEgZ2l2ZW4gSWRcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpdGVtSWRcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHJlbW92ZVJlc3VibWlzc2lvbnNCeUlkKGl0ZW1JZCwgZG1zT2JqZWN0PzogRG1zT2JqZWN0KSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGRtc09iamVjdCwgdGhpcy5iYWNrZW5kLmRlbChgL2Rtcy9yZXN1Ym1pc3Npb24vJHtpdGVtSWR9YCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGEgUmVzdWJtaXNzaW9uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxyXG4gICAqIEBwYXJhbSBzdHJpbmcgc3ViamVjdFxyXG4gICAqIEBwYXJhbSBkdWVcclxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzZW5kRW1haWxcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5RW1haWxcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICB1cGRhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0OiBEbXNPYmplY3QsIHN1YmplY3Q6IHN0cmluZywgZHVlLCByZWNlaXZlciwgc2VuZEVtYWlsOiBib29sZWFuLCBvbmx5RW1haWw6IGJvb2xlYW4pIHtcclxuICAgIHJldHVybiB0aGlzLnJlbW92ZVJlc3VibWlzc2lvbnNCeUlkKGRtc09iamVjdC5pZCkucGlwZShtZXJnZU1hcCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJlc3VibWlzc2lvbihkbXNPYmplY3QsIHN1YmplY3QsIGR1ZSwgcmVjZWl2ZXIsIHNlbmRFbWFpbCwgb25seUVtYWlsKTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHRlciBmb3IgT3JnYW5pemF0aW9uIE9iamVjdHMgV2l0aCBSZWFkIFJpZ2h0c1xyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdF19IGRtc09iamVjdHNcclxuICAgKiBAcGFyYW0gc3RyaW5nXX0gb3JnYU5hbWVzXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgc2V0T3JnYW5pemF0aW9uT2JqZWN0c1dpdGhSZWFkUmlnaHRzKGRtc09iamVjdHM6IERtc09iamVjdFtdLCBvcmdhTmFtZXM6IHN0cmluZ1tdKSB7XHJcbiAgICBjb25zdCB1cmwgPSAnL2Rtcy9iYXRjaC9wdXRhZGRpdGlvbmFsdmlzaWJpbGl0eSc7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBvcmdhbml6YXRpb25vYmplY3RzOiBvcmdhTmFtZXMsXHJcbiAgICAgIG9iamVjdHM6IGRtc09iamVjdHMubWFwKG8gPT4gKHtcclxuICAgICAgICBpdGVtaWQ6IG8uaWQsXHJcbiAgICAgICAgdHlwZTogby50eXBlLm5hbWVcclxuICAgICAgfSkpXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3RzWzBdLCB0aGlzLmJhY2tlbmQucHV0KHVybCwgZGF0YSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTW92ZSBhIERNUyBPYmplY3RcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZFxyXG4gICAqIEBwYXJhbSB0eXBlTmFtZVxyXG4gICAqIEBwYXJhbSBwYXJlbnRJZFxyXG4gICAqIEBwYXJhbSBwYXJlbnRUeXBlTmFtZVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIG1vdmUoaWQsIHR5cGVOYW1lLCBwYXJlbnRJZCwgcGFyZW50VHlwZU5hbWUpIHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zL2xvY2F0aW9uLyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcclxuICAgICAgdHlwZTogdHlwZU5hbWUsXHJcbiAgICAgIHBhcmVudElkLFxyXG4gICAgICBwYXJlbnRUeXBlOiBwYXJlbnRUeXBlTmFtZVxyXG4gICAgfSksIHt9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvcHkgYSBETVMgT2JqZWN0XHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWRcclxuICAgKiBAcGFyYW0gdHlwZU5hbWVcclxuICAgKiBAcGFyYW0gcGFyZW50SWRcclxuICAgKiBAcGFyYW0gcGFyZW50VHlwZU5hbWVcclxuICAgKiBAcGFyYW0gY3JlYXRlQ29udGVudExpbmtcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBjb3B5KGlkLCB0eXBlTmFtZSwgcGFyZW50SWQsIHBhcmVudFR5cGVOYW1lLCBjcmVhdGVDb250ZW50TGluaykge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvY29weS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XHJcbiAgICAgIHR5cGU6IHR5cGVOYW1lLFxyXG4gICAgICBwYXJlbnRJZCxcclxuICAgICAgcGFyZW50VHlwZTogcGFyZW50VHlwZU5hbWUsXHJcbiAgICAgIGNyZWF0ZWNvbnRlbnRsaW5rOiBjcmVhdGVDb250ZW50TGlua1xyXG4gICAgfSksIHt9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldCBhIERNUyBPYmplY3QgdG8gRmluaWxpdGVkXHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGl0ZW1cclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBmaW5hbGl6ZShpdGVtOiBEbXNPYmplY3QpIHtcclxuICAgIGNvbnN0IHVybCA9ICcvZG1zL2ZpbmFsaXplLycgKyBpdGVtLmlkICsgJz90eXBlPScgKyBpdGVtLnR5cGVOYW1lO1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShpdGVtLCB0aGlzLmJhY2tlbmQucHV0KHVybCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIHRoZSBGaW5pbGl6ZWQgRmxhZyBmcm9tIGEgRE1TIE9iamVjdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBpdGVtXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgZGVmaW5hbGl6ZShpdGVtOiBEbXNPYmplY3QpIHtcclxuICAgIGNvbnN0IHVybCA9ICcvZG1zL2RlZmluYWxpemUvJyArIGl0ZW0uaWQgKyAnP3R5cGU9JyArIGl0ZW0udHlwZU5hbWU7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKGl0ZW0sIHRoaXMuYmFja2VuZC5wdXQodXJsKSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVMb2NhbENvcHlPZkRNU09iamVjdChkbXNPYmplY3Q6IERtc09iamVjdCk6IERtc09iamVjdCB7XHJcbiAgICBjb25zdCBiYXNlID0ge1xyXG4gICAgICBpZDogZG1zT2JqZWN0LmlkLFxyXG4gICAgICB0aXRsZTogZG1zT2JqZWN0LnRpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogZG1zT2JqZWN0LmRlc2NyaXB0aW9uLFxyXG4gICAgICB2ZXJzaW9uOiBkbXNPYmplY3QudmVyc2lvbixcclxuICAgICAgdmVyc2lvbnM6IGRtc09iamVjdC52ZXJzaW9ucyxcclxuICAgICAgZGF0YTogZG1zT2JqZWN0LmRhdGEsXHJcbiAgICAgIHR5cGU6IGRtc09iamVjdC50eXBlTmFtZSxcclxuXHJcbiAgICAgIGFjdGl2ZXZlcnNpb246IGRtc09iamVjdC5pc0FjdGl2ZVZlcnNpb24sXHJcbiAgICAgIGZpbmFsaXplZDogZG1zT2JqZWN0LmlzRmluYWxpemVkLFxyXG4gICAgICBmYXZvcml0ZTogZG1zT2JqZWN0LmlzRmF2b3JpdGUsXHJcbiAgICAgIGZvbGRlcjogZG1zT2JqZWN0LmlzRm9sZGVyLFxyXG4gICAgICBpc2NvbnRleHRmb2xkZXI6IGRtc09iamVjdC5pc0NvbnRleHRGb2xkZXIsXHJcblxyXG4gICAgICBjb250ZXh0Zm9sZGVyOiBkbXNPYmplY3QuY29udGV4dEZvbGRlciA/IHtcclxuICAgICAgICBpZDogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuaWQsXHJcbiAgICAgICAgdHlwZTogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudHlwZU5hbWUsXHJcbiAgICAgICAgdGl0bGU6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnRpdGxlLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci5kZXNjcmlwdGlvblxyXG4gICAgICB9IDogbnVsbCxcclxuXHJcbiAgICAgIGNyZWF0ZWQ6IGRtc09iamVjdC5jcmVhdGVkLFxyXG4gICAgICBtb2RpZmllZDogZG1zT2JqZWN0Lm1vZGlmaWVkLFxyXG5cclxuICAgICAgbG9jazogIWRtc09iamVjdC5sb2NrID8gJ05PVF9MT0NLRUQnIDogZG1zT2JqZWN0LmxvY2suYnkubWUgPyAnTE9DS0VEX0JZX1NFU1NJT05fVVNFUicgOiAnTE9DS0VEX0JZX09USEVSX1VTRVInLFxyXG4gICAgICBsb2NraW5mbzogZG1zT2JqZWN0LmxvY2sgPyB7dXNlcm5hbWU6IGRtc09iamVjdC5sb2NrLmJ5Lm5hbWUsIHVzZXJ0aXRsZTogZG1zT2JqZWN0LmxvY2suYnkubGFiZWwsIHRpbWU6IGRtc09iamVjdC5sb2NrLm9ufSA6IG51bGwsXHJcblxyXG4gICAgICByaWdodHM6IFt7cHJpdmlsZWdlczoge1xyXG4gICAgICAgIHNlbGVjdDogZG1zT2JqZWN0LnJpZ2h0cy5zZWxlY3QsXHJcbiAgICAgICAgZWRpdDogZG1zT2JqZWN0LnJpZ2h0cy5lZGl0LFxyXG4gICAgICAgIGRlbGV0ZTogZG1zT2JqZWN0LnJpZ2h0cy5kZWxldGUsXHJcbiAgICAgICAgZmluYWxpemU6IGRtc09iamVjdC5yaWdodHMuZmluYWxpemUsXHJcbiAgICAgICAgcmVjeWNsZTogZG1zT2JqZWN0LnJpZ2h0cy5yZWN5Y2xlXHJcbiAgICAgIH19XSxcclxuXHJcbiAgICAgIGNvbnRlbnRpZDogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5pZCA6IG51bGwsXHJcbiAgICAgIGNvbnRlbnR0eXBlOiBkbXNPYmplY3QuY29udGVudCA/IGRtc09iamVjdC5jb250ZW50LnR5cGUgOiBudWxsLFxyXG4gICAgICBjb250ZW50Y291bnQ6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQuY291bnQgOiBudWxsLFxyXG4gICAgICBjb250ZW50czogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5jb250ZW50cyA6IG51bGwsXHJcblxyXG4gICAgICBzdWJzY3JpcHRpb25zOiBkbXNPYmplY3Quc3Vic2NyaXB0aW9ucyxcclxuICAgICAgcmVzdWJtaXNzaW9uczogZG1zT2JqZWN0LnJlc3VibWlzc2lvbnMsXHJcbiAgICAgIGFkZGl0aW9uYWx2aXNpYmlsaXR5OiBkbXNPYmplY3QuYWRkaXRpb25hbHZpc2liaWxpdHlcclxuICAgIH07XHJcblxyXG4gICAgbGV0IGNvcGllZERtc09iamVjdCA9IG5ldyBEbXNPYmplY3QoYmFzZSk7XHJcbiAgICBjb3BpZWREbXNPYmplY3QudHlwZSA9IGRtc09iamVjdC50eXBlO1xyXG5cclxuICAgIHJldHVybiBjb3BpZWREbXNPYmplY3Q7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
488
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvZG1zL2Rtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFHckQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQixvREFBZ0MsQ0FBQTtJQUNoQyw2REFBeUMsQ0FBQTtJQUN6QywrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUkzQjtBQUVEOztHQUVHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFFckIsWUFBb0IsT0FBdUIsRUFDakMsYUFBNEIsRUFDNUIsWUFBMEI7UUFGaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDakMsa0JBQWEsR0FB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LENBQUMsQ0FBQyxJQUFJO1lBQzFELFdBQVcsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUM5RCxZQUFZLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDaEUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBRS9ELGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTtZQUN0QyxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWE7WUFDdEMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLG9CQUFvQjtTQUNyRCxDQUFDO1FBRUYsSUFBSSxlQUFlLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsZUFBZSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBRXRDLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7OztZQTNnQkYsVUFBVTs7O1lBakJILGNBQWM7WUFDZCxhQUFhO1lBSWIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGFwLCBtZXJnZU1hcCwgY2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0Rtc09iamVjdCwgRG1zT2JqZWN0QXR0YWNobWVudH0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC5tb2RlbCc7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtTeXN0ZW1TZXJ2aWNlfSBmcm9tICcuLi9zeXN0ZW0vc3lzdGVtLnNlcnZpY2UnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtEbXNPYmplY3RIaXN0b3J5RW50cnl9IGZyb20gJy4uLy4uL21vZGVsL2Rtcy1vYmplY3QtaGlzdG9yeS5tb2RlbCc7XHJcbmltcG9ydCB7RW5haW9FdmVudH0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50cyc7XHJcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi9ldmVudHMvZXZlbnQuc2VydmljZSc7XHJcbmltcG9ydCB7RG1zUGFyYW1zfSBmcm9tICcuL2Rtc1BhcmFtcy5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGVudW0gU3Vic2NyaXB0aW9uTW9kZSB7XHJcbiAgT05MWV9JTkRFWF9EQVRBX0NIQU5HRUQgPSAnTUVUQScsXHJcbiAgT05MWV9ET0NVTUVOVF9DT05URU5UX0NIQU5HRUQgPSAnQ09OVEVOVCcsXHJcbiAgRE1TX09CSkVDVF9DSEFOR0VEID0gJ0JPVEgnXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0aW9uIG9mIERNUyBTZXJ2aWNlc1xyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRG1zU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGEgZG1zIG9iamVjdC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBPYmplY3RzIGlkXHJcbiAgICogQHBhcmFtIHR5cGUgT2JqZWN0cyB0eXBlIG5hbWUsIHdpbGwgaW1wcm92ZSBsb2FkIHRpbWUgaWYgcHJvdmlkZWRcclxuICAgKiBAcGFyYW0gdmVyc2lvbiBUYXJnZXQgdmVyc2lvblxyXG4gICAqIEBwYXJhbSBpbnRlbnQgVXNlZCBmb3Igc2VydmVyIHNpZGUgbG9nZ2luZy4gSWYgeW91IHByb3ZpZGUgYW4gaW50ZW50LCB0aGUgYmFja2VuZCB3aWxsIHJlY29nbml6ZSB0aGUgcmVxdWVzdCBhbmQgYWRkIGl0IHRvIGl0cyBsb2dzXHJcbiAgICogQHBhcmFtIHJlY3ljbGViaW4gSWYgdHJ1ZSwgb2JqZWN0cyBmcm9tIHJlY3ljbGViaW4gYXJlIGluY2x1ZGVkXHJcbiAgICogQHBhcmFtIHdpdGhTdG9yYWdlSW5mbyBJZiB0cnVlLCBzdG9yYWdlaW5mbyBpcyBpbmNsdWRlZCBvbiB0aGUgZG1zIG9iamVjdFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0PlxyXG4gICAqL1xyXG4gIGdldERtc09iamVjdChpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCBpbnRlbnQ/OiBzdHJpbmcsIHJlY3ljbGViaW4/OiBib29sZWFuLCB3aXRoU3RvcmFnZUluZm8/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7aWR9YDtcclxuXHJcbiAgICBjb25zdCBxID0ge1xyXG4gICAgICBhZGRpdGlvbmFsdmlzaWJpbGl0eTogdHJ1ZSxcclxuICAgICAgc3Vic2NyaXB0aW9uOiAnQ1VSUkVOVCcsXHJcbiAgICAgIHJlc3VibWlzc2lvbjogJ0NVUlJFTlQnLFxyXG4gICAgICByaWdodHM6ICdDVVJSRU5UJyxcclxuICAgICAgZGF0YW1ldGE6ICd0cnVlJyxcclxuICAgICAgY29udGV4dGZvbGRlcjogJ3RydWUnLFxyXG4gICAgICB0eXBlLFxyXG4gICAgICByZWN5Y2xlYmluLFxyXG4gICAgICB2ZXJzaW9uLFxyXG4gICAgICBzdG9yYWdlaW5mbzogd2l0aFN0b3JhZ2VJbmZvLFxyXG4gICAgICAnX2ludGVudCc6IGludGVudFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRWaWFUZW1wQ2FjaGUoVXRpbHMuYnVpbGRVcmkodXJpLCBxKSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihVdGlscy5jYXRjaFNraXAoZXJyID0+IGVyci5zdGF0dXMgPT09IDQwNCkpLFxyXG4gICAgICAgIG1hcChyZXMgPT4gdGhpcy5yZXNvbHZlT2JqZWN0VHlwZXMobmV3IERtc09iamVjdChyZXMpKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgdGhlIERNUyBPYmplY3RzIGJ5IHBhcmFtc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc1BhcmFtcyBwYXJhbXNcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cclxuICAgKi9cclxuICBnZXREbXNPYmplY3RCeVBhcmFtcyhwYXJhbXM6IERtc1BhcmFtcyk6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXREbXNPYmplY3QocGFyYW1zLmlkLCBwYXJhbXMudHlwZSwgcGFyYW1zLnZlcnNpb24sIHBhcmFtcy5pbnRlbnQsIHBhcmFtcy5yZWN5Y2xlYmluLCBwYXJhbXMud2l0aFN0b3JhZ2VJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlb2x2ZXIgb2YgT2JqZWN0IFR5cGVzIGJ5IERNUyBPYmplY3RcclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XHJcbiAgICogQHJldHVybnMgRG1zT2JqZWN0XHJcbiAgICovXHJcbiAgcmVzb2x2ZU9iamVjdFR5cGVzKGRtc09iamVjdDogRG1zT2JqZWN0KTogRG1zT2JqZWN0IHtcclxuICAgIGRtc09iamVjdC50eXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUoZG1zT2JqZWN0LnR5cGVOYW1lKTtcclxuXHJcbiAgICBpZiAoZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIpIHtcclxuICAgICAgZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIudHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGVOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZG1zT2JqZWN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlcyBhIERNUyBvYmplY3QuXHJcbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgZG1zIG9iamVjdCB0byBiZSBkZWxldGVkLlxyXG4gICAqIEBwYXJhbSB0eXBlIFR5cGUgb2Ygb2JqZWN0XHJcbiAgICogQHBhcmFtIGhhcmREZWxldGUgSWYgb2JqZWN0IHNob3VsZCByZWFsbHkgYmUgZGVsZXRlZCBvciBvbmx5IHB1dCBpbnRvIHRoZSByZWN5Y2xlIGJpblxyXG4gICAqL1xyXG4gIGRlbGV0ZURtc09iamVjdChpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCBoYXJkRGVsZXRlPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgL2Rtcy8ke2lkfWA7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcclxuICAgIGlmICh0eXBlICYmIHR5cGUubGVuZ3RoID4gMCkge1xyXG4gICAgICBwYXJhbXNbJ3R5cGUnXSA9IHR5cGU7XHJcbiAgICB9XHJcbiAgICBpZiAoaGFyZERlbGV0ZSkge1xyXG4gICAgICBwYXJhbXNbJ2hhcmRkZWxldGUnXSA9IGhhcmREZWxldGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbChVdGlscy5idWlsZFVyaSh1cmwsIHBhcmFtcykpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgY29udGV4dCBwYXRoIG9mIHRoZSBnaXZlbiBkbXMgb2JqZWN0XHJcbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgb2JqZWN0LlxyXG4gICAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGggb2YgdGhlIGRtcyBvYmplY3RcclxuICAgKi9cclxuICBnZXRDb250ZXh0UGF0aChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmdldChgL2Rtcy8ke2lkfS9jb250ZXh0YClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKFxyXG4gICAgICAgICAgY29udGV4dFBhdGggPT4ge1xyXG4gICAgICAgICAgICBjb250ZXh0UGF0aC5mb3JFYWNoKHBhdGhJdGVtID0+IHtcclxuICAgICAgICAgICAgICBwYXRoSXRlbS5kbXNvYmplY3QgPSBuZXcgRG1zT2JqZWN0KHBhdGhJdGVtLmRtc29iamVjdCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gY29udGV4dFBhdGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBjaGlsZHJlbiBvZiBhIERtc09iamVjdC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBkbXNPYmplY3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdFtdPlxyXG4gICAqL1xyXG4gIGdldENoaWxkcmVuKGRtc09iamVjdDogRG1zT2JqZWN0KTogT2JzZXJ2YWJsZTxEbXNPYmplY3RbXT4ge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtkbXNPYmplY3QuaWR9L2NoaWxkcmVuYDtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGU6IGRtc09iamVjdC50eXBlLm5hbWV9KSkucGlwZShcclxuICAgICAgbWFwKChyZXM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHJlcy5tYXAociA9PiB0aGlzLnJlc29sdmVPYmplY3RUeXBlcyhuZXcgRG1zT2JqZWN0KHIpKSk7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIHZlcnNpb25zIG9mIGEgRG1zT2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkXHJcbiAgICogQHBhcmFtIHR5cGVcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD5cclxuICAgKi9cclxuICBnZXRWZXJzaW9ucyhpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxEbXNPYmplY3Q+IHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7aWR9L3ZlcnNpb25zYDtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0VmlhVGVtcENhY2hlKFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGV9KSkucGlwZShcclxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgRG1zT2JqZWN0KHJlcyk7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGF0dGFjaG1lbnRzIG9mIGEgRG1zT2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRtc09iamVjdFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8RG1zT2JqZWN0QXR0YWNobWVudFtdPlxyXG4gICAqL1xyXG4gIGdldEF0dGFjaG1lbnRzKGRtc09iamVjdDogRG1zT2JqZWN0KTogT2JzZXJ2YWJsZTxEbXNPYmplY3RBdHRhY2htZW50W10+IHtcclxuICAgIGNvbnN0IHR5cGUgPSBkbXNPYmplY3QuY29udGVudD8udHlwZTtcclxuICAgIGNvbnN0IHZlcnNpb24gPSBkbXNPYmplY3QuY29udGVudD8ubGlua2VkID8gLTEgOiBkbXNPYmplY3QudmVyc2lvbjtcclxuICAgIGNvbnN0IGNvbnRlbnRJRCA9IGRtc09iamVjdC5jb250ZW50Py5pZDtcclxuICAgIGNvbnN0IHVyaSA9IFV0aWxzLmJ1aWxkVXJpKGAvZG1zLyR7Y29udGVudElEfS9hdHRhY2htZW50c2AsIHt0eXBlLCB2ZXJzaW9ufSk7XHJcbiAgICByZXR1cm4gIWNvbnRlbnRJRCA/IG9mKFtdKSA6IHRoaXMuYmFja2VuZC5nZXRWaWFUZW1wQ2FjaGUodXJpKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKFV0aWxzLmNhdGNoU2tpcChlcnIgPT4gZXJyLnN0YXR1cyA9PT0gNDA0KSksXHJcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHJlcy5hdHRhY2htZW50aW5mbyAmJiByZXMuYXR0YWNobWVudGluZm8uYXR0YWNobWVudHMgPyByZXMuYXR0YWNobWVudGluZm8uYXR0YWNobWVudHNcclxuICAgICAgICAubWFwKChhLCBpKSA9PiBuZXcgRG1zT2JqZWN0QXR0YWNobWVudChPYmplY3QuYXNzaWduKGEsIHtpZDogaSwgcHJldmlld1VyaTogdGhpcy5nZXRBdHRhY2htZW50QnlJbmRleChjb250ZW50SUQsIGksIHR5cGUsIHZlcnNpb24pfSkpKSA6IFtdXHJcbiAgICAgICkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgc3BlY2lmaWMgYXR0YWNobWVudCBvZiBhIERtc09iamVjdC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZFxyXG4gICAqIEBwYXJhbSBpbmRleFxyXG4gICAqIEBwYXJhbSB0eXBlXHJcbiAgICogQHBhcmFtIHZlcnNpb25cclxuICAgKiBAcmV0dXJucyBzdHJpbmdcclxuICAgKi9cclxuICBnZXRBdHRhY2htZW50QnlJbmRleChpZDogc3RyaW5nLCBpbmRleDogbnVtYmVyLCB0eXBlOiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdXJpID0gVXRpbHMuYnVpbGRVcmkoYC9kbXMvJHtpZH0vYXR0YWNobWVudHMvJHtpbmRleH1gLCB7dHlwZSwgdmVyc2lvbn0pO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgdXJpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIHRoZSBVUkkgZm9yIGdldHRpbmcgYSBEbXNPYmplY3RzIHNsaWRlIChQcmV2aWV3IGltYWdlKS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBPYmplY3RzIGlkXHJcbiAgICogQHBhcmFtIHR5cGUgT2JqZWN0cyB0eXBlIG5hbWUsIHdpbGwgaW1wcm92ZSBsb2FkIHRpbWUgaWYgcHJvdmlkZWRcclxuICAgKiBAcGFyYW0gdmVyc2lvbiBUYXJnZXQgdmVyc2lvblxyXG4gICAqIEBwYXJhbSBzaXplIFRoZSBzaXplIG9mIHRoZSBwcmV2aWV3IGltYWdlIGluIHB4XHJcbiAgICogQHJldHVybnMgc3RyaW5nXHJcbiAgICovXHJcbiAgZ2V0U2xpZGUoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlciwgc2l6ZT86IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gVXRpbHMuYnVpbGRVcmkoXHJcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgJy9kbXMvJyArIGlkICsgJy9zbGlkZScsXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHZlcnNpb24sXHJcbiAgICAgICAgaGVpZ2h0OiBzaXplXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmF0ZXMgdGhlIFVSSSBmb3IgZ2V0dGluZyBhIERtc09iamVjdHMgcHJldmlldyAoUERGIHJlbmRpdGlvbikuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgT2JqZWN0cyBpZFxyXG4gICAqIEBwYXJhbSB0eXBlXSBPYmplY3RzIHR5cGUgbmFtZSwgd2lsbCBpbXByb3ZlIGxvYWQgdGltZSBpZiBwcm92aWRlZFxyXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRhcmdldCB2ZXJzaW9uXHJcbiAgICogQHBhcmFtIHJlbmRpdGlvbiBUYXJnZXQgcmVuZGl0aW9uIChQREYpXHJcbiAgICogQHJldHVybnMgc3RyaW5nXHJcbiAgICovXHJcbiAgZ2V0UHJldmlldyhpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyLCByZW5kaXRpb24/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFV0aWxzLmJ1aWxkVXJpKFxyXG4gICAgICB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArICcvZG1zLycgKyBpZCArICcvY29udGVudCcsXHJcbiAgICAgIHtcclxuICAgICAgICByZW5kaXRpb24sXHJcbiAgICAgICAgdHlwZSxcclxuICAgICAgICB2ZXJzaW9uXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIGFuIGV4aXN0aW5nIGRtcyBvYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIG9iamVjdCB0byBiZSB1cGRhdGVkXHJcbiAgICogQHBhcmFtIGluZGV4ZGF0YSBPYmplY3QgaG9sZGluZyB0aGUgb2JqZWN0cyBpbmRleGRhdGEgKHByb3BlcnR5OiB2YWx1ZSlcclxuICAgKiBAcGFyYW0gdHlwZSBUaGUgb2JqZWN0IHR5cGUgb2YgdGhlIG9iamVjdCB0byBiZSB1cGRhdGVkXHJcbiAgICogQHBhcmFtIHZlcnNpb24gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgb2JqZWN0IHRvIGJlIHVwZGF0ZWRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdD4gVGhlIHVwZGF0ZWQgZG1zIG9iamVjdFxyXG4gICAqL1xyXG4gIHVwZGF0ZU9iamVjdChpZDogc3RyaW5nLCBpbmRleGRhdGE6IGFueSwgdHlwZT86IHN0cmluZywgdmVyc2lvbj86IG51bWJlcik6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XHJcbiAgICBjb25zdCB1cmwgPSBVdGlscy5idWlsZFVyaShgL2Rtcy8ke2lkfWAsIHt0eXBlLCB2ZXJzaW9ufSk7XHJcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyVXBkYXRlKDxhbnk+e2lkLCB0eXBlLCB0eXBlTmFtZTogdHlwZX0sIHRoaXMuYmFja2VuZC5wdXQodXJsLCBpbmRleGRhdGEpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoIHRoZSBoaXN0b3J5IChhdWRpdCkgb2Ygb25lIGRtcyBvYmplY3RcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgZG1zIG9iamVjdCB0byBmZXRjaCBoaXN0b3J5IGZvclxyXG4gICAqIEBwYXJhbSB0eXBlIFR5cGUgb2YgdGhlIGRtcyBvYmplY3QgdG8gZmV0Y2ggaGlzdG9yeSBmb3JcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPERtc09iamVjdEhpc3RvcnlFbnRyeVtdPiBUaGUgaGlzdG9yeSBvZiB0aGUgZG1zIG9iamVjdFxyXG4gICAqL1xyXG4gIGdldEhpc3RvcnkoaWQ6IHN0cmluZywgdHlwZT86IHN0cmluZyk6IE9ic2VydmFibGU8RG1zT2JqZWN0SGlzdG9yeUVudHJ5W10+IHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zLyR7aWR9L2F1ZGl0YDtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZ2V0SnNvbihVdGlscy5idWlsZFVyaSh1cmksIHt0eXBlOiB0eXBlfSkpLnBpcGUobWFwKChyZXMpID0+IHJlcy5hdWRpdC5tYXAoKGF1ZGl0RW50cnkpID0+IG5ldyBEbXNPYmplY3RIaXN0b3J5RW50cnkoYXVkaXRFbnRyeSkpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXN0b3JlcyBhbiBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIHNlbGVjdGVkIERtc09iamVjdCBieSBhZGRpbmcgdGhlIGVhcmxpZXIgdmVyc2lvblxyXG4gICAqIGFzIHRoZSBuZXcgcmVjZW50IHZlcnNpb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgRE1TIG9iamVjdCBpZFxyXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIHRvIGJlIHJlc3RvcmVkXHJcbiAgICogQHBhcmFtIHR5cGUgVGhlIGRtcyBvYmplY3QgdHlwZVxyXG4gICAqIEByZXR1cm5cclxuICAgKi9cclxuICByZXN0b3JlVmVyc2lvbihpZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3Jlc3RvcmV2ZXJzaW9uLyR7aWR9LyR7dmVyc2lvbn1gO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge3R5cGU6IHR5cGV9KSwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBpZiBkbXNPYmplY3QgaXMgc3BlY2lmaWVkLCBsb2FkIGxhdGVzdCB2ZXJzaW9uIGFuZCB0cmlnZ2VyIEVuYWlvIGV2ZW50IERNU19PQkpFQ1RfVVBEQVRFRFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGRtc09iamVjdFxyXG4gICAqIEBwYXJhbSByZXF1ZXN0XHJcbiAgICogQHJldHVyblxyXG4gICAqL1xyXG4gIHRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0OiBEbXNPYmplY3QsIHJlcXVlc3Q6IE9ic2VydmFibGU8YW55Pikge1xyXG4gICAgcmV0dXJuICFkbXNPYmplY3QgPyByZXF1ZXN0IDogcmVxdWVzdC5waXBlKFxyXG4gICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldERtc09iamVjdChkbXNPYmplY3QuaWQsIGRtc09iamVjdC50eXBlTmFtZSkpLFxyXG4gICAgICB0YXAoX2Rtc09iamVjdCA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVELCBfZG1zT2JqZWN0KSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIENvbnRlbnRcclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcmVtb3ZlQ29udGVudChkbXNPYmplY3Q6IERtc09iamVjdCkge1xyXG4gICAgY29uc3QgdXJpID0gYC9kbXMvJHtkbXNPYmplY3QuaWR9L2NvbnRlbnRgO1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5kZWwodXJpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgbmV3IERtc09iamVjdC5cclxuICAgKiBAcGFyYW0gdGFyZ2V0VHlwZSBUYXJnZXQgb2JqZWN0IHR5cGUgbmFtZVxyXG4gICAqIEBwYXJhbSBmaWxlIEZpbGUgdG8gYmUgYWRkZWQgYXMgRG1zT2JqZWN0cyBjb250ZW50XHJcbiAgICogQHBhcmFtIGluZGV4RGF0YSBJbmRleGRhdGEgYXMgcGxhaW4gb2JqZWN0IHdoZXJlIGtleXMgYXJlIHRoZSBvYmplY3RzIHByb3BlcnRpZXMgYW5kIHZhbHVlcyB0aGUgdmFsdWVzIHRvIGJlIGFwcGxpZWQgdG8gaXRcclxuICAgKiBAcGFyYW0gcGFyZW50IFBhcmVudCBjb250ZXh0IGZvbGRlciBvZiB0aGUgbmV3IERtc09iamVjdFxyXG4gICAqL1xyXG4gIGNyZWF0ZURtc09iamVjdCh0YXJnZXRUeXBlOiBzdHJpbmcsIGZpbGU/OiBGaWxlLCBpbmRleERhdGE/OiBhbnksIHBhcmVudD86IHtpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nfSk6IE9ic2VydmFibGU8e2lkOiBzdHJpbmcsIHVyaTogc3RyaW5nfT4ge1xyXG5cclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBpZiAoaW5kZXhEYXRhKSB7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZGF0YScsIG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShpbmRleERhdGEpXSwge1xyXG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICB9KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ25vaW5kZXhkYXRhJywgJycpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZXNbXScsIGZpbGUsIFV0aWxzLmVuY29kZUZpbGVOYW1lKGZpbGUubmFtZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB1cmkgPSBgL2Rtcy9jcmVhdGUvJHt0YXJnZXRUeXBlfWA7XHJcbiAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgIHVyaSA9IFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xyXG4gICAgICAgIHBhcmVudElkOiBwYXJlbnQuaWQsXHJcbiAgICAgICAgcGFyZW50VHlwZTogcGFyZW50LnR5cGVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3RNdWx0aVBhcnQodXJpLCBmb3JtRGF0YSwgbnVsbCwge2hlYWRlcnM6IHt9fSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBTdWJzY3JpcHRpb25cclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgZG1zT2JqZWN0XHJcbiAgICogQHBhcmFtIHN0cmluZyBzdWJqZWN0XHJcbiAgICogQHBhcmFtIHJlY2VpdmVyXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2VuZGVtYWlsXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gb25seWVtYWlsXHJcbiAgICogQHBhcmFtIG1vZGUgU3Vic2NyaXB0aW9uTW9kZVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIGNyZWF0ZVN1YnNjcmlwdGlvbihkbXNPYmplY3Q6IERtc09iamVjdCwgc3ViamVjdDogc3RyaW5nLCByZWNlaXZlciwgc2VuZGVtYWlsOiBib29sZWFuLCBvbmx5ZW1haWw6IGJvb2xlYW4sIG1vZGU/OiBTdWJzY3JpcHRpb25Nb2RlKSB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9zdWJzY3JpcHRpb24vJHtkbXNPYmplY3QuaWR9YDtcclxuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQucG9zdChVdGlscy5idWlsZFVyaSh1cmksIHtcclxuICAgICAgc3ViamVjdCxcclxuICAgICAgdHlwZTogZG1zT2JqZWN0LnR5cGVOYW1lLFxyXG4gICAgICByZWNlaXZlcixcclxuICAgICAgc2VuZGVtYWlsLFxyXG4gICAgICBvbmx5ZW1haWwsXHJcbiAgICAgIG1vZGVcclxuICAgIH0pLCB7fSlcclxuICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIGEgUmVzdWJtaXNzaW9uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0IGRtc09iamVjdFxyXG4gICAqIEBwYXJhbSBzdHJpbmcgc3ViamVjdFxyXG4gICAqIEBwYXJhbSBkdWVcclxuICAgKiBAcGFyYW0gcmVjZWl2ZXJcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBzZW5kRW1haWxcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBvbmx5RW1haWxcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBjcmVhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0OiBEbXNPYmplY3QsIHN1YmplY3Q6IHN0cmluZywgZHVlLCByZWNlaXZlciwgc2VuZEVtYWlsOiBib29sZWFuLCBvbmx5RW1haWw6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zL3Jlc3VibWlzc2lvbi8ke2Rtc09iamVjdC5pZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xyXG4gICAgICBzdWJqZWN0LFxyXG4gICAgICB0eXBlOiBkbXNPYmplY3QudHlwZU5hbWUsXHJcbiAgICAgIHJlY2VpdmVyLFxyXG4gICAgICBkdWU6IGR1ZSA/IGR1ZS50b0lTT1N0cmluZygpIDogJycsXHJcbiAgICAgIHNlbmRlbWFpbDogc2VuZEVtYWlsLFxyXG4gICAgICBvbmx5ZW1haWw6IG9ubHlFbWFpbFxyXG4gICAgfSksIHt9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlYW1vdmUgYSBTdWJzY3JpcHRpb24gYnkgYSBnaXZlbiBJZFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN1YnNjcmlwdGlvbklkXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICByZW1vdmVTdWJzY3JpcHRpb25CeUlkKHN1YnNjcmlwdGlvbklkLCBkbXNPYmplY3Q/OiBEbXNPYmplY3QpIHtcclxuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0LCB0aGlzLmJhY2tlbmQuZGVsKGAvbWVzc2FnZXByb3ZpZGVyL3N1YnNjcmlwdGlvbi8ke3N1YnNjcmlwdGlvbklkfWApKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBhIFJlc3VibWlzc2lvbiBieSBhIGdpdmVuIElkXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaXRlbUlkXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICByZW1vdmVSZXN1Ym1pc3Npb25zQnlJZChpdGVtSWQsIGRtc09iamVjdD86IERtc09iamVjdCkge1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShkbXNPYmplY3QsIHRoaXMuYmFja2VuZC5kZWwoYC9kbXMvcmVzdWJtaXNzaW9uLyR7aXRlbUlkfWApKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBhIFJlc3VibWlzc2lvblxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBkbXNPYmplY3RcclxuICAgKiBAcGFyYW0gc3RyaW5nIHN1YmplY3RcclxuICAgKiBAcGFyYW0gZHVlXHJcbiAgICogQHBhcmFtIHJlY2VpdmVyXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gc2VuZEVtYWlsXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gb25seUVtYWlsXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgdXBkYXRlUmVzdWJtaXNzaW9uKGRtc09iamVjdDogRG1zT2JqZWN0LCBzdWJqZWN0OiBzdHJpbmcsIGR1ZSwgcmVjZWl2ZXIsIHNlbmRFbWFpbDogYm9vbGVhbiwgb25seUVtYWlsOiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVSZXN1Ym1pc3Npb25zQnlJZChkbXNPYmplY3QuaWQpLnBpcGUobWVyZ2VNYXAoKCkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVSZXN1Ym1pc3Npb24oZG1zT2JqZWN0LCBzdWJqZWN0LCBkdWUsIHJlY2VpdmVyLCBzZW5kRW1haWwsIG9ubHlFbWFpbCk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXR0ZXIgZm9yIE9yZ2FuaXphdGlvbiBPYmplY3RzIFdpdGggUmVhZCBSaWdodHNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3RdfSBkbXNPYmplY3RzXHJcbiAgICogQHBhcmFtIHN0cmluZ119IG9yZ2FOYW1lc1xyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHNldE9yZ2FuaXphdGlvbk9iamVjdHNXaXRoUmVhZFJpZ2h0cyhkbXNPYmplY3RzOiBEbXNPYmplY3RbXSwgb3JnYU5hbWVzOiBzdHJpbmdbXSkge1xyXG4gICAgY29uc3QgdXJsID0gJy9kbXMvYmF0Y2gvcHV0YWRkaXRpb25hbHZpc2liaWxpdHknO1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgb3JnYW5pemF0aW9ub2JqZWN0czogb3JnYU5hbWVzLFxyXG4gICAgICBvYmplY3RzOiBkbXNPYmplY3RzLm1hcChvID0+ICh7XHJcbiAgICAgICAgaXRlbWlkOiBvLmlkLFxyXG4gICAgICAgIHR5cGU6IG8udHlwZS5uYW1lXHJcbiAgICAgIH0pKVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoZG1zT2JqZWN0c1swXSwgdGhpcy5iYWNrZW5kLnB1dCh1cmwsIGRhdGEpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1vdmUgYSBETVMgT2JqZWN0XHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWRcclxuICAgKiBAcGFyYW0gdHlwZU5hbWVcclxuICAgKiBAcGFyYW0gcGFyZW50SWRcclxuICAgKiBAcGFyYW0gcGFyZW50VHlwZU5hbWVcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBtb3ZlKGlkLCB0eXBlTmFtZSwgcGFyZW50SWQsIHBhcmVudFR5cGVOYW1lKSB7XHJcbiAgICBjb25zdCB1cmkgPSBgL2Rtcy9sb2NhdGlvbi8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QoVXRpbHMuYnVpbGRVcmkodXJpLCB7XHJcbiAgICAgIHR5cGU6IHR5cGVOYW1lLFxyXG4gICAgICBwYXJlbnRJZCxcclxuICAgICAgcGFyZW50VHlwZTogcGFyZW50VHlwZU5hbWVcclxuICAgIH0pLCB7fSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb3B5IGEgRE1TIE9iamVjdFxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkXHJcbiAgICogQHBhcmFtIHR5cGVOYW1lXHJcbiAgICogQHBhcmFtIHBhcmVudElkXHJcbiAgICogQHBhcmFtIHBhcmVudFR5cGVOYW1lXHJcbiAgICogQHBhcmFtIGNyZWF0ZUNvbnRlbnRMaW5rXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgY29weShpZCwgdHlwZU5hbWUsIHBhcmVudElkLCBwYXJlbnRUeXBlTmFtZSwgY3JlYXRlQ29udGVudExpbmspIHtcclxuICAgIGNvbnN0IHVyaSA9IGAvZG1zL2NvcHkvJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KFV0aWxzLmJ1aWxkVXJpKHVyaSwge1xyXG4gICAgICB0eXBlOiB0eXBlTmFtZSxcclxuICAgICAgcGFyZW50SWQsXHJcbiAgICAgIHBhcmVudFR5cGU6IHBhcmVudFR5cGVOYW1lLFxyXG4gICAgICBjcmVhdGVjb250ZW50bGluazogY3JlYXRlQ29udGVudExpbmtcclxuICAgIH0pLCB7fSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgYSBETVMgT2JqZWN0IHRvIEZpbmlsaXRlZFxyXG4gICAqXHJcbiAgICogQHBhcmFtIERtc09iamVjdCBpdGVtXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgZmluYWxpemUoaXRlbTogRG1zT2JqZWN0KSB7XHJcbiAgICBjb25zdCB1cmwgPSAnL2Rtcy9maW5hbGl6ZS8nICsgaXRlbS5pZCArICc/dHlwZT0nICsgaXRlbS50eXBlTmFtZTtcclxuICAgIHJldHVybiB0aGlzLnRyaWdnZXJVcGRhdGUoaXRlbSwgdGhpcy5iYWNrZW5kLnB1dCh1cmwpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSB0aGUgRmluaWxpemVkIEZsYWcgZnJvbSBhIERNUyBPYmplY3RcclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3QgaXRlbVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIGRlZmluYWxpemUoaXRlbTogRG1zT2JqZWN0KSB7XHJcbiAgICBjb25zdCB1cmwgPSAnL2Rtcy9kZWZpbmFsaXplLycgKyBpdGVtLmlkICsgJz90eXBlPScgKyBpdGVtLnR5cGVOYW1lO1xyXG4gICAgcmV0dXJuIHRoaXMudHJpZ2dlclVwZGF0ZShpdGVtLCB0aGlzLmJhY2tlbmQucHV0KHVybCkpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTG9jYWxDb3B5T2ZETVNPYmplY3QoZG1zT2JqZWN0OiBEbXNPYmplY3QpOiBEbXNPYmplY3Qge1xyXG4gICAgY29uc3QgYmFzZSA9IHtcclxuICAgICAgaWQ6IGRtc09iamVjdC5pZCxcclxuICAgICAgdGl0bGU6IGRtc09iamVjdC50aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb246IGRtc09iamVjdC5kZXNjcmlwdGlvbixcclxuICAgICAgdmVyc2lvbjogZG1zT2JqZWN0LnZlcnNpb24sXHJcbiAgICAgIHZlcnNpb25zOiBkbXNPYmplY3QudmVyc2lvbnMsXHJcbiAgICAgIGRhdGE6IGRtc09iamVjdC5kYXRhLFxyXG4gICAgICB0eXBlOiBkbXNPYmplY3QudHlwZU5hbWUsXHJcblxyXG4gICAgICBhY3RpdmV2ZXJzaW9uOiBkbXNPYmplY3QuaXNBY3RpdmVWZXJzaW9uLFxyXG4gICAgICBmaW5hbGl6ZWQ6IGRtc09iamVjdC5pc0ZpbmFsaXplZCxcclxuICAgICAgZmF2b3JpdGU6IGRtc09iamVjdC5pc0Zhdm9yaXRlLFxyXG4gICAgICBmb2xkZXI6IGRtc09iamVjdC5pc0ZvbGRlcixcclxuICAgICAgaXNjb250ZXh0Zm9sZGVyOiBkbXNPYmplY3QuaXNDb250ZXh0Rm9sZGVyLFxyXG5cclxuICAgICAgY29udGV4dGZvbGRlcjogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIgPyB7XHJcbiAgICAgICAgaWQ6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLmlkLFxyXG4gICAgICAgIHR5cGU6IGRtc09iamVjdC5jb250ZXh0Rm9sZGVyLnR5cGVOYW1lLFxyXG4gICAgICAgIHRpdGxlOiBkbXNPYmplY3QuY29udGV4dEZvbGRlci50aXRsZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogZG1zT2JqZWN0LmNvbnRleHRGb2xkZXIuZGVzY3JpcHRpb25cclxuICAgICAgfSA6IG51bGwsXHJcblxyXG4gICAgICBjcmVhdGVkOiBkbXNPYmplY3QuY3JlYXRlZCxcclxuICAgICAgbW9kaWZpZWQ6IGRtc09iamVjdC5tb2RpZmllZCxcclxuXHJcbiAgICAgIGxvY2s6ICFkbXNPYmplY3QubG9jayA/ICdOT1RfTE9DS0VEJyA6IGRtc09iamVjdC5sb2NrLmJ5Lm1lID8gJ0xPQ0tFRF9CWV9TRVNTSU9OX1VTRVInIDogJ0xPQ0tFRF9CWV9PVEhFUl9VU0VSJyxcclxuICAgICAgbG9ja2luZm86IGRtc09iamVjdC5sb2NrID8ge3VzZXJuYW1lOiBkbXNPYmplY3QubG9jay5ieS5uYW1lLCB1c2VydGl0bGU6IGRtc09iamVjdC5sb2NrLmJ5LmxhYmVsLCB0aW1lOiBkbXNPYmplY3QubG9jay5vbn0gOiBudWxsLFxyXG5cclxuICAgICAgcmlnaHRzOiBbe1xyXG4gICAgICAgIHByaXZpbGVnZXM6IHtcclxuICAgICAgICAgIHNlbGVjdDogZG1zT2JqZWN0LnJpZ2h0cy5zZWxlY3QsXHJcbiAgICAgICAgICBlZGl0OiBkbXNPYmplY3QucmlnaHRzLmVkaXQsXHJcbiAgICAgICAgICBkZWxldGU6IGRtc09iamVjdC5yaWdodHMuZGVsZXRlLFxyXG4gICAgICAgICAgZmluYWxpemU6IGRtc09iamVjdC5yaWdodHMuZmluYWxpemUsXHJcbiAgICAgICAgICByZWN5Y2xlOiBkbXNPYmplY3QucmlnaHRzLnJlY3ljbGVcclxuICAgICAgICB9XHJcbiAgICAgIH1dLFxyXG5cclxuICAgICAgY29udGVudGlkOiBkbXNPYmplY3QuY29udGVudCA/IGRtc09iamVjdC5jb250ZW50LmlkIDogbnVsbCxcclxuICAgICAgY29udGVudHR5cGU6IGRtc09iamVjdC5jb250ZW50ID8gZG1zT2JqZWN0LmNvbnRlbnQudHlwZSA6IG51bGwsXHJcbiAgICAgIGNvbnRlbnRjb3VudDogZG1zT2JqZWN0LmNvbnRlbnQgPyBkbXNPYmplY3QuY29udGVudC5jb3VudCA6IG51bGwsXHJcbiAgICAgIGNvbnRlbnRzOiBkbXNPYmplY3QuY29udGVudCA/IGRtc09iamVjdC5jb250ZW50LmNvbnRlbnRzIDogbnVsbCxcclxuXHJcbiAgICAgIHN1YnNjcmlwdGlvbnM6IGRtc09iamVjdC5zdWJzY3JpcHRpb25zLFxyXG4gICAgICByZXN1Ym1pc3Npb25zOiBkbXNPYmplY3QucmVzdWJtaXNzaW9ucyxcclxuICAgICAgYWRkaXRpb25hbHZpc2liaWxpdHk6IGRtc09iamVjdC5hZGRpdGlvbmFsdmlzaWJpbGl0eVxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgY29waWVkRG1zT2JqZWN0ID0gbmV3IERtc09iamVjdChiYXNlKTtcclxuICAgIGNvcGllZERtc09iamVjdC50eXBlID0gZG1zT2JqZWN0LnR5cGU7XHJcblxyXG4gICAgcmV0dXJuIGNvcGllZERtc09iamVjdDtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==