@valtimo/process-link 12.6.1 → 12.8.0

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 (44) hide show
  1. package/esm2022/lib/components/choose-process-link-type/choose-process-link-type.component.mjs +3 -3
  2. package/esm2022/lib/components/form-display-configuration/form-display-configuration.component.mjs +1 -1
  3. package/esm2022/lib/components/form-flow/form-flow.component.mjs +36 -27
  4. package/esm2022/lib/components/import-plugin-configuration/import-plugin-configuration.component.mjs +137 -0
  5. package/esm2022/lib/components/plugin-action-configuration/plugin-action-configuration.component.mjs +15 -6
  6. package/esm2022/lib/components/process-link-modal/process-link-modal.component.mjs +5 -4
  7. package/esm2022/lib/components/select-ui-component/select-ui-component.component.mjs +128 -0
  8. package/esm2022/lib/constants/injection-tokens.mjs +3 -2
  9. package/esm2022/lib/models/form-custom-component.model.mjs +17 -0
  10. package/esm2022/lib/models/index.mjs +2 -1
  11. package/esm2022/lib/models/process-link.model.mjs +1 -1
  12. package/esm2022/lib/process-link.module.mjs +17 -5
  13. package/esm2022/lib/services/process-link-state.service.mjs +23 -6
  14. package/esm2022/lib/services/process-link-step.service.mjs +13 -1
  15. package/esm2022/lib/services/process-link.service.mjs +19 -12
  16. package/fesm2022/valtimo-process-link.mjs +437 -113
  17. package/fesm2022/valtimo-process-link.mjs.map +1 -1
  18. package/lib/components/choose-process-link-type/choose-process-link-type.component.d.ts +2 -1
  19. package/lib/components/choose-process-link-type/choose-process-link-type.component.d.ts.map +1 -1
  20. package/lib/components/form-flow/form-flow.component.d.ts +11 -10
  21. package/lib/components/form-flow/form-flow.component.d.ts.map +1 -1
  22. package/lib/components/import-plugin-configuration/import-plugin-configuration.component.d.ts +47 -0
  23. package/lib/components/import-plugin-configuration/import-plugin-configuration.component.d.ts.map +1 -0
  24. package/lib/components/plugin-action-configuration/plugin-action-configuration.component.d.ts +4 -0
  25. package/lib/components/plugin-action-configuration/plugin-action-configuration.component.d.ts.map +1 -1
  26. package/lib/components/select-ui-component/select-ui-component.component.d.ts +28 -0
  27. package/lib/components/select-ui-component/select-ui-component.component.d.ts.map +1 -0
  28. package/lib/constants/injection-tokens.d.ts +3 -2
  29. package/lib/constants/injection-tokens.d.ts.map +1 -1
  30. package/lib/models/form-custom-component.model.d.ts +16 -0
  31. package/lib/models/form-custom-component.model.d.ts.map +1 -0
  32. package/lib/models/index.d.ts +1 -0
  33. package/lib/models/index.d.ts.map +1 -1
  34. package/lib/models/process-link.model.d.ts +23 -2
  35. package/lib/models/process-link.model.d.ts.map +1 -1
  36. package/lib/process-link.module.d.ts +10 -8
  37. package/lib/process-link.module.d.ts.map +1 -1
  38. package/lib/services/process-link-state.service.d.ts +4 -3
  39. package/lib/services/process-link-state.service.d.ts.map +1 -1
  40. package/lib/services/process-link-step.service.d.ts +1 -0
  41. package/lib/services/process-link-step.service.d.ts.map +1 -1
  42. package/lib/services/process-link.service.d.ts +5 -4
  43. package/lib/services/process-link.service.d.ts.map +1 -1
  44. package/package.json +1 -1
@@ -75,6 +75,13 @@ export class ProcessLinkStepService {
75
75
  this._steps$.next([{ label: 'selectForm' }]);
76
76
  this._currentStepIndex$.next(0);
77
77
  }
78
+ setUIComponentStep() {
79
+ this._steps$.next([
80
+ { label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.ui-component' },
81
+ { label: 'uiComponent' },
82
+ ]);
83
+ this._currentStepIndex$.next(1);
84
+ }
78
85
  setFormFlowSteps() {
79
86
  this._steps$.next([
80
87
  { label: 'chooseProcessLinkType', secondaryLabel: 'processLinkType.form-flow' },
@@ -238,6 +245,11 @@ export class ProcessLinkStepService {
238
245
  this.buttonService.showSaveButton();
239
246
  }
240
247
  break;
248
+ case 'ui-component':
249
+ this.setUIComponentStep();
250
+ this.buttonService.showBackButton();
251
+ this.buttonService.showSaveButton();
252
+ break;
241
253
  }
242
254
  }
243
255
  setChoiceSteps() {
@@ -254,4 +266,4 @@ export class ProcessLinkStepService {
254
266
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessLinkStepService, decorators: [{
255
267
  type: Injectable
256
268
  }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.ProcessLinkButtonService }, { type: i3.PluginStateService }, { type: i4.PluginTranslationService }] });
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saW5rLXN0ZXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvc2VydmljZXMvcHJvY2Vzcy1saW5rLXN0ZXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUk3RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUtwQyxNQUFNLE9BQU8sc0JBQXNCO0lBTWpDLElBQUksTUFBTTtRQUNSLE9BQU8sYUFBYSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPO1lBQ1osSUFBSSxDQUFDLGNBQWM7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDcEMsQ0FBQyxDQUFDLElBQUksQ0FDTCxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FDNUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakIsR0FBRyxJQUFJO1lBQ1AsUUFBUSxFQUFFLFlBQVk7WUFDdEIsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0RSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSTtnQkFDekIsY0FBYyxFQUFFLElBQUks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RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3RlcH0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQcm9jZXNzTGlua0NvbmZpZ3VyYXRpb25TdGVwLCBQcm9jZXNzTGlua1R5cGV9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtQcm9jZXNzTGlua0J1dHRvblNlcnZpY2V9IGZyb20gJy4vcHJvY2Vzcy1saW5rLWJ1dHRvbi5zZXJ2aWNlJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQbHVnaW5TdGF0ZVNlcnZpY2V9IGZyb20gJy4vcGx1Z2luLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHtQbHVnaW5UcmFuc2xhdGlvblNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3BsdWdpbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQcm9jZXNzTGlua1N0ZXBTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RlcHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxTdGVwPj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFN0ZXBJbmRleCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc2FibGVTdGVwcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFzT25lUHJvY2Vzc0xpbmtUeXBlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGdldCBzdGVwcyQoKTogT2JzZXJ2YWJsZTxBcnJheTxTdGVwPj4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuX3N0ZXBzJCxcbiAgICAgIHRoaXMuX2Rpc2FibGVTdGVwcyQsXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgICBdKS5waXBlKFxuICAgICAgZmlsdGVyKChbc3RlcHNdKSA9PiAhIXN0ZXBzKSxcbiAgICAgIG1hcCgoW3N0ZXBzLCBkaXNhYmxlU3RlcHNdKSA9PlxuICAgICAgICBzdGVwcy5tYXAoc3RlcCA9PiAoe1xuICAgICAgICAgIC4uLnN0ZXAsXG4gICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVTdGVwcyxcbiAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYHByb2Nlc3NMaW5rU3RlcHMuJHtzdGVwLmxhYmVsfWApLFxuICAgICAgICAgIC4uLihzdGVwLnNlY29uZGFyeUxhYmVsICYmIHtcbiAgICAgICAgICAgIHNlY29uZGFyeUxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChzdGVwLnNlY29uZGFyeUxhYmVsKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50U3RlcEluZGV4JCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50U3RlcEluZGV4JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50U3RlcElkJCgpOiBPYnNlcnZhYmxlPFByb2Nlc3NMaW5rQ29uZmlndXJhdGlvblN0ZXAgfCAnJz4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLl9zdGVwcyQsIHRoaXMuY3VycmVudFN0ZXBJbmRleCRdKS5waXBlKFxuICAgICAgZmlsdGVyKChbc3RlcHMsIGN1cnJlbnRTdGVwSW5kZXhdKSA9PiAhIXN0ZXBzICYmIHR5cGVvZiBjdXJyZW50U3RlcEluZGV4ID09PSAnbnVtYmVyJyksXG4gICAgICBtYXAoKFtzdGVwcywgY3VycmVudFN0ZXBJbmRleF0pID0+XG4gICAgICAgIHN0ZXBzLmxlbmd0aCA+IDAgPyAoc3RlcHNbY3VycmVudFN0ZXBJbmRleF0/LmxhYmVsIGFzIFByb2Nlc3NMaW5rQ29uZmlndXJhdGlvblN0ZXApIDogJydcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgZ2V0IGhhc09uZVByb2Nlc3NMaW5rVHlwZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc09uZVByb2Nlc3NMaW5rVHlwZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBidXR0b25TZXJ2aWNlOiBQcm9jZXNzTGlua0J1dHRvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW5TdGF0ZVNlcnZpY2U6IFBsdWdpblN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpblRyYW5zbGF0ZVNlcnZpY2U6IFBsdWdpblRyYW5zbGF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCQubmV4dCgwKTtcbiAgICB0aGlzLl9zdGVwcyQubmV4dChbXSk7XG4gIH1cblxuICBzZXRJbml0aWFsU3RlcHMoYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlczogQXJyYXk8UHJvY2Vzc0xpbmtUeXBlPik6IHZvaWQge1xuICAgIGlmIChhdmFpbGFibGVQcm9jZXNzTGlua1R5cGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuc2V0Q2hvaWNlU3RlcHMoKTtcbiAgICB9XG4gIH1cblxuICBzZXRGb3JtU3RlcHMoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcHMkLm5leHQoW1xuICAgICAge2xhYmVsOiAnY2hvb3NlUHJvY2Vzc0xpbmtUeXBlJywgc2Vjb25kYXJ5TGFiZWw6ICdwcm9jZXNzTGlua1R5cGUuZm9ybSd9LFxuICAgICAge2xhYmVsOiAnc2VsZWN0Rm9ybSd9LFxuICAgIF0pO1xuICAgIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgkLm5leHQoMSk7XG4gIH1cblxuICBzZXRTaW5nbGVGb3JtU3RlcCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGVwcyQubmV4dChbe2xhYmVsOiAnc2VsZWN0Rm9ybSd9XSk7XG4gICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCQubmV4dCgwKTtcbiAgfVxuXG4gIHNldEZvcm1GbG93U3RlcHMoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcHMkLm5leHQoW1xuICAgICAge2xhYmVsOiAnY2hvb3NlUHJvY2Vzc0xpbmtUeXBlJywgc2Vjb25kYXJ5TGFiZWw6ICdwcm9jZXNzTGlua1R5cGUuZm9ybS1mbG93J30sXG4gICAgICB7bGFiZWw6ICdzZWxlY3RGb3JtRmxvdyd9LFxuICAgIF0pO1xuICAgIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgkLm5leHQoMSk7XG4gIH1cblxuICBzZXRTaW5nbGVGb3JtRmxvd1N0ZXAoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcHMkLm5leHQoW3tsYWJlbDogJ3NlbGVjdEZvcm1GbG93J31dKTtcbiAgICB0aGlzLl9jdXJyZW50U3RlcEluZGV4JC5uZXh0KDApO1xuICB9XG5cbiAgc2V0Q2hvb3NlUGx1Z2luQ29uZmlndXJhdGlvblN0ZXBzKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0ZXBzJC5uZXh0KFtcbiAgICAgIHtsYWJlbDogJ2Nob29zZVByb2Nlc3NMaW5rVHlwZScsIHNlY29uZGFyeUxhYmVsOiAncHJvY2Vzc0xpbmtUeXBlLnBsdWdpbid9LFxuICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQ29uZmlndXJhdGlvbid9LFxuICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQWN0aW9uJywgZGlzYWJsZWQ6IHRydWV9LFxuICAgICAge2xhYmVsOiAnY29uZmlndXJlUGx1Z2luQWN0aW9uJywgZGlzYWJsZWQ6IHRydWV9LFxuICAgIF0pO1xuICAgIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgkLm5leHQoMSk7XG4gIH1cblxuICBzZXRTaW5nbGVDaG9vc2VQbHVnaW5Db25maWd1cmF0aW9uU3RlcHMoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcHMkLm5leHQoW1xuICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQ29uZmlndXJhdGlvbid9LFxuICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQWN0aW9uJywgZGlzYWJsZWQ6IHRydWV9LFxuICAgICAge2xhYmVsOiAnY29uZmlndXJlUGx1Z2luQWN0aW9uJywgZGlzYWJsZWQ6IHRydWV9LFxuICAgIF0pO1xuICAgIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgkLm5leHQoMCk7XG4gIH1cblxuICBzZXRDaG9vc2VQbHVnaW5BY3Rpb25TdGVwcygpOiB2b2lkIHtcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuX2hhc09uZVByb2Nlc3NMaW5rVHlwZSQsXG4gICAgICB0aGlzLnBsdWdpblN0YXRlU2VydmljZS5zZWxlY3RlZFBsdWdpbkNvbmZpZ3VyYXRpb24kLFxuICAgIF0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoW2hhc09uZVR5cGUsIHNlbGVjdGVkQ29uZmlndXJhdGlvbl0pID0+IHtcbiAgICAgICAgaWYgKGhhc09uZVR5cGUpIHtcbiAgICAgICAgICB0aGlzLl9zdGVwcyQubmV4dChbXG4gICAgICAgICAgICB7bGFiZWw6ICdjaG9vc2VQbHVnaW5Db25maWd1cmF0aW9uJywgc2Vjb25kYXJ5TGFiZWw6IHNlbGVjdGVkQ29uZmlndXJhdGlvbi50aXRsZX0sXG4gICAgICAgICAgICB7bGFiZWw6ICdjaG9vc2VQbHVnaW5BY3Rpb24nfSxcbiAgICAgICAgICAgIHtsYWJlbDogJ2NvbmZpZ3VyZVBsdWdpbkFjdGlvbicsIGRpc2FibGVkOiB0cnVlfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50U3RlcEluZGV4JC5uZXh0KDEpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5zaG93TmV4dEJ1dHRvbigpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5zaG93QmFja0J1dHRvbigpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5oaWRlU2F2ZUJ1dHRvbigpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5kaXNhYmxlTmV4dEJ1dHRvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3N0ZXBzJC5uZXh0KFtcbiAgICAgICAgICAgIHtsYWJlbDogJ2Nob29zZVByb2Nlc3NMaW5rVHlwZScsIHNlY29uZGFyeUxhYmVsOiAncHJvY2Vzc0xpbmtUeXBlLnBsdWdpbid9LFxuICAgICAgICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQ29uZmlndXJhdGlvbicsIHNlY29uZGFyeUxhYmVsOiBzZWxlY3RlZENvbmZpZ3VyYXRpb24udGl0bGV9LFxuICAgICAgICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQWN0aW9uJ30sXG4gICAgICAgICAgICB7bGFiZWw6ICdjb25maWd1cmVQbHVnaW5BY3Rpb24nLCBkaXNhYmxlZDogdHJ1ZX0sXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCQubmV4dCgyKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd05leHRCdXR0b24oKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd0JhY2tCdXR0b24oKTtcblxuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5oaWRlU2F2ZUJ1dHRvbigpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5kaXNhYmxlTmV4dEJ1dHRvbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldENvbmZpZ3VyZVBsdWdpbkFjdGlvblN0ZXBzKCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5faGFzT25lUHJvY2Vzc0xpbmtUeXBlJCxcbiAgICAgIHRoaXMucGx1Z2luU3RhdGVTZXJ2aWNlLnNlbGVjdGVkUGx1Z2luQ29uZmlndXJhdGlvbiQsXG4gICAgICB0aGlzLnBsdWdpblN0YXRlU2VydmljZS5zZWxlY3RlZFBsdWdpbkZ1bmN0aW9uJCxcbiAgICBdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtoYXNPbmVUeXBlLCBzZWxlY3RlZENvbmZpZ3VyYXRpb24sIHNlbGVjdGVkRnVuY3Rpb25dKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRnVuY3Rpb25UcmFuc2xhdGlvbiA9IHRoaXMucGx1Z2luVHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgIHNlbGVjdGVkRnVuY3Rpb24ua2V5LFxuICAgICAgICAgIHNlbGVjdGVkQ29uZmlndXJhdGlvbi5wbHVnaW5EZWZpbml0aW9uLmtleVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChoYXNPbmVUeXBlKSB7XG4gICAgICAgICAgdGhpcy5fc3RlcHMkLm5leHQoW1xuICAgICAgICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQ29uZmlndXJhdGlvbicsIHNlY29uZGFyeUxhYmVsOiBzZWxlY3RlZENvbmZpZ3VyYXRpb24udGl0bGV9LFxuICAgICAgICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQWN0aW9uJywgc2Vjb25kYXJ5TGFiZWw6IHNlbGVjdGVkRnVuY3Rpb25UcmFuc2xhdGlvbn0sXG4gICAgICAgICAgICB7bGFiZWw6ICdjb25maWd1cmVQbHVnaW5BY3Rpb24nfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50U3RlcEluZGV4JC5uZXh0KDIpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5oaWRlTmV4dEJ1dHRvbigpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5zaG93U2F2ZUJ1dHRvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3N0ZXBzJC5uZXh0KFtcbiAgICAgICAgICAgIHtsYWJlbDogJ2Nob29zZVByb2Nlc3NMaW5rVHlwZScsIHNlY29uZGFyeUxhYmVsOiAncHJvY2Vzc0xpbmtUeXBlLnBsdWdpbid9LFxuICAgICAgICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQ29uZmlndXJhdGlvbicsIHNlY29uZGFyeUxhYmVsOiBzZWxlY3RlZENvbmZpZ3VyYXRpb24udGl0bGV9LFxuICAgICAgICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQWN0aW9uJywgc2Vjb25kYXJ5TGFiZWw6IHNlbGVjdGVkRnVuY3Rpb25UcmFuc2xhdGlvbn0sXG4gICAgICAgICAgICB7bGFiZWw6ICdjb25maWd1cmVQbHVnaW5BY3Rpb24nfSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgICB0aGlzLl9jdXJyZW50U3RlcEluZGV4JC5uZXh0KDMpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5oaWRlTmV4dEJ1dHRvbigpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5zaG93U2F2ZUJ1dHRvbigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVUkxTdGVwcygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGVwcyQubmV4dChbXG4gICAgICB7bGFiZWw6ICdjaG9vc2VQcm9jZXNzTGlua1R5cGUnLCBzZWNvbmRhcnlMYWJlbDogJ3Byb2Nlc3NMaW5rVHlwZS51cmwnfSxcbiAgICAgIHtsYWJlbDogJ3NlbGVjdFVSTCd9LFxuICAgIF0pO1xuICAgIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgkLm5leHQoMSk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2luZ2xlVVJMU3RlcCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGVwcyQubmV4dChbe2xhYmVsOiAnc2VsZWN0VVJMJ31dKTtcbiAgICB0aGlzLl9jdXJyZW50U3RlcEluZGV4JC5uZXh0KDApO1xuICB9XG5cbiAgZGlzYWJsZVN0ZXBzKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVTdGVwcyQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIGVuYWJsZVN0ZXBzKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVTdGVwcyQubmV4dChmYWxzZSk7XG4gIH1cblxuICBzZXRIYXNPbmVQcm9jZXNzTGlua1R5cGUoaGFzT25lOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faGFzT25lUHJvY2Vzc0xpbmtUeXBlJC5uZXh0KGhhc09uZSk7XG4gIH1cblxuICBzZXRQcm9jZXNzTGlua1R5cGVTdGVwcyhwcm9jZXNzTGlua1R5cGVJZDogc3RyaW5nLCBoYXNPbmVPcHRpb24/OiBib29sZWFuKTogdm9pZCB7XG4gICAgc3dpdGNoIChwcm9jZXNzTGlua1R5cGVJZCkge1xuICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgIGlmIChoYXNPbmVPcHRpb24pIHtcbiAgICAgICAgICB0aGlzLnNldFNpbmdsZUZvcm1TdGVwKCk7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLmhpZGVCYWNrQnV0dG9uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtU3RlcHMoKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd0JhY2tCdXR0b24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd1NhdmVCdXR0b24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmb3JtLWZsb3cnOlxuICAgICAgICBpZiAoaGFzT25lT3B0aW9uKSB7XG4gICAgICAgICAgdGhpcy5zZXRTaW5nbGVGb3JtRmxvd1N0ZXAoKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2UuaGlkZVNhdmVCdXR0b24oKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2UuaGlkZUJhY2tCdXR0b24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GbG93U3RlcHMoKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd1NhdmVCdXR0b24oKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd0JhY2tCdXR0b24oKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BsdWdpbic6XG4gICAgICAgIGlmIChoYXNPbmVPcHRpb24pIHtcbiAgICAgICAgICB0aGlzLnNldFNpbmdsZUNob29zZVBsdWdpbkNvbmZpZ3VyYXRpb25TdGVwcygpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5oaWRlQmFja0J1dHRvbigpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5zaG93TmV4dEJ1dHRvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0Q2hvb3NlUGx1Z2luQ29uZmlndXJhdGlvblN0ZXBzKCk7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLnNob3dCYWNrQnV0dG9uKCk7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLnNob3dOZXh0QnV0dG9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1cmwnOlxuICAgICAgICBpZiAoaGFzT25lT3B0aW9uKSB7XG4gICAgICAgICAgdGhpcy5zZXRTaW5nbGVVUkxTdGVwKCk7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLmhpZGVCYWNrQnV0dG9uKCk7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLnNob3dTYXZlQnV0dG9uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZXRVUkxTdGVwcygpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5zaG93QmFja0J1dHRvbigpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5zaG93U2F2ZUJ1dHRvbigpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2hvaWNlU3RlcHMoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcHMkLm5leHQoW1xuICAgICAge2xhYmVsOiAnY2hvb3NlUHJvY2Vzc0xpbmtUeXBlJ30sXG4gICAgICB7bGFiZWw6ICdlbXB0eScsIGRpc2FibGVkOiB0cnVlfSxcbiAgICAgIHtsYWJlbDogJ2VtcHR5JywgZGlzYWJsZWQ6IHRydWV9LFxuICAgIF0pO1xuICAgIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgkLm5leHQoMCk7XG4gIH1cbn1cbiJdfQ==
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saW5rLXN0ZXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvc2VydmljZXMvcHJvY2Vzcy1saW5rLXN0ZXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUk3RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUtwQyxNQUFNLE9BQU8sc0JBQXNCO0lBTWpDLElBQUksTUFBTTtRQUNSLE9BQU8sYUFBYSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPO1lBQ1osSUFBSSxDQUFDLGNBQWM7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDcEMsQ0FBQyxDQUFDLElBQUksQ0FDTCxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FDNUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakIsR0FBRyxJQUFJO1lBQ1AsUUFBUSxFQUFFLFlBQVk7WUFDdEIsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0RSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSTtnQkFDekIsY0FBYyxFQUFFLElBQUks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LElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3BDLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsRUFBQyxLQUFLLEVBQUUsdUJBQXVCLEVBQUM7WUFDaEMsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUM7WUFDaEMsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUM7U0FDakMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDOytHQTlRVSxzQkFBc0I7bUhBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N0ZXB9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7UHJvY2Vzc0xpbmtDb25maWd1cmF0aW9uU3RlcCwgUHJvY2Vzc0xpbmtUeXBlfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7UHJvY2Vzc0xpbmtCdXR0b25TZXJ2aWNlfSBmcm9tICcuL3Byb2Nlc3MtbGluay1idXR0b24uc2VydmljZSc7XG5pbXBvcnQge3Rha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7UGx1Z2luU3RhdGVTZXJ2aWNlfSBmcm9tICcuL3BsdWdpbi1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7UGx1Z2luVHJhbnNsYXRpb25TZXJ2aWNlfSBmcm9tICdAdmFsdGltby9wbHVnaW4nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0xpbmtTdGVwU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0ZXBzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8U3RlcD4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRTdGVwSW5kZXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNhYmxlU3RlcHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hhc09uZVByb2Nlc3NMaW5rVHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBnZXQgc3RlcHMkKCk6IE9ic2VydmFibGU8QXJyYXk8U3RlcD4+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLl9zdGVwcyQsXG4gICAgICB0aGlzLl9kaXNhYmxlU3RlcHMkLFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gICAgXSkucGlwZShcbiAgICAgIGZpbHRlcigoW3N0ZXBzXSkgPT4gISFzdGVwcyksXG4gICAgICBtYXAoKFtzdGVwcywgZGlzYWJsZVN0ZXBzXSkgPT5cbiAgICAgICAgc3RlcHMubWFwKHN0ZXAgPT4gKHtcbiAgICAgICAgICAuLi5zdGVwLFxuICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlU3RlcHMsXG4gICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBwcm9jZXNzTGlua1N0ZXBzLiR7c3RlcC5sYWJlbH1gKSxcbiAgICAgICAgICAuLi4oc3RlcC5zZWNvbmRhcnlMYWJlbCAmJiB7XG4gICAgICAgICAgICBzZWNvbmRhcnlMYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoc3RlcC5zZWNvbmRhcnlMYWJlbCksXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBnZXQgY3VycmVudFN0ZXBJbmRleCQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFN0ZXBJbmRleCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgY3VycmVudFN0ZXBJZCQoKTogT2JzZXJ2YWJsZTxQcm9jZXNzTGlua0NvbmZpZ3VyYXRpb25TdGVwIHwgJyc+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5fc3RlcHMkLCB0aGlzLmN1cnJlbnRTdGVwSW5kZXgkXSkucGlwZShcbiAgICAgIGZpbHRlcigoW3N0ZXBzLCBjdXJyZW50U3RlcEluZGV4XSkgPT4gISFzdGVwcyAmJiB0eXBlb2YgY3VycmVudFN0ZXBJbmRleCA9PT0gJ251bWJlcicpLFxuICAgICAgbWFwKChbc3RlcHMsIGN1cnJlbnRTdGVwSW5kZXhdKSA9PlxuICAgICAgICBzdGVwcy5sZW5ndGggPiAwID8gKHN0ZXBzW2N1cnJlbnRTdGVwSW5kZXhdPy5sYWJlbCBhcyBQcm9jZXNzTGlua0NvbmZpZ3VyYXRpb25TdGVwKSA6ICcnXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGdldCBoYXNPbmVQcm9jZXNzTGlua1R5cGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNPbmVQcm9jZXNzTGlua1R5cGUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnV0dG9uU2VydmljZTogUHJvY2Vzc0xpbmtCdXR0b25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luU3RhdGVTZXJ2aWNlOiBQbHVnaW5TdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW5UcmFuc2xhdGVTZXJ2aWNlOiBQbHVnaW5UcmFuc2xhdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgkLm5leHQoMCk7XG4gICAgdGhpcy5fc3RlcHMkLm5leHQoW10pO1xuICB9XG5cbiAgc2V0SW5pdGlhbFN0ZXBzKGF2YWlsYWJsZVByb2Nlc3NMaW5rVHlwZXM6IEFycmF5PFByb2Nlc3NMaW5rVHlwZT4pOiB2b2lkIHtcbiAgICBpZiAoYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLnNldENob2ljZVN0ZXBzKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Rm9ybVN0ZXBzKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0ZXBzJC5uZXh0KFtcbiAgICAgIHtsYWJlbDogJ2Nob29zZVByb2Nlc3NMaW5rVHlwZScsIHNlY29uZGFyeUxhYmVsOiAncHJvY2Vzc0xpbmtUeXBlLmZvcm0nfSxcbiAgICAgIHtsYWJlbDogJ3NlbGVjdEZvcm0nfSxcbiAgICBdKTtcbiAgICB0aGlzLl9jdXJyZW50U3RlcEluZGV4JC5uZXh0KDEpO1xuICB9XG5cbiAgc2V0U2luZ2xlRm9ybVN0ZXAoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcHMkLm5leHQoW3tsYWJlbDogJ3NlbGVjdEZvcm0nfV0pO1xuICAgIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgkLm5leHQoMCk7XG4gIH1cblxuICBzZXRVSUNvbXBvbmVudFN0ZXAoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcHMkLm5leHQoW1xuICAgICAge2xhYmVsOiAnY2hvb3NlUHJvY2Vzc0xpbmtUeXBlJywgc2Vjb25kYXJ5TGFiZWw6ICdwcm9jZXNzTGlua1R5cGUudWktY29tcG9uZW50J30sXG4gICAgICB7bGFiZWw6ICd1aUNvbXBvbmVudCd9LFxuICAgIF0pO1xuICAgIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgkLm5leHQoMSk7XG4gIH1cblxuICBzZXRGb3JtRmxvd1N0ZXBzKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0ZXBzJC5uZXh0KFtcbiAgICAgIHtsYWJlbDogJ2Nob29zZVByb2Nlc3NMaW5rVHlwZScsIHNlY29uZGFyeUxhYmVsOiAncHJvY2Vzc0xpbmtUeXBlLmZvcm0tZmxvdyd9LFxuICAgICAge2xhYmVsOiAnc2VsZWN0Rm9ybUZsb3cnfSxcbiAgICBdKTtcbiAgICB0aGlzLl9jdXJyZW50U3RlcEluZGV4JC5uZXh0KDEpO1xuICB9XG5cbiAgc2V0U2luZ2xlRm9ybUZsb3dTdGVwKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0ZXBzJC5uZXh0KFt7bGFiZWw6ICdzZWxlY3RGb3JtRmxvdyd9XSk7XG4gICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCQubmV4dCgwKTtcbiAgfVxuXG4gIHNldENob29zZVBsdWdpbkNvbmZpZ3VyYXRpb25TdGVwcygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGVwcyQubmV4dChbXG4gICAgICB7bGFiZWw6ICdjaG9vc2VQcm9jZXNzTGlua1R5cGUnLCBzZWNvbmRhcnlMYWJlbDogJ3Byb2Nlc3NMaW5rVHlwZS5wbHVnaW4nfSxcbiAgICAgIHtsYWJlbDogJ2Nob29zZVBsdWdpbkNvbmZpZ3VyYXRpb24nfSxcbiAgICAgIHtsYWJlbDogJ2Nob29zZVBsdWdpbkFjdGlvbicsIGRpc2FibGVkOiB0cnVlfSxcbiAgICAgIHtsYWJlbDogJ2NvbmZpZ3VyZVBsdWdpbkFjdGlvbicsIGRpc2FibGVkOiB0cnVlfSxcbiAgICBdKTtcbiAgICB0aGlzLl9jdXJyZW50U3RlcEluZGV4JC5uZXh0KDEpO1xuICB9XG5cbiAgc2V0U2luZ2xlQ2hvb3NlUGx1Z2luQ29uZmlndXJhdGlvblN0ZXBzKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0ZXBzJC5uZXh0KFtcbiAgICAgIHtsYWJlbDogJ2Nob29zZVBsdWdpbkNvbmZpZ3VyYXRpb24nfSxcbiAgICAgIHtsYWJlbDogJ2Nob29zZVBsdWdpbkFjdGlvbicsIGRpc2FibGVkOiB0cnVlfSxcbiAgICAgIHtsYWJlbDogJ2NvbmZpZ3VyZVBsdWdpbkFjdGlvbicsIGRpc2FibGVkOiB0cnVlfSxcbiAgICBdKTtcbiAgICB0aGlzLl9jdXJyZW50U3RlcEluZGV4JC5uZXh0KDApO1xuICB9XG5cbiAgc2V0Q2hvb3NlUGx1Z2luQWN0aW9uU3RlcHMoKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLl9oYXNPbmVQcm9jZXNzTGlua1R5cGUkLFxuICAgICAgdGhpcy5wbHVnaW5TdGF0ZVNlcnZpY2Uuc2VsZWN0ZWRQbHVnaW5Db25maWd1cmF0aW9uJCxcbiAgICBdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtoYXNPbmVUeXBlLCBzZWxlY3RlZENvbmZpZ3VyYXRpb25dKSA9PiB7XG4gICAgICAgIGlmIChoYXNPbmVUeXBlKSB7XG4gICAgICAgICAgdGhpcy5fc3RlcHMkLm5leHQoW1xuICAgICAgICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQ29uZmlndXJhdGlvbicsIHNlY29uZGFyeUxhYmVsOiBzZWxlY3RlZENvbmZpZ3VyYXRpb24udGl0bGV9LFxuICAgICAgICAgICAge2xhYmVsOiAnY2hvb3NlUGx1Z2luQWN0aW9uJ30sXG4gICAgICAgICAgICB7bGFiZWw6ICdjb25maWd1cmVQbHVnaW5BY3Rpb24nLCBkaXNhYmxlZDogdHJ1ZX0sXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCQubmV4dCgxKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd05leHRCdXR0b24oKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd0JhY2tCdXR0b24oKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2UuaGlkZVNhdmVCdXR0b24oKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2UuZGlzYWJsZU5leHRCdXR0b24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9zdGVwcyQubmV4dChbXG4gICAgICAgICAgICB7bGFiZWw6ICdjaG9vc2VQcm9jZXNzTGlua1R5cGUnLCBzZWNvbmRhcnlMYWJlbDogJ3Byb2Nlc3NMaW5rVHlwZS5wbHVnaW4nfSxcbiAgICAgICAgICAgIHtsYWJlbDogJ2Nob29zZVBsdWdpbkNvbmZpZ3VyYXRpb24nLCBzZWNvbmRhcnlMYWJlbDogc2VsZWN0ZWRDb25maWd1cmF0aW9uLnRpdGxlfSxcbiAgICAgICAgICAgIHtsYWJlbDogJ2Nob29zZVBsdWdpbkFjdGlvbid9LFxuICAgICAgICAgICAge2xhYmVsOiAnY29uZmlndXJlUGx1Z2luQWN0aW9uJywgZGlzYWJsZWQ6IHRydWV9LFxuICAgICAgICAgIF0pO1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXgkLm5leHQoMik7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLnNob3dOZXh0QnV0dG9uKCk7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLnNob3dCYWNrQnV0dG9uKCk7XG5cbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2UuaGlkZVNhdmVCdXR0b24oKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2UuZGlzYWJsZU5leHRCdXR0b24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBzZXRDb25maWd1cmVQbHVnaW5BY3Rpb25TdGVwcygpOiB2b2lkIHtcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuX2hhc09uZVByb2Nlc3NMaW5rVHlwZSQsXG4gICAgICB0aGlzLnBsdWdpblN0YXRlU2VydmljZS5zZWxlY3RlZFBsdWdpbkNvbmZpZ3VyYXRpb24kLFxuICAgICAgdGhpcy5wbHVnaW5TdGF0ZVNlcnZpY2Uuc2VsZWN0ZWRQbHVnaW5GdW5jdGlvbiQsXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbaGFzT25lVHlwZSwgc2VsZWN0ZWRDb25maWd1cmF0aW9uLCBzZWxlY3RlZEZ1bmN0aW9uXSkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEZ1bmN0aW9uVHJhbnNsYXRpb24gPSB0aGlzLnBsdWdpblRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICBzZWxlY3RlZEZ1bmN0aW9uLmtleSxcbiAgICAgICAgICBzZWxlY3RlZENvbmZpZ3VyYXRpb24ucGx1Z2luRGVmaW5pdGlvbi5rZXlcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaGFzT25lVHlwZSkge1xuICAgICAgICAgIHRoaXMuX3N0ZXBzJC5uZXh0KFtcbiAgICAgICAgICAgIHtsYWJlbDogJ2Nob29zZVBsdWdpbkNvbmZpZ3VyYXRpb24nLCBzZWNvbmRhcnlMYWJlbDogc2VsZWN0ZWRDb25maWd1cmF0aW9uLnRpdGxlfSxcbiAgICAgICAgICAgIHtsYWJlbDogJ2Nob29zZVBsdWdpbkFjdGlvbicsIHNlY29uZGFyeUxhYmVsOiBzZWxlY3RlZEZ1bmN0aW9uVHJhbnNsYXRpb259LFxuICAgICAgICAgICAge2xhYmVsOiAnY29uZmlndXJlUGx1Z2luQWN0aW9uJ30sXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCQubmV4dCgyKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2UuaGlkZU5leHRCdXR0b24oKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd1NhdmVCdXR0b24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9zdGVwcyQubmV4dChbXG4gICAgICAgICAgICB7bGFiZWw6ICdjaG9vc2VQcm9jZXNzTGlua1R5cGUnLCBzZWNvbmRhcnlMYWJlbDogJ3Byb2Nlc3NMaW5rVHlwZS5wbHVnaW4nfSxcbiAgICAgICAgICAgIHtsYWJlbDogJ2Nob29zZVBsdWdpbkNvbmZpZ3VyYXRpb24nLCBzZWNvbmRhcnlMYWJlbDogc2VsZWN0ZWRDb25maWd1cmF0aW9uLnRpdGxlfSxcbiAgICAgICAgICAgIHtsYWJlbDogJ2Nob29zZVBsdWdpbkFjdGlvbicsIHNlY29uZGFyeUxhYmVsOiBzZWxlY3RlZEZ1bmN0aW9uVHJhbnNsYXRpb259LFxuICAgICAgICAgICAge2xhYmVsOiAnY29uZmlndXJlUGx1Z2luQWN0aW9uJ30sXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCQubmV4dCgzKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2UuaGlkZU5leHRCdXR0b24oKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd1NhdmVCdXR0b24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0VVJMU3RlcHMoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcHMkLm5leHQoW1xuICAgICAge2xhYmVsOiAnY2hvb3NlUHJvY2Vzc0xpbmtUeXBlJywgc2Vjb25kYXJ5TGFiZWw6ICdwcm9jZXNzTGlua1R5cGUudXJsJ30sXG4gICAgICB7bGFiZWw6ICdzZWxlY3RVUkwnfSxcbiAgICBdKTtcbiAgICB0aGlzLl9jdXJyZW50U3RlcEluZGV4JC5uZXh0KDEpO1xuICB9XG5cbiAgcHVibGljIHNldFNpbmdsZVVSTFN0ZXAoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RlcHMkLm5leHQoW3tsYWJlbDogJ3NlbGVjdFVSTCd9XSk7XG4gICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCQubmV4dCgwKTtcbiAgfVxuXG4gIGRpc2FibGVTdGVwcygpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNhYmxlU3RlcHMkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBlbmFibGVTdGVwcygpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNhYmxlU3RlcHMkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgc2V0SGFzT25lUHJvY2Vzc0xpbmtUeXBlKGhhc09uZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2hhc09uZVByb2Nlc3NMaW5rVHlwZSQubmV4dChoYXNPbmUpO1xuICB9XG5cbiAgc2V0UHJvY2Vzc0xpbmtUeXBlU3RlcHMocHJvY2Vzc0xpbmtUeXBlSWQ6IHN0cmluZywgaGFzT25lT3B0aW9uPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHN3aXRjaCAocHJvY2Vzc0xpbmtUeXBlSWQpIHtcbiAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgICBpZiAoaGFzT25lT3B0aW9uKSB7XG4gICAgICAgICAgdGhpcy5zZXRTaW5nbGVGb3JtU3RlcCgpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5oaWRlQmFja0J1dHRvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybVN0ZXBzKCk7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLnNob3dCYWNrQnV0dG9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLnNob3dTYXZlQnV0dG9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZm9ybS1mbG93JzpcbiAgICAgICAgaWYgKGhhc09uZU9wdGlvbikge1xuICAgICAgICAgIHRoaXMuc2V0U2luZ2xlRm9ybUZsb3dTdGVwKCk7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLmhpZGVTYXZlQnV0dG9uKCk7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLmhpZGVCYWNrQnV0dG9uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmxvd1N0ZXBzKCk7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLnNob3dTYXZlQnV0dG9uKCk7XG4gICAgICAgICAgdGhpcy5idXR0b25TZXJ2aWNlLnNob3dCYWNrQnV0dG9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwbHVnaW4nOlxuICAgICAgICBpZiAoaGFzT25lT3B0aW9uKSB7XG4gICAgICAgICAgdGhpcy5zZXRTaW5nbGVDaG9vc2VQbHVnaW5Db25maWd1cmF0aW9uU3RlcHMoKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2UuaGlkZUJhY2tCdXR0b24oKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd05leHRCdXR0b24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNldENob29zZVBsdWdpbkNvbmZpZ3VyYXRpb25TdGVwcygpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5zaG93QmFja0J1dHRvbigpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5zaG93TmV4dEJ1dHRvbigpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgaWYgKGhhc09uZU9wdGlvbikge1xuICAgICAgICAgIHRoaXMuc2V0U2luZ2xlVVJMU3RlcCgpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5oaWRlQmFja0J1dHRvbigpO1xuICAgICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5zaG93U2F2ZUJ1dHRvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0VVJMU3RlcHMoKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd0JhY2tCdXR0b24oKTtcbiAgICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd1NhdmVCdXR0b24oKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VpLWNvbXBvbmVudCc6XG4gICAgICAgIHRoaXMuc2V0VUlDb21wb25lbnRTdGVwKCk7XG4gICAgICAgIHRoaXMuYnV0dG9uU2VydmljZS5zaG93QmFja0J1dHRvbigpO1xuICAgICAgICB0aGlzLmJ1dHRvblNlcnZpY2Uuc2hvd1NhdmVCdXR0b24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDaG9pY2VTdGVwcygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGVwcyQubmV4dChbXG4gICAgICB7bGFiZWw6ICdjaG9vc2VQcm9jZXNzTGlua1R5cGUnfSxcbiAgICAgIHtsYWJlbDogJ2VtcHR5JywgZGlzYWJsZWQ6IHRydWV9LFxuICAgICAge2xhYmVsOiAnZW1wdHknLCBkaXNhYmxlZDogdHJ1ZX0sXG4gICAgXSk7XG4gICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCQubmV4dCgwKTtcbiAgfVxufVxuIl19
@@ -44,17 +44,6 @@ export class ProcessLinkService {
44
44
  saveProcessLink(saveProcessLinkRequest) {
45
45
  return this.http.post(`${this.VALTIMO_ENDPOINT_URI}v1/process-link`, this.emptyStringToNull(saveProcessLinkRequest));
46
46
  }
47
- emptyStringToNull(object) {
48
- Object.keys(object).forEach(key => {
49
- if (typeof object[key] === 'object') {
50
- this.emptyStringToNull(object[key]);
51
- }
52
- else if (object[key] === '') {
53
- object[key] = null;
54
- }
55
- });
56
- return object;
57
- }
58
47
  deleteProcessLink(id) {
59
48
  return this.http.delete(`${this.VALTIMO_ENDPOINT_URI}v1/process-link/${id}`);
60
49
  }
@@ -98,6 +87,24 @@ export class ProcessLinkService {
98
87
  getVariables() {
99
88
  return this.http.get(`${this.VALTIMO_ENDPOINT_URI}v1/process-link/url/variables`);
100
89
  }
90
+ getCompatiblePluginProcessLinks(pluginActionDefinitionKey) {
91
+ return this.http.get(`${this.VALTIMO_ENDPOINT_URI}v1/process-link/plugin?pluginActionDefinitionKey=${pluginActionDefinitionKey}`);
92
+ }
93
+ emptyStringToNull(object) {
94
+ if (object && typeof object === 'object') {
95
+ Object.keys(object).forEach(key => {
96
+ const typedKey = key;
97
+ const value = object[typedKey];
98
+ if (typeof value === 'object' && value !== null) {
99
+ this.emptyStringToNull(value);
100
+ }
101
+ else if (value === '') {
102
+ object[typedKey] = null;
103
+ }
104
+ });
105
+ }
106
+ return object;
107
+ }
101
108
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessLinkService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
102
109
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessLinkService, providedIn: 'root' }); }
103
110
  }
@@ -107,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
107
114
  providedIn: 'root',
108
115
  }]
109
116
  }], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.HttpClient }] });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saW5rLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Byb2Nlc3MtbGluay9zcmMvbGliL3NlcnZpY2VzL3Byb2Nlc3MtbGluay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsR0FBRyxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBZ0JyQyxPQUFPLEVBQWEsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBTXpFLE1BQU0sT0FBTyxrQkFBa0I7SUFHN0IsWUFDbUIsYUFBNEIsRUFDNUIsSUFBZ0I7UUFEaEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUVqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQzFFLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxpQkFBeUI7UUFDdkQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FFRixHQUFHLElBQUksQ0FBQyxvQkFBb0IsY0FBYyxpQkFBaUIscUJBQXFCLEVBQUUsRUFBRSxDQUFDO2FBQ3RGLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYyxDQUFDLHFCQUE0QztRQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTthQUM1QixHQUFHLENBQUMsWUFBWSxFQUFFLHFCQUFxQixDQUFDLFVBQVUsQ0FBQzthQUNuRCxHQUFHLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLENBQUMsbUJBQW1CLENBQUMs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QUFVLEVBQUUsQ0FBQztZQUNmLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1lBQzNCLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHO1lBQ2xCLE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUM7WUFDbEUsTUFBTTtTQUNQLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsdUJBQXVCLGFBQWEsRUFBRSxFQUNsRSxFQUFFLEVBQ0YsV0FBVyxDQUNaLENBQUM7SUFDSixDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFlLEdBQUcsSUFBSSxDQUFDLG9CQUFvQiwrQkFBK0IsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7K0dBeElVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHttYXAsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRm9ybUZsb3dQcm9jZXNzTGlua0NyZWF0ZVJlcXVlc3REdG8sXG4gIEZvcm1GbG93UHJvY2Vzc0xpbmtVcGRhdGVSZXF1ZXN0RHRvLFxuICBGb3JtUHJvY2Vzc0xpbmtDcmVhdGVSZXF1ZXN0RHRvLFxuICBGb3JtUHJvY2Vzc0xpbmtVcGRhdGVSZXF1ZXN0RHRvLFxuICBGb3JtU3VibWlzc2lvblJlc3VsdCxcbiAgR2V0UHJvY2Vzc0xpbmtSZXF1ZXN0LFxuICBHZXRQcm9jZXNzTGlua1Jlc3BvbnNlLFxuICBQbHVnaW5Qcm9jZXNzTGlua0NyZWF0ZUR0byxcbiAgUGx1Z2luUHJvY2Vzc0xpbmtVcGRhdGVEdG8sXG4gIFByb2Nlc3NMaW5rVHlwZSxcbiAgVGFza1dpdGhQcm9jZXNzTGluayxcbiAgVVJMUHJvY2Vzc0xpbmtDcmVhdGVEdG8sXG4gIFVSTFByb2Nlc3NMaW5rVXBkYXRlUmVxdWVzdER0byxcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7VVJMVmFyaWFibGVzfSBmcm9tICcuLi9tb2RlbHMvcHJvY2Vzcy1saW5rLXVybC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzTGlua1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IFZBTFRJTU9fRU5EUE9JTlRfVVJJITogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnRcbiAgKSB7XG4gICAgdGhpcy5WQUxUSU1PX0VORFBPSU5UX1VSSSA9IGNvbmZpZ1NlcnZpY2UuY29uZmlnLnZhbHRpbW9BcGkuZW5kcG9pbnRVcmk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGFza3NXaXRoUHJvY2Vzc0xpbmtzKHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRhc2tXaXRoUHJvY2Vzc0xpbmtbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8XG4gICAgICAgIFRhc2tXaXRoUHJvY2Vzc0xpbmtbXVxuICAgICAgPihgJHt0aGlzLlZBTFRJTU9fRU5EUE9JTlRfVVJJfXYxL3Byb2Nlc3MvJHtwcm9jZXNzSW5zdGFuY2VJZH0vdGFza3MvcHJvY2Vzcy1saW5rYCwge30pXG4gICAgICAucGlwZShtYXAocmVzID0+IHJlcyB8fCBbXSkpO1xuICB9XG5cbiAgZ2V0UHJvY2Vzc0xpbmsoZ2V0UHJvY2Vzc0xpbmtSZXF1ZXN0OiBHZXRQcm9jZXNzTGlua1JlcXVlc3QpOiBPYnNlcnZhYmxlPEdldFByb2Nlc3NMaW5rUmVzcG9uc2U+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAuc2V0KCdhY3Rpdml0eUlkJywgZ2V0UHJvY2Vzc0xpbmtSZXF1ZXN0LmFjdGl2aXR5SWQpXG4gICAgICAuc2V0KCdwcm9jZXNzRGVmaW5pdGlvbklkJywgZ2V0UHJvY2Vzc0xpbmtSZXF1ZXN0LnByb2Nlc3NEZWZpbml0aW9uSWQpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8R2V0UHJvY2Vzc0xpbmtSZXNwb25zZT4oYCR7dGhpcy5WQUxUSU1PX0VORFBPSU5UX1VSSX12MS9wcm9jZXNzLWxpbmtgLCB7XG4gICAgICBwYXJhbXMsXG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVQcm9jZXNzTGluayhcbiAgICB1cGRhdGVQcm9jZXNzTGlua1JlcXVlc3Q6XG4gICAgICB8IFBsdWdpblByb2Nlc3NMaW5rVXBkYXRlRHRvXG4gICAgICB8IEZvcm1GbG93UHJvY2Vzc0xpbmtVcGRhdGVSZXF1ZXN0RHRvXG4gICAgICB8IEZvcm1Qcm9jZXNzTGlua1VwZGF0ZVJlcXVlc3REdG9cbiAgICAgIHwgVVJMUHJvY2Vzc0xpbmtVcGRhdGVSZXF1ZXN0RHRvXG4gICk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PG51bGw+KFxuICAgICAgYCR7dGhpcy5WQUxUSU1PX0VORFBPSU5UX1VSSX12MS9wcm9jZXNzLWxpbmtgLFxuICAgICAgdGhpcy5lbXB0eVN0cmluZ1RvTnVsbCh1cGRhdGVQcm9jZXNzTGlua1JlcXVlc3QpXG4gICAgKTtcbiAgfVxuXG4gIHNhdmVQcm9jZXNzTGluayhcbiAgICBzYXZlUHJvY2Vzc0xpbmtSZXF1ZXN0OlxuICAgICAgfCBGb3JtUHJvY2Vzc0xpbmtDcmVhdGVSZXF1ZXN0RHRvXG4gICAgICB8IEZvcm1GbG93UHJvY2Vzc0xpbmtDcmVhdGVSZXF1ZXN0RHRvXG4gICAgICB8IFBsdWdpblByb2Nlc3NMaW5rQ3JlYXRlRHRvXG4gICAgICB8IFVSTFByb2Nlc3NMaW5rQ3JlYXRlRHRvXG4gICk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxudWxsPihcbiAgICAgIGAke3RoaXMuVkFMVElNT19FTkRQT0lOVF9VUkl9djEvcHJvY2Vzcy1saW5rYCxcbiAgICAgIHRoaXMuZW1wdHlTdHJpbmdUb051bGwoc2F2ZVByb2Nlc3NMaW5rUmVxdWVzdClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBlbXB0eVN0cmluZ1RvTnVsbChvYmplY3Q6IGFueSkge1xuICAgIE9iamVjdC5rZXlzKG9iamVjdCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhpcy5lbXB0eVN0cmluZ1RvTnVsbChvYmplY3Rba2V5XSk7XG4gICAgICB9IGVsc2UgaWYgKG9iamVjdFtrZXldID09PSAnJykge1xuICAgICAgICBvYmplY3Rba2V5XSA9IG51bGw7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfVxuXG4gIGRlbGV0ZVByb2Nlc3NMaW5rKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxudWxsPihgJHt0aGlzLlZBTFRJTU9fRU5EUE9JTlRfVVJJfXYxL3Byb2Nlc3MtbGluay8ke2lkfWApO1xuICB9XG5cbiAgZ2V0UHJvY2Vzc0xpbmtDYW5kaWRhdGVzKGFjdGl2aXR5VHlwZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxQcm9jZXNzTGlua1R5cGU+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXJyYXk8UHJvY2Vzc0xpbmtUeXBlPj4oXG4gICAgICBgJHt0aGlzLlZBTFRJTU9fRU5EUE9JTlRfVVJJfXYxL3Byb2Nlc3MtbGluay90eXBlcz9hY3Rpdml0eVR5cGU9JHthY3Rpdml0eVR5cGV9YFxuICAgICk7XG4gIH1cblxuICBzdWJtaXRGb3JtKFxuICAgIHByb2Nlc3NMaW5rSWQ6IHN0cmluZyxcbiAgICBmb3JtRGF0YTogb2JqZWN0LFxuICAgIGRvY3VtZW50SWQ/OiBzdHJpbmcsXG4gICAgdGFza0luc3RhbmNlSWQ/OiBzdHJpbmcsXG4gICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZT86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPEZvcm1TdWJtaXNzaW9uUmVzdWx0PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG5cbiAgICBpZiAoZG9jdW1lbnRJZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZG9jdW1lbnRJZCcsIGRvY3VtZW50SWQpO1xuICAgIH1cbiAgICBpZiAodGFza0luc3RhbmNlSWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3Rhc2tJbnN0YW5jZUlkJywgdGFza0luc3RhbmNlSWQpO1xuICAgIH1cbiAgICBpZiAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZG9jdW1lbnREZWZpbml0aW9uTmFtZScsIGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpLFxuICAgICAgcGFyYW1zLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEZvcm1TdWJtaXNzaW9uUmVzdWx0PihcbiAgICAgIGAke3RoaXMuVkFMVElNT19FTkRQT0lOVF9VUkl9djEvcHJvY2Vzcy1saW5rLyR7cHJvY2Vzc0xpbmtJZH0vZm9ybS9zdWJtaXNzaW9uYCxcbiAgICAgIGZvcm1EYXRhLFxuICAgICAgaHR0cE9wdGlvbnNcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdFVSTFByb2Nlc3NMaW5rKFxuICAgIHByb2Nlc3NMaW5rSWQ6IHN0cmluZyxcbiAgICBkb2N1bWVudElkPzogc3RyaW5nLFxuICAgIHRhc2tJbnN0YW5jZUlkPzogc3RyaW5nLFxuICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxGb3JtU3VibWlzc2lvblJlc3VsdD4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgaWYgKGRvY3VtZW50SWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2RvY3VtZW50SWQnLCBkb2N1bWVudElkKTtcbiAgICB9XG4gICAgaWYgKHRhc2tJbnN0YW5jZUlkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0YXNrSW5zdGFuY2VJZCcsIHRhc2tJbnN0YW5jZUlkKTtcbiAgICB9XG4gICAgaWYgKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2RvY3VtZW50RGVmaW5pdGlvbk5hbWUnLCBkb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgICB9XG5cbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKSxcbiAgICAgIHBhcmFtcyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxGb3JtU3VibWlzc2lvblJlc3VsdD4oXG4gICAgICBgJHt0aGlzLlZBTFRJTU9fRU5EUE9JTlRfVVJJfXYxL3Byb2Nlc3MtbGluay91cmwvJHtwcm9jZXNzTGlua0lkfWAsXG4gICAgICB7fSxcbiAgICAgIGh0dHBPcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYXJpYWJsZXMoKTogT2JzZXJ2YWJsZTxVUkxWYXJpYWJsZXM+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxVUkxWYXJpYWJsZXM+KGAke3RoaXMuVkFMVElNT19FTkRQT0lOVF9VUkl9djEvcHJvY2Vzcy1saW5rL3VybC92YXJpYWJsZXNgKTtcbiAgfVxufVxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saW5rLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Byb2Nlc3MtbGluay9zcmMvbGliL3NlcnZpY2VzL3Byb2Nlc3MtbGluay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsR0FBRyxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBbUJyQyxPQUFPLEVBQWEsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBTXpFLE1BQU0sT0FBTyxrQkFBa0I7SUFHN0IsWUFDbUIsYUFBNEIsRUFDNUIsSUFBZ0I7UUFEaEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUVqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDO0lBQzFFLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxpQkFBeUI7UUFDdkQsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FFRixHQUFHLElBQUksQ0FBQyxvQkFBb0IsY0FBYyxpQkFBaUIscUJBQXFCLEVBQUUsRUFBRSxDQUFDO2FBQ3RGLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sY0FBYyxDQUNuQixxQkFBNEM7UUFFNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7YUFDNUIsR0FBRyxDQUFDLFlBQVksRUFBRSxxQkFBcUIsQ0FBQyxVQUFVLENBQUM7YUFDbkQsR0FBRyxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixDQUFDLG1CQUFtQixDQUFD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akIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge21hcCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDb21wYXRpYmxlUGx1Z2luUHJvY2Vzc0xpbmtzLFxuICBGb3JtRmxvd1Byb2Nlc3NMaW5rQ3JlYXRlUmVxdWVzdER0byxcbiAgRm9ybUZsb3dQcm9jZXNzTGlua1VwZGF0ZVJlcXVlc3REdG8sXG4gIEZvcm1Qcm9jZXNzTGlua0NyZWF0ZVJlcXVlc3REdG8sXG4gIEZvcm1Qcm9jZXNzTGlua1VwZGF0ZVJlcXVlc3REdG8sXG4gIEZvcm1TdWJtaXNzaW9uUmVzdWx0LFxuICBHZXRQcm9jZXNzTGlua1JlcXVlc3QsXG4gIEdldFByb2Nlc3NMaW5rUmVzcG9uc2UsXG4gIFBsdWdpblByb2Nlc3NMaW5rQ3JlYXRlRHRvLFxuICBQbHVnaW5Qcm9jZXNzTGlua1VwZGF0ZUR0byxcbiAgUHJvY2Vzc0xpbmtUeXBlLFxuICBUYXNrV2l0aFByb2Nlc3NMaW5rLFxuICBVSUNvbXBvbmVudFByb2Nlc3NMaW5rQ3JlYXRlUmVxdWVzdER0byxcbiAgVUlDb21wb25lbnRQcm9jZXNzTGlua1VwZGF0ZVJlcXVlc3REdG8sXG4gIFVSTFByb2Nlc3NMaW5rQ3JlYXRlRHRvLFxuICBVUkxQcm9jZXNzTGlua1VwZGF0ZVJlcXVlc3REdG8sXG59IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1VSTFZhcmlhYmxlc30gZnJvbSAnLi4vbW9kZWxzL3Byb2Nlc3MtbGluay11cmwubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0xpbmtTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBWQUxUSU1PX0VORFBPSU5UX1VSSSE6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50XG4gICkge1xuICAgIHRoaXMuVkFMVElNT19FTkRQT0lOVF9VUkkgPSBjb25maWdTZXJ2aWNlLmNvbmZpZy52YWx0aW1vQXBpLmVuZHBvaW50VXJpO1xuICB9XG5cbiAgcHVibGljIGdldFRhc2tzV2l0aFByb2Nlc3NMaW5rcyhwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUYXNrV2l0aFByb2Nlc3NMaW5rW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFxuICAgICAgICBUYXNrV2l0aFByb2Nlc3NMaW5rW11cbiAgICAgID4oYCR7dGhpcy5WQUxUSU1PX0VORFBPSU5UX1VSSX12MS9wcm9jZXNzLyR7cHJvY2Vzc0luc3RhbmNlSWR9L3Rhc2tzL3Byb2Nlc3MtbGlua2AsIHt9KVxuICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXMgfHwgW10pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcm9jZXNzTGluayhcbiAgICBnZXRQcm9jZXNzTGlua1JlcXVlc3Q6IEdldFByb2Nlc3NMaW5rUmVxdWVzdFxuICApOiBPYnNlcnZhYmxlPEdldFByb2Nlc3NMaW5rUmVzcG9uc2U+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAuc2V0KCdhY3Rpdml0eUlkJywgZ2V0UHJvY2Vzc0xpbmtSZXF1ZXN0LmFjdGl2aXR5SWQpXG4gICAgICAuc2V0KCdwcm9jZXNzRGVmaW5pdGlvbklkJywgZ2V0UHJvY2Vzc0xpbmtSZXF1ZXN0LnByb2Nlc3NEZWZpbml0aW9uSWQpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8R2V0UHJvY2Vzc0xpbmtSZXNwb25zZT4oYCR7dGhpcy5WQUxUSU1PX0VORFBPSU5UX1VSSX12MS9wcm9jZXNzLWxpbmtgLCB7XG4gICAgICBwYXJhbXMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUHJvY2Vzc0xpbmsoXG4gICAgdXBkYXRlUHJvY2Vzc0xpbmtSZXF1ZXN0OlxuICAgICAgfCBQbHVnaW5Qcm9jZXNzTGlua1VwZGF0ZUR0b1xuICAgICAgfCBGb3JtRmxvd1Byb2Nlc3NMaW5rVXBkYXRlUmVxdWVzdER0b1xuICAgICAgfCBGb3JtUHJvY2Vzc0xpbmtVcGRhdGVSZXF1ZXN0RHRvXG4gICAgICB8IFVSTFByb2Nlc3NMaW5rVXBkYXRlUmVxdWVzdER0b1xuICAgICAgfCBVSUNvbXBvbmVudFByb2Nlc3NMaW5rVXBkYXRlUmVxdWVzdER0b1xuICApOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxudWxsPihcbiAgICAgIGAke3RoaXMuVkFMVElNT19FTkRQT0lOVF9VUkl9djEvcHJvY2Vzcy1saW5rYCxcbiAgICAgIHRoaXMuZW1wdHlTdHJpbmdUb051bGwodXBkYXRlUHJvY2Vzc0xpbmtSZXF1ZXN0KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVByb2Nlc3NMaW5rKFxuICAgIHNhdmVQcm9jZXNzTGlua1JlcXVlc3Q6XG4gICAgICB8IEZvcm1Qcm9jZXNzTGlua0NyZWF0ZVJlcXVlc3REdG9cbiAgICAgIHwgRm9ybUZsb3dQcm9jZXNzTGlua0NyZWF0ZVJlcXVlc3REdG9cbiAgICAgIHwgUGx1Z2luUHJvY2Vzc0xpbmtDcmVhdGVEdG9cbiAgICAgIHwgVVJMUHJvY2Vzc0xpbmtDcmVhdGVEdG9cbiAgICAgIHwgVUlDb21wb25lbnRQcm9jZXNzTGlua0NyZWF0ZVJlcXVlc3REdG9cbiAgKTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PG51bGw+KFxuICAgICAgYCR7dGhpcy5WQUxUSU1PX0VORFBPSU5UX1VSSX12MS9wcm9jZXNzLWxpbmtgLFxuICAgICAgdGhpcy5lbXB0eVN0cmluZ1RvTnVsbChzYXZlUHJvY2Vzc0xpbmtSZXF1ZXN0KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlUHJvY2Vzc0xpbmsoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPG51bGw+KGAke3RoaXMuVkFMVElNT19FTkRQT0lOVF9VUkl9djEvcHJvY2Vzcy1saW5rLyR7aWR9YCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJvY2Vzc0xpbmtDYW5kaWRhdGVzKGFjdGl2aXR5VHlwZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxQcm9jZXNzTGlua1R5cGU+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8QXJyYXk8UHJvY2Vzc0xpbmtUeXBlPj4oXG4gICAgICBgJHt0aGlzLlZBTFRJTU9fRU5EUE9JTlRfVVJJfXYxL3Byb2Nlc3MtbGluay90eXBlcz9hY3Rpdml0eVR5cGU9JHthY3Rpdml0eVR5cGV9YFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0Rm9ybShcbiAgICBwcm9jZXNzTGlua0lkOiBzdHJpbmcsXG4gICAgZm9ybURhdGE6IG9iamVjdCxcbiAgICBkb2N1bWVudElkPzogc3RyaW5nLFxuICAgIHRhc2tJbnN0YW5jZUlkPzogc3RyaW5nLFxuICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxGb3JtU3VibWlzc2lvblJlc3VsdD4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgaWYgKGRvY3VtZW50SWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2RvY3VtZW50SWQnLCBkb2N1bWVudElkKTtcbiAgICB9XG4gICAgaWYgKHRhc2tJbnN0YW5jZUlkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0YXNrSW5zdGFuY2VJZCcsIHRhc2tJbnN0YW5jZUlkKTtcbiAgICB9XG4gICAgaWYgKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2RvY3VtZW50RGVmaW5pdGlvbk5hbWUnLCBkb2N1bWVudERlZmluaXRpb25OYW1lKTtcbiAgICB9XG5cbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKSxcbiAgICAgIHBhcmFtcyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxGb3JtU3VibWlzc2lvblJlc3VsdD4oXG4gICAgICBgJHt0aGlzLlZBTFRJTU9fRU5EUE9JTlRfVVJJfXYxL3Byb2Nlc3MtbGluay8ke3Byb2Nlc3NMaW5rSWR9L2Zvcm0vc3VibWlzc2lvbmAsXG4gICAgICBmb3JtRGF0YSxcbiAgICAgIGh0dHBPcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXRVUkxQcm9jZXNzTGluayhcbiAgICBwcm9jZXNzTGlua0lkOiBzdHJpbmcsXG4gICAgZG9jdW1lbnRJZD86IHN0cmluZyxcbiAgICB0YXNrSW5zdGFuY2VJZD86IHN0cmluZyxcbiAgICBkb2N1bWVudERlZmluaXRpb25OYW1lPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8Rm9ybVN1Ym1pc3Npb25SZXN1bHQ+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgIGlmIChkb2N1bWVudElkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkb2N1bWVudElkJywgZG9jdW1lbnRJZCk7XG4gICAgfVxuICAgIGlmICh0YXNrSW5zdGFuY2VJZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndGFza0luc3RhbmNlSWQnLCB0YXNrSW5zdGFuY2VJZCk7XG4gICAgfVxuICAgIGlmIChkb2N1bWVudERlZmluaXRpb25OYW1lKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkb2N1bWVudERlZmluaXRpb25OYW1lJywgZG9jdW1lbnREZWZpbml0aW9uTmFtZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyksXG4gICAgICBwYXJhbXMsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Rm9ybVN1Ym1pc3Npb25SZXN1bHQ+KFxuICAgICAgYCR7dGhpcy5WQUxUSU1PX0VORFBPSU5UX1VSSX12MS9wcm9jZXNzLWxpbmsvdXJsLyR7cHJvY2Vzc0xpbmtJZH1gLFxuICAgICAge30sXG4gICAgICBodHRwT3B0aW9uc1xuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFyaWFibGVzKCk6IE9ic2VydmFibGU8VVJMVmFyaWFibGVzPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VVJMVmFyaWFibGVzPihgJHt0aGlzLlZBTFRJTU9fRU5EUE9JTlRfVVJJfXYxL3Byb2Nlc3MtbGluay91cmwvdmFyaWFibGVzYCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tcGF0aWJsZVBsdWdpblByb2Nlc3NMaW5rcyhcbiAgICBwbHVnaW5BY3Rpb25EZWZpbml0aW9uS2V5OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxDb21wYXRpYmxlUGx1Z2luUHJvY2Vzc0xpbmtzW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDb21wYXRpYmxlUGx1Z2luUHJvY2Vzc0xpbmtzW10+KFxuICAgICAgYCR7dGhpcy5WQUxUSU1PX0VORFBPSU5UX1VSSX12MS9wcm9jZXNzLWxpbmsvcGx1Z2luP3BsdWdpbkFjdGlvbkRlZmluaXRpb25LZXk9JHtwbHVnaW5BY3Rpb25EZWZpbml0aW9uS2V5fWBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBlbXB0eVN0cmluZ1RvTnVsbDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4ob2JqZWN0OiBUKTogVCB7XG4gICAgaWYgKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0Jykge1xuICAgICAgT2JqZWN0LmtleXMob2JqZWN0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGVkS2V5ID0ga2V5IGFzIGtleW9mIFQ7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0W3R5cGVkS2V5XTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmVtcHR5U3RyaW5nVG9OdWxsKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICBvYmplY3RbdHlwZWRLZXldID0gbnVsbCBhcyBhbnk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG59XG4iXX0=