@alfresco/adf-process-services-cloud 8.1.0-14794174089 → 8.1.0-14856070398

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 (96) hide show
  1. package/esm2022/lib/app/components/app-details-cloud/app-details-cloud.component.mjs +4 -4
  2. package/esm2022/lib/app/components/app-list-cloud/app-list-cloud.component.mjs +4 -4
  3. package/esm2022/lib/app/services/apps-process-cloud.service.mjs +4 -4
  4. package/esm2022/lib/common/date-range-filter/date-range-filter.component.mjs +4 -4
  5. package/esm2022/lib/common/date-range-filter/date-range-filter.service.mjs +4 -4
  6. package/esm2022/lib/form/components/cloud-form-rendering.service.mjs +4 -4
  7. package/esm2022/lib/form/components/form-cloud-custom-outcomes.component.mjs +4 -4
  8. package/esm2022/lib/form/components/form-cloud.component.mjs +4 -4
  9. package/esm2022/lib/form/components/form-definition-selector-cloud.component.mjs +4 -4
  10. package/esm2022/lib/form/components/spinner/form-spinner.component.mjs +4 -4
  11. package/esm2022/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +4 -4
  12. package/esm2022/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.mjs +4 -4
  13. package/esm2022/lib/form/components/widgets/data-table/data-table.widget.mjs +4 -4
  14. package/esm2022/lib/form/components/widgets/date/date-cloud.widget.mjs +4 -4
  15. package/esm2022/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +4 -4
  16. package/esm2022/lib/form/components/widgets/display-rich-text/display-rich-text.widget.mjs +4 -4
  17. package/esm2022/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +4 -4
  18. package/esm2022/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +4 -4
  19. package/esm2022/lib/form/components/widgets/group/group-cloud.widget.mjs +4 -4
  20. package/esm2022/lib/form/components/widgets/people/people-cloud.widget.mjs +4 -4
  21. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.mjs +4 -4
  22. package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +4 -4
  23. package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +4 -4
  24. package/esm2022/lib/form/components/widgets/upload/upload-cloud.widget.mjs +4 -4
  25. package/esm2022/lib/form/form-cloud.module.mjs +5 -5
  26. package/esm2022/lib/form/services/content-cloud-node-selector.service.mjs +4 -4
  27. package/esm2022/lib/form/services/display-mode.service.mjs +4 -4
  28. package/esm2022/lib/form/services/form-cloud.service.mjs +4 -4
  29. package/esm2022/lib/form/services/form-definition-selector-cloud.service.mjs +4 -4
  30. package/esm2022/lib/form/services/form-utils.service.mjs +4 -4
  31. package/esm2022/lib/form/services/process-cloud-content.service.mjs +4 -4
  32. package/esm2022/lib/form/services/spinner/form-cloud-spinner.service.mjs +4 -4
  33. package/esm2022/lib/group/components/group-cloud.component.mjs +4 -4
  34. package/esm2022/lib/group/group-cloud.module.mjs +5 -5
  35. package/esm2022/lib/group/services/identity-group.service.mjs +4 -4
  36. package/esm2022/lib/people/components/people-cloud.component.mjs +4 -4
  37. package/esm2022/lib/people/people-cloud.module.mjs +5 -5
  38. package/esm2022/lib/people/services/identity-user.service.mjs +4 -4
  39. package/esm2022/lib/process/process-cloud.module.mjs +5 -5
  40. package/esm2022/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.mjs +4 -4
  41. package/esm2022/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.mjs +4 -4
  42. package/esm2022/lib/process/process-filters/components/process-filters/process-filters-cloud.component.mjs +4 -4
  43. package/esm2022/lib/process/process-filters/process-filters-cloud.module.mjs +5 -5
  44. package/esm2022/lib/process/process-filters/services/process-filter-cloud.service.mjs +4 -4
  45. package/esm2022/lib/process/process-header/components/process-header-cloud.component.mjs +4 -4
  46. package/esm2022/lib/process/process-header/process-header-cloud.module.mjs +5 -5
  47. package/esm2022/lib/process/process-list/components/process-list-cloud.component.mjs +4 -4
  48. package/esm2022/lib/process/process-list/process-list-cloud.module.mjs +5 -5
  49. package/esm2022/lib/process/process-list/services/process-list-cloud.service.mjs +4 -4
  50. package/esm2022/lib/process/process-list/services/process-task-list-cloud.service.mjs +4 -4
  51. package/esm2022/lib/process/services/process-cloud.service.mjs +4 -4
  52. package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +4 -4
  53. package/esm2022/lib/process/start-process/services/start-process-cloud.service.mjs +4 -4
  54. package/esm2022/lib/process-services-cloud.module.mjs +5 -5
  55. package/esm2022/lib/rich-text-editor/rich-text-editor.component.mjs +4 -4
  56. package/esm2022/lib/rich-text-editor/rich-text-editor.module.mjs +5 -5
  57. package/esm2022/lib/screen/components/screen-cloud/screen-cloud.component.mjs +4 -4
  58. package/esm2022/lib/services/base-cloud.service.mjs +4 -4
  59. package/esm2022/lib/services/local-preference-cloud.service.mjs +4 -4
  60. package/esm2022/lib/services/notification-cloud.service.mjs +4 -4
  61. package/esm2022/lib/services/screen-rendering.service.mjs +4 -4
  62. package/esm2022/lib/services/user-preference-cloud.service.mjs +4 -4
  63. package/esm2022/lib/services/variable-mapper.sevice.mjs +4 -4
  64. package/esm2022/lib/services/web-socket.service.mjs +4 -4
  65. package/esm2022/lib/task/services/task-cloud.service.mjs +4 -4
  66. package/esm2022/lib/task/task-cloud.module.mjs +5 -5
  67. package/esm2022/lib/task/task-filters/components/base-task-filters-cloud.component.mjs +4 -4
  68. package/esm2022/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.mjs +4 -4
  69. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.mjs +4 -4
  70. package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.mjs +7 -5
  71. package/esm2022/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.mjs +4 -4
  72. package/esm2022/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +4 -4
  73. package/esm2022/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +4 -4
  74. package/esm2022/lib/task/task-filters/components/task-filters/task-filters-cloud.component.mjs +4 -4
  75. package/esm2022/lib/task/task-filters/services/service-task-filter-cloud.service.mjs +4 -4
  76. package/esm2022/lib/task/task-filters/services/task-filter-cloud.service.mjs +4 -4
  77. package/esm2022/lib/task/task-filters/task-filters-cloud.module.mjs +5 -5
  78. package/esm2022/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.mjs +4 -4
  79. package/esm2022/lib/task/task-form/components/user-task-cloud/complete-task/complete-task.directive.mjs +4 -4
  80. package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +4 -4
  81. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/claim-task/claim-task-cloud.directive.mjs +4 -4
  82. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/unclaim-task/unclaim-task-cloud.directive.mjs +4 -4
  83. package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.mjs +4 -4
  84. package/esm2022/lib/task/task-form/task-form.module.mjs +5 -5
  85. package/esm2022/lib/task/task-header/components/task-header-cloud.component.mjs +4 -4
  86. package/esm2022/lib/task/task-header/task-header-cloud.module.mjs +5 -5
  87. package/esm2022/lib/task/task-list/components/base-task-list-cloud.component.mjs +4 -4
  88. package/esm2022/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.mjs +4 -4
  89. package/esm2022/lib/task/task-list/components/task-list/task-list-cloud.component.mjs +4 -4
  90. package/esm2022/lib/task/task-list/services/service-task-list-cloud.service.mjs +4 -4
  91. package/esm2022/lib/task/task-list/services/task-list-cloud.service.mjs +4 -4
  92. package/esm2022/lib/task/task-list/task-list-cloud.module.mjs +5 -5
  93. package/fesm2022/adf-process-services-cloud.mjs +298 -296
  94. package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
  95. package/lib/common/date-range-filter/date-range-filter.service.d.ts +1 -1
  96. package/package.json +4 -4
@@ -19,15 +19,15 @@ import { ProcessHeaderCloudComponent } from './components/process-header-cloud.c
19
19
  import * as i0 from "@angular/core";
20
20
  /** @deprecated use ProcessHeaderCloudComponent instead */
21
21
  export class ProcessHeaderCloudModule {
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessHeaderCloudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ProcessHeaderCloudModule, imports: [ProcessHeaderCloudComponent], exports: [ProcessHeaderCloudComponent] }); }
24
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessHeaderCloudModule, imports: [ProcessHeaderCloudComponent] }); }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ProcessHeaderCloudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: ProcessHeaderCloudModule, imports: [ProcessHeaderCloudComponent], exports: [ProcessHeaderCloudComponent] }); }
24
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ProcessHeaderCloudModule, imports: [ProcessHeaderCloudComponent] }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessHeaderCloudModule, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ProcessHeaderCloudModule, decorators: [{
27
27
  type: NgModule,
28
28
  args: [{
29
29
  imports: [ProcessHeaderCloudComponent],
30
30
  exports: [ProcessHeaderCloudComponent]
31
31
  }]
32
32
  }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1oZWFkZXItY2xvdWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9wcm9jZXNzL3Byb2Nlc3MtaGVhZGVyL3Byb2Nlc3MtaGVhZGVyLWNsb3VkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUUxRiwwREFBMEQ7QUFLMUQsTUFBTSxPQUFPLHdCQUF3QjsrR0FBeEIsd0JBQXdCO2dIQUF4Qix3QkFBd0IsWUFIdkIsMkJBQTJCLGFBQzNCLDJCQUEyQjtnSEFFNUIsd0JBQXdCLFlBSHZCLDJCQUEyQjs7NEZBRzVCLHdCQUF3QjtrQkFKcEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvY2Vzc0hlYWRlckNsb3VkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Byb2Nlc3MtaGVhZGVyLWNsb3VkLmNvbXBvbmVudCc7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgUHJvY2Vzc0hlYWRlckNsb3VkQ29tcG9uZW50IGluc3RlYWQgKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1Byb2Nlc3NIZWFkZXJDbG91ZENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW1Byb2Nlc3NIZWFkZXJDbG91ZENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0hlYWRlckNsb3VkTW9kdWxlIHt9XG4iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1oZWFkZXItY2xvdWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9wcm9jZXNzL3Byb2Nlc3MtaGVhZGVyL3Byb2Nlc3MtaGVhZGVyLWNsb3VkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOztBQUUxRiwwREFBMEQ7QUFLMUQsTUFBTSxPQUFPLHdCQUF3Qjs4R0FBeEIsd0JBQXdCOytHQUF4Qix3QkFBd0IsWUFIdkIsMkJBQTJCLGFBQzNCLDJCQUEyQjsrR0FFNUIsd0JBQXdCLFlBSHZCLDJCQUEyQjs7MkZBRzVCLHdCQUF3QjtrQkFKcEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDdEMsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvY2Vzc0hlYWRlckNsb3VkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Byb2Nlc3MtaGVhZGVyLWNsb3VkLmNvbXBvbmVudCc7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgUHJvY2Vzc0hlYWRlckNsb3VkQ29tcG9uZW50IGluc3RlYWQgKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1Byb2Nlc3NIZWFkZXJDbG91ZENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW1Byb2Nlc3NIZWFkZXJDbG91ZENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0hlYWRlckNsb3VkTW9kdWxlIHt9XG4iXX0=
@@ -468,10 +468,10 @@ export class ProcessListCloudComponent extends DataTableSchema {
468
468
  .reduce((variablesPayload, payload) => [...variablesPayload, ...payload], []);
469
469
  return displayedVariableColumns.length ? displayedVariableColumns : undefined;
470
470
  }
471
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessListCloudComponent, deps: [{ token: i1.ProcessListCloudService }, { token: i2.AppConfigService }, { token: i2.UserPreferencesService }, { token: PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN }, { token: i3.VariableMapperService }], target: i0.ɵɵFactoryTarget.Component }); }
472
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessListCloudComponent, isStandalone: true, selector: "adf-cloud-process-list", inputs: { appName: "appName", appVersion: "appVersion", initiator: "initiator", id: "id", environmentId: "environmentId", name: "name", parentId: "parentId", processDefinitionId: "processDefinitionId", processDefinitionName: "processDefinitionName", processDefinitionKey: "processDefinitionKey", status: "status", businessKey: "businessKey", lastModifiedFrom: "lastModifiedFrom", lastModifiedTo: "lastModifiedTo", startFrom: "startFrom", startTo: "startTo", completedFrom: "completedFrom", completedTo: "completedTo", completedDate: "completedDate", suspendedFrom: "suspendedFrom", suspendedTo: "suspendedTo", selectionMode: "selectionMode", multiselect: "multiselect", sorting: "sorting", showActions: "showActions", showProvidedActions: "showProvidedActions", actionsPosition: "actionsPosition", stickyHeader: "stickyHeader", showContextMenu: "showContextMenu", showMainDatatableActions: "showMainDatatableActions", isResizingEnabled: "isResizingEnabled", searchApiMethod: "searchApiMethod", names: "names", ids: "ids", parentIds: "parentIds", processDefinitionNames: "processDefinitionNames", initiators: "initiators", appVersions: "appVersions", statuses: "statuses", processVariables: "processVariables" }, outputs: { rowClick: "rowClick", rowsSelected: "rowsSelected", showRowContextMenu: "showRowContextMenu", showRowActionsMenu: "showRowActionsMenu", executeRowAction: "executeRowAction", error: "error", success: "success" }, queries: [{ propertyName: "emptyCustomContent", first: true, predicate: CustomEmptyContentTemplateDirective, descendants: true }, { propertyName: "customLoadingContent", first: true, predicate: CustomLoadingContentTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "dataTable", first: true, predicate: DataTableComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<adf-datatable\n [rows]=\"rows\"\n [columns]=\"columns\"\n [data]=\"dataAdapter\"\n [stickyHeader]=\"stickyHeader\"\n [loading]=\"isLoading\"\n [sorting]=\"formattedSorting\"\n [selectionMode]=\"selectionMode\"\n [multiselect]=\"multiselect\"\n [actions]=\"showActions\"\n [actionsPosition]=\"actionsPosition\"\n [contextMenu]=\"showContextMenu\"\n [showMainDatatableActions]=\"showMainDatatableActions\"\n [showProvidedActions]=\"showProvidedActions\"\n [isResizingEnabled]=\"isResizingEnabled\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\"\n (rowClick)=\"onRowClick($any($event))\"\n (row-select)=\"onRowSelect($any($event))\"\n (row-unselect)=\"onRowUnselect($any($event))\"\n (row-keyup)=\"onRowKeyUp($any($event))\"\n (sorting-changed)=\"onSortingChanged($any($event))\"\n (columnOrderChanged)=\"onColumnOrderChanged($event)\"\n (columnsWidthChanged)=\"onColumnsWidthChanged($event)\"\n >\n <adf-loading-content-template>\n <ng-template>\n <mat-progress-spinner\n *ngIf=\"!customLoadingContent\"\n class=\"adf-cloud-process-list-loading-margin\"\n [color]=\"'primary'\"\n [mode]=\"'indeterminate'\" />\n <ng-content select=\"adf-custom-loading-content-template\" />\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content *ngIf=\"!emptyCustomContent\"\n icon=\"assessment\"\n [title]=\"'ADF_CLOUD_PROCESS_LIST.MESSAGES.TITLE' | translate\"\n [subtitle]=\"'ADF_CLOUD_PROCESS_LIST.MESSAGES.SUBTITLE'| translate\" />\n <ng-content select=\"adf-custom-empty-content-template\" />\n </ng-template>\n </adf-no-content-template>\n\n <adf-main-menu-datatable-template>\n <ng-template let-mainMenuTrigger>\n <adf-datatable-column-selector\n [columns]=\"columns\"\n [mainMenuTrigger]=\"mainMenuTrigger\"\n (submitColumnsVisibility)=\"onColumnsVisibilityChange($event)\" />\n </ng-template>\n </adf-main-menu-datatable-template>\n</adf-datatable>\n", styles: [".adf-cloud-process-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}\n"], dependencies: [{ kind: "component", type: DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "showProvidedActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover", "enableDragRows"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged", "dragDropped"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: ColumnsSelectorComponent, selector: "adf-datatable-column-selector", inputs: ["columns", "mainMenuTrigger", "columnsSorting", "maxColumnsVisible"], outputs: ["submitColumnsVisibility"] }, { kind: "directive", type: MainMenuDataTableTemplateDirective, selector: "adf-main-menu-datatable-template" }, { kind: "component", type: EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "directive", type: NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }, { kind: "directive", type: LoadingContentTemplateDirective, selector: "adf-loading-content-template, loading-content-template" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
471
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ProcessListCloudComponent, deps: [{ token: i1.ProcessListCloudService }, { token: i2.AppConfigService }, { token: i2.UserPreferencesService }, { token: PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN }, { token: i3.VariableMapperService }], target: i0.ɵɵFactoryTarget.Component }); }
472
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: ProcessListCloudComponent, isStandalone: true, selector: "adf-cloud-process-list", inputs: { appName: "appName", appVersion: "appVersion", initiator: "initiator", id: "id", environmentId: "environmentId", name: "name", parentId: "parentId", processDefinitionId: "processDefinitionId", processDefinitionName: "processDefinitionName", processDefinitionKey: "processDefinitionKey", status: "status", businessKey: "businessKey", lastModifiedFrom: "lastModifiedFrom", lastModifiedTo: "lastModifiedTo", startFrom: "startFrom", startTo: "startTo", completedFrom: "completedFrom", completedTo: "completedTo", completedDate: "completedDate", suspendedFrom: "suspendedFrom", suspendedTo: "suspendedTo", selectionMode: "selectionMode", multiselect: "multiselect", sorting: "sorting", showActions: "showActions", showProvidedActions: "showProvidedActions", actionsPosition: "actionsPosition", stickyHeader: "stickyHeader", showContextMenu: "showContextMenu", showMainDatatableActions: "showMainDatatableActions", isResizingEnabled: "isResizingEnabled", searchApiMethod: "searchApiMethod", names: "names", ids: "ids", parentIds: "parentIds", processDefinitionNames: "processDefinitionNames", initiators: "initiators", appVersions: "appVersions", statuses: "statuses", processVariables: "processVariables" }, outputs: { rowClick: "rowClick", rowsSelected: "rowsSelected", showRowContextMenu: "showRowContextMenu", showRowActionsMenu: "showRowActionsMenu", executeRowAction: "executeRowAction", error: "error", success: "success" }, queries: [{ propertyName: "emptyCustomContent", first: true, predicate: CustomEmptyContentTemplateDirective, descendants: true }, { propertyName: "customLoadingContent", first: true, predicate: CustomLoadingContentTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "dataTable", first: true, predicate: DataTableComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<adf-datatable\n [rows]=\"rows\"\n [columns]=\"columns\"\n [data]=\"dataAdapter\"\n [stickyHeader]=\"stickyHeader\"\n [loading]=\"isLoading\"\n [sorting]=\"formattedSorting\"\n [selectionMode]=\"selectionMode\"\n [multiselect]=\"multiselect\"\n [actions]=\"showActions\"\n [actionsPosition]=\"actionsPosition\"\n [contextMenu]=\"showContextMenu\"\n [showMainDatatableActions]=\"showMainDatatableActions\"\n [showProvidedActions]=\"showProvidedActions\"\n [isResizingEnabled]=\"isResizingEnabled\"\n (showRowActionsMenu)=\"onShowRowActionsMenu($event)\"\n (showRowContextMenu)=\"onShowRowContextMenu($event)\"\n (executeRowAction)=\"onExecuteRowAction($event)\"\n (rowClick)=\"onRowClick($any($event))\"\n (row-select)=\"onRowSelect($any($event))\"\n (row-unselect)=\"onRowUnselect($any($event))\"\n (row-keyup)=\"onRowKeyUp($any($event))\"\n (sorting-changed)=\"onSortingChanged($any($event))\"\n (columnOrderChanged)=\"onColumnOrderChanged($event)\"\n (columnsWidthChanged)=\"onColumnsWidthChanged($event)\"\n >\n <adf-loading-content-template>\n <ng-template>\n <mat-progress-spinner\n *ngIf=\"!customLoadingContent\"\n class=\"adf-cloud-process-list-loading-margin\"\n [color]=\"'primary'\"\n [mode]=\"'indeterminate'\" />\n <ng-content select=\"adf-custom-loading-content-template\" />\n </ng-template>\n </adf-loading-content-template>\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content *ngIf=\"!emptyCustomContent\"\n icon=\"assessment\"\n [title]=\"'ADF_CLOUD_PROCESS_LIST.MESSAGES.TITLE' | translate\"\n [subtitle]=\"'ADF_CLOUD_PROCESS_LIST.MESSAGES.SUBTITLE'| translate\" />\n <ng-content select=\"adf-custom-empty-content-template\" />\n </ng-template>\n </adf-no-content-template>\n\n <adf-main-menu-datatable-template>\n <ng-template let-mainMenuTrigger>\n <adf-datatable-column-selector\n [columns]=\"columns\"\n [mainMenuTrigger]=\"mainMenuTrigger\"\n (submitColumnsVisibility)=\"onColumnsVisibilityChange($event)\" />\n </ng-template>\n </adf-main-menu-datatable-template>\n</adf-datatable>\n", styles: [".adf-cloud-process-list-loading-margin{margin-left:calc((100% - 100px)/2);margin-right:calc((100% - 100px)/2)}\n"], dependencies: [{ kind: "component", type: DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "showProvidedActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover", "enableDragRows"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged", "dragDropped"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: ColumnsSelectorComponent, selector: "adf-datatable-column-selector", inputs: ["columns", "mainMenuTrigger", "columnsSorting", "maxColumnsVisible"], outputs: ["submitColumnsVisibility"] }, { kind: "directive", type: MainMenuDataTableTemplateDirective, selector: "adf-main-menu-datatable-template" }, { kind: "component", type: EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }, { kind: "directive", type: NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }, { kind: "directive", type: LoadingContentTemplateDirective, selector: "adf-loading-content-template, loading-content-template" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
473
473
  }
474
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessListCloudComponent, decorators: [{
474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ProcessListCloudComponent, decorators: [{
475
475
  type: Component,
476
476
  args: [{ selector: 'adf-cloud-process-list', standalone: true, imports: [
477
477
  DataTableComponent,
@@ -591,4 +591,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
591
591
  }], success: [{
592
592
  type: Output
593
593
  }] } });
594
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saXN0LWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWxpc3QvY29tcG9uZW50cy9wcm9jZXNzLWxpc3QtY2xvdWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9wcm9jZXNzL3Byb2Nlc3MtbGlzdC9jb21wb25lbnRzL3Byb2Nlc3MtbGlzdC1jbG91ZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixtQ0FBbUMsRUFDbkMscUNBQXFDLEVBS3JDLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLCtCQUErQixFQUMvQixrQ0FBa0MsRUFDbEMsMEJBQTBCLEVBRzFCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDdkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2Q0FB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SztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLHdCQUF3QjtzQkFEdkIsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQVFOLEtBQUs7c0JBREosS0FBSztnQkFRTixHQUFHO3NCQURGLEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQVFOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFRTixVQUFVO3NCQURULEtBQUs7Z0JBUU4sV0FBVztzQkFEVixLQUFLO2dCQVFOLFFBQVE7c0JBRFAsS0FBSztnQkFRTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixRQUFRO3NCQURQLE1BQU07Z0JBS1AsWUFBWTtzQkFEWCxNQUFNO2dCQUtQLGtCQUFrQjtzQkFEakIsTUFBTTtnQkFLUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBS1AsZ0JBQWdCO3NCQURmLE1BQU07Z0JBS1AsS0FBSztzQkFESixNQUFNO2dCQUtQLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBcHBDb25maWdTZXJ2aWNlLFxuICAgIENvbHVtbnNTZWxlY3RvckNvbXBvbmVudCxcbiAgICBDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBDdXN0b21Mb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIERhdGFDZWxsRXZlbnQsXG4gICAgRGF0YUNvbHVtbixcbiAgICBEYXRhUm93QWN0aW9uRXZlbnQsXG4gICAgRGF0YVJvd0V2ZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBEYXRhVGFibGVTY2hlbWEsXG4gICAgRW1wdHlDb250ZW50Q29tcG9uZW50LFxuICAgIExvYWRpbmdDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgTWFpbk1lbnVEYXRhVGFibGVUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBOb0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBQYWdpbmF0ZWRDb21wb25lbnQsXG4gICAgUGFnaW5hdGlvbk1vZGVsLFxuICAgIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgVXNlclByZWZlcmVuY2VWYWx1ZXNcbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IFByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvY2Vzcy1saXN0LWNsb3VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcHJvY2Vzc0Nsb3VkUHJlc2V0c0RlZmF1bHRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9wcm9jZXNzLWNsb3VkLXByZXNldC5tb2RlbCc7XG5pbXBvcnQgeyBQcm9jZXNzTGlzdFJlcXVlc3RNb2RlbCwgUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvcHJvY2Vzcy1jbG91ZC1xdWVyeS1yZXF1ZXN0Lm1vZGVsJztcbmltcG9ydCB7IFByb2Nlc3NMaXN0Q2xvdWRTb3J0aW5nTW9kZWwsIFByb2Nlc3NMaXN0UmVxdWVzdFNvcnRpbmdNb2RlbCB9IGZyb20gJy4uL21vZGVscy9wcm9jZXNzLWxpc3Qtc29ydGluZy5tb2RlbCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcmVmZXJlbmNlQ2xvdWRTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlZmVyZW5jZS1jbG91ZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUFJPQ0VTU19MSVNUU19QUkVGRVJFTkNFU19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2xvdWQtdG9rZW4uc2VydmljZSc7XG5pbXBvcnQgeyBQcm9jZXNzTGlzdENsb3VkUHJlZmVyZW5jZXMgfSBmcm9tICcuLi9tb2RlbHMvcHJvY2Vzcy1jbG91ZC1wcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBQcm9jZXNzTGlzdERhdGF0YWJsZUFkYXB0ZXIgfSBmcm9tICcuLi9kYXRhdGFibGUvcHJvY2Vzcy1saXN0LWRhdGF0YWJsZS1hZGFwdGVyJztcbmltcG9ydCB7IFBST0NFU1NfTElTVF9DVVNUT01fVkFSSUFCTEVfQ09MVU1OLCBQcm9jZXNzTGlzdERhdGFDb2x1bW5DdXN0b21EYXRhIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RhdGEtY29sdW1uLWN1c3RvbS1kYXRhJztcbmltcG9ydCB7IFZhcmlhYmxlTWFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ZhcmlhYmxlLW1hcHBlci5zZXZpY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUHJvY2Vzc1ZhcmlhYmxlRmlsdGVyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcHJvY2Vzcy12YXJpYWJsZS1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5jb25zdCBQUkVTRVRfS0VZID0gJ2FkZi1jbG91ZC1wcm9jZXNzLWxpc3QucHJlc2V0cyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9icmFjZS1zdHlsZSAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1jbG91ZC1wcm9jZXNzLWxpc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBDb2x1bW5zU2VsZWN0b3JDb21wb25lbnQsXG4gICAgICAgIE1haW5NZW51RGF0YVRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEVtcHR5Q29udGVudENvbXBvbmVudCxcbiAgICAgICAgTm9Db250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIExvYWRpbmdDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIE5nSWZcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLWxpc3QtY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtbGlzdC1jbG91ZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0xpc3RDbG91ZENvbXBvbmVudFxuICAgIGV4dGVuZHMgRGF0YVRhYmxlU2NoZW1hPFByb2Nlc3NMaXN0RGF0YUNvbHVtbkN1c3RvbURhdGE+XG4gICAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIFBhZ2luYXRlZENvbXBvbmVudFxue1xuICAgIEBWaWV3Q2hpbGQoRGF0YVRhYmxlQ29tcG9uZW50KSBkYXRhVGFibGU6IERhdGFUYWJsZUNvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUpXG4gICAgZW1wdHlDdXN0b21Db250ZW50OiBDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICAgIEBDb250ZW50Q2hpbGQoQ3VzdG9tTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBjdXN0b21Mb2FkaW5nQ29udGVudDogQ3VzdG9tTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICAgIC8qKiBUaGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24uICovXG4gICAgQElucHV0KClcbiAgICBhcHBOYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBUaGUgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24uICovXG4gICAgQElucHV0KClcbiAgICBhcHBWZXJzaW9uOiBudW1iZXIgfCBudW1iZXJbXTtcblxuICAgIC8qKiBOYW1lIG9mIHRoZSBpbml0aWF0b3Igb2YgdGhlIHByb2Nlc3MuICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWF0b3I6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgcHJvY2Vzc2VzIHRvIGRpc3BsYXkgb25seSB0aGUgb25lcyB3aXRoIHRoaXMgSUQuICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMgdG8gZGlzcGxheSBvbmx5IHRoZSBvbmVzIHdpdGggdGhpcyBlbnZpcm9ubWVudCBJRC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGVudmlyb25tZW50SWQ6IHN0cmluZztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3NlcyB0byBkaXNwbGF5IG9ubHkgdGhlIG9uZXMgd2l0aCB0aGlzIG5hbWUuICovXG4gICAgQElucHV0KClcbiAgICBuYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3NlcyB0byBkaXNwbGF5IG9ubHkgdGhlIG9uZXMgd2l0aCB0aGlzIHBhcmVudElkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFyZW50SWQ/OiBzdHJpbmc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMgdG8gZGlzcGxheSBvbmx5IHRoZSBvbmVzIHdpdGggdGhpcyBwcm9jZXNzIGRlZmluaXRpb24gSUQuICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzRGVmaW5pdGlvbklkOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3NlcyB0byBkaXNwbGF5IG9ubHkgdGhlIG9uZXMgd2l0aCB0aGlzIHByb2Nlc3MgZGVmaW5pdGlvbiBuYW1lLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc0RlZmluaXRpb25OYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3NlcyB0byBkaXNwbGF5IG9ubHkgdGhlIG9uZXMgd2l0aCB0aGlzIHByb2Nlc3MgZGVmaW5pdGlvbiBrZXkuICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMgdG8gZGlzcGxheSBvbmx5IHRoZSBvbmVzIHdpdGggdGhpcyBzdGF0dXMuICovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXM6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgcHJvY2Vzc2VzIHRvIGRpc3BsYXkgb25seSB0aGUgb25lcyB3aXRoIHRoaXMgYnVzaW5lc3NLZXkgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBidXNpbmVzc0tleTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzIHdpdGggbGFzdE1vZGlmaWVkVG8gZXF1YWwgdG8gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBsYXN0TW9kaWZpZWRGcm9tOiBEYXRlO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgcHJvY2Vzc2VzLiBEaXNwbGF5IG9ubHkgcHJvY2VzcyB3aXRoIGxhc3RNb2RpZmllZFRvIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGFzdE1vZGlmaWVkVG86IERhdGU7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzIHdpdGggc3RhcnRlZERhdGUgZ3JlYXRlciB0aGVuIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhcnRGcm9tOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3Nlcy4gRGlzcGxheSBvbmx5IHByb2Nlc3Mgd2l0aCBzdGFydGVkRGF0ZSBsZXNzIHRoYW4gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBzdGFydFRvOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3Nlcy4gRGlzcGxheSBvbmx5IHByb2Nlc3Mgd2l0aCBjb21wbGV0ZWRGcm9tIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29tcGxldGVkRnJvbTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzIHdpdGggY29tcGxldGVkVG8gZXF1YWwgdG8gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBjb21wbGV0ZWRUbzogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzIHdpdGggY29tcGxldGVkRGF0ZSBlcXVhbCB0byB0aGUgc3VwcGxpZWQgZGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbXBsZXRlZERhdGU6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgcHJvY2Vzc2VzLiBEaXNwbGF5IG9ubHkgcHJvY2VzcyB3aXRoIHN1c3BlbmRlZEZyb20gZXF1YWwgdG8gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBzdXNwZW5kZWRGcm9tOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3Nlcy4gRGlzcGxheSBvbmx5IHByb2Nlc3Mgd2l0aCBzdXNwZW5kZWRUbyBlcXVhbCB0byB0aGUgc3VwcGxpZWQgZGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN1c3BlbmRlZFRvOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFJvdyBzZWxlY3Rpb24gbW9kZS4gQ2FuIGJlIFwibm9uZVwiLCBcInNpbmdsZVwiIG9yIFwibXVsdGlwbGVcIi5cbiAgICAgKiBGb3IgbXVsdGlwbGUgbW9kZSwgeW91IGNhbiB1c2UgQ21kIChtYWNPUykgb3IgQ3RybCAoV2luKSBtb2RpZmllclxuICAgICAqIGtleSB0byB0b2dnbGUgc2VsZWN0aW9uIGZvciBtdWx0aXBsZSByb3dzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uTW9kZTogc3RyaW5nID0gJ3NpbmdsZSc7IC8vIG5vbmV8c2luZ2xlfG11bHRpcGxlXG5cbiAgICAvKiogVG9nZ2xlcyBtdWx0aXBsZSByb3cgc2VsZWN0aW9uIGFuZCByZW5kZXJzIGNoZWNrYm94ZXMgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJvdyAqL1xuICAgIEBJbnB1dCgpXG4gICAgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEFycmF5IG9mIG9iamVjdHMgc3BlY2lmeWluZyB0aGUgc29ydCBvcmRlciBhbmQgZGlyZWN0aW9uIGZvciB0aGVcbiAgICAgKiBsaXN0LiBUaGUgc29ydCBwYXJhbWV0ZXJzIGFyZSBmb3IgQkUgc29ydGluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNvcnRpbmc6IFByb2Nlc3NMaXN0Q2xvdWRTb3J0aW5nTW9kZWxbXTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBkYXRhIGFjdGlvbnMgY29sdW1uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FjdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBwcm92aWRlZCBhY3Rpb25zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1Byb3ZpZGVkQWN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBhY3Rpb25zIGRyb3Bkb3duIG1lbnUuIENhbiBiZSBcImxlZnRcIiBvciBcInJpZ2h0XCIuICovXG4gICAgQElucHV0KClcbiAgICBhY3Rpb25zUG9zaXRpb246IHN0cmluZyA9ICdyaWdodCc7IC8vIGxlZnR8cmlnaHRcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBzdGlja3kgaGVhZGVyIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBzdGlja3lIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIGN1c3RvbSBjb250ZXh0IG1lbnUgZm9yIHRoZSBjb21wb25lbnQuICovXG4gICAgQElucHV0KClcbiAgICBzaG93Q29udGV4dE1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGUgbWFpbiBkYXRhdGFibGUgYWN0aW9ucy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dNYWluRGF0YXRhYmxlQWN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgbWFpbiBkYXRhdGFibGUgY29sdW1uIHJlc2l6aW5nIGZlYXR1cmUuICovXG4gICAgQElucHV0KClcbiAgICBpc1Jlc2l6aW5nRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEZyb20gQWN0aXZpdGkgOC43LjAgZm9yd2FyZCwgdXNlICdQT1NUJyB2YWx1ZSBhbmQgYXJyYXkgaW5wdXRzIHRvIGVuYWJsZSBhZHZhbmNlZCBmaWx0ZXJpbmcuICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hBcGlNZXRob2Q6ICdHRVQnIHwgJ1BPU1QnID0gJ0dFVCc7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHByb2Nlc3Nlcy4gRGlzcGxheSBvbmx5IHByb2Nlc3NlcyB3aXRoIG5hbWVzIG1hdGNoaW5nIGFueSBvZiB0aGUgc3VwcGxpZWQgc3RyaW5ncy5cbiAgICAgKiBUaGlzIGlucHV0IHdpbGwgYmUgdXNlZCBvbmx5IGlmIHNlYXJjaEFwaU1ldGhvZCBpbnB1dCBpcyBwcm92aWRlZCB3aXRoICdQT1NUJyB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzZXMgd2l0aCBpbnN0YW5jZSBJZHMgbWF0Y2hpbmcgYW55IG9mIHRoZSBzdXBwbGllZCBzdHJpbmdzLlxuICAgICAqIFRoaXMgaW5wdXQgd2lsbCBiZSB1c2VkIG9ubHkgaWYgc2VhcmNoQXBpTWV0aG9kIGlucHV0IGlzIHByb3ZpZGVkIHdpdGggJ1BPU1QnIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzZXMgd2l0aCBwYXJlbnQgSWRzIG1hdGNoaW5nIGFueSBvZiB0aGUgc3VwcGxpZWQgc3RyaW5ncy5cbiAgICAgKiBUaGlzIGlucHV0IHdpbGwgYmUgdXNlZCBvbmx5IGlmIHNlYXJjaEFwaU1ldGhvZCBpbnB1dCBpcyBwcm92aWRlZCB3aXRoICdQT1NUJyB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBhcmVudElkczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgcHJvY2Vzc2VzLiBEaXNwbGF5IG9ubHkgcHJvY2Vzc2VzIHdpdGggZGVmaW5pdGlvbiBuYW1lcyBtYXRjaGluZyBhbnkgb2YgdGhlIHN1cHBsaWVkIHN0cmluZ3MuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzRGVmaW5pdGlvbk5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzZXMgc3RhcnRlZCBieSBhbnkgb2YgdGhlIHVzZXJzIHdob3NlIHVzZXJuYW1lcyBhcmUgcHJlc2VudCBpbiB0aGUgYXJyYXkuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWF0b3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzZXMgcHJlc2VudCBpbiBhbnkgb2YgdGhlIHNwZWNpZmllZCBhcHAgdmVyc2lvbnMuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcHBWZXJzaW9uczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgcHJvY2Vzc2VzLiBEaXNwbGF5IG9ubHkgcHJvY2Vzc2VzIHdpdGggcHJvdmlkZWQgc3RhdHVzZXMuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXNlczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgcHJvY2Vzc2VzLiBEaXNwbGF5IG9ubHkgcHJvY2Vzc2VzIHdpdGggc3BlY2lmaWMgcHJvY2VzcyB2YXJpYWJsZXMuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzVmFyaWFibGVzOiBQcm9jZXNzVmFyaWFibGVGaWx0ZXJNb2RlbFtdO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIHJvdyBpbiB0aGUgcHJvY2VzcyBsaXN0IGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHJvd3MgYXJlIHNlbGVjdGVkL3Vuc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcm93c1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICAgIC8qKiBFbWl0dGVkIGJlZm9yZSB0aGUgY29udGV4dCBtZW51IGlzIGRpc3BsYXllZCBmb3IgYSByb3cuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2hvd1Jvd0NvbnRleHRNZW51ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhQ2VsbEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgYmVmb3JlIHRoZSBhY3Rpb25zIG1lbnUgaXMgZGlzcGxheWVkIGZvciBhIHJvdy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzaG93Um93QWN0aW9uc01lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFDZWxsRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGV4ZWN1dGVzIGEgcm93IGFjdGlvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBleGVjdXRlUm93QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhUm93QWN0aW9uRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3VycyB3aGlsZSBsb2FkaW5nIHRoZSBsaXN0IG9mIHByb2Nlc3MgaW5zdGFuY2VzIGZyb20gdGhlIHNlcnZlci4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgbGlzdCBvZiBwcm9jZXNzIGluc3RhbmNlcyBoYXMgYmVlbiBsb2FkZWQgc3VjY2Vzc2Z1bGx5IGZyb20gdGhlIHNlcnZlci4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBwYWdpbmF0aW9uOiBCZWhhdmlvclN1YmplY3Q8UGFnaW5hdGlvbk1vZGVsPjtcbiAgICBzaXplOiBudW1iZXI7XG4gICAgc2tpcENvdW50OiBudW1iZXIgPSAwO1xuICAgIGN1cnJlbnRJbnN0YW5jZUlkOiBzdHJpbmc7XG4gICAgc2VsZWN0ZWRJbnN0YW5jZXM6IGFueVtdO1xuICAgIGlzTG9hZGluZyA9IHRydWU7XG5cbiAgICByb3dzOiBhbnlbXSA9IFtdO1xuICAgIGZvcm1hdHRlZFNvcnRpbmc6IGFueVtdO1xuICAgIHJlcXVlc3ROb2RlOiBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbDtcbiAgICBwcm9jZXNzTGlzdFJlcXVlc3ROb2RlOiBQcm9jZXNzTGlzdFJlcXVlc3RNb2RlbDtcbiAgICBkYXRhQWRhcHRlcjogUHJvY2Vzc0xpc3REYXRhdGFibGVBZGFwdGVyO1xuXG4gICAgcHJpdmF0ZSBkZWZhdWx0U29ydGluZyA9IHsga2V5OiAnc3RhcnREYXRlJywgZGlyZWN0aW9uOiAnZGVzYycgfTtcblxuICAgIHByaXZhdGUgZmV0Y2hQcm9jZXNzZXNUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBwcm9jZXNzTGlzdENsb3VkU2VydmljZTogUHJvY2Vzc0xpc3RDbG91ZFNlcnZpY2UsXG4gICAgICAgIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXNlclByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFBST0NFU1NfTElTVFNfUFJFRkVSRU5DRVNfU0VSVklDRV9UT0tFTikgcHJpdmF0ZSBjbG91ZFByZWZlcmVuY2VTZXJ2aWNlOiBQcmVmZXJlbmNlQ2xvdWRTZXJ2aWNlSW50ZXJmYWNlLFxuICAgICAgICBwcml2YXRlIHZhcmlhYmxlTWFwcGVyU2VydmljZTogVmFyaWFibGVNYXBwZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGFwcENvbmZpZ1NlcnZpY2UsIFBSRVNFVF9LRVksIHByb2Nlc3NDbG91ZFByZXNldHNEZWZhdWx0TW9kZWwpO1xuICAgICAgICB0aGlzLnNpemUgPSB1c2VyUHJlZmVyZW5jZXMucGFnaW5hdGlvblNpemU7XG4gICAgICAgIHRoaXMudXNlclByZWZlcmVuY2VzLnNlbGVjdChVc2VyUHJlZmVyZW5jZVZhbHVlcy5QYWdpbmF0aW9uU2l6ZSkuc3Vic2NyaWJlKChwYWdlU2l6ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaXplID0gcGFnZVNpemU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhZ2luYXRpb25Nb2RlbD4oe1xuICAgICAgICAgICAgbWF4SXRlbXM6IHRoaXMuc2l6ZSxcbiAgICAgICAgICAgIHNraXBDb3VudDogMCxcbiAgICAgICAgICAgIHRvdGFsSXRlbXM6IDBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5pc0NvbHVtblNjaGVtYUNyZWF0ZWQkLCB0aGlzLmZldGNoUHJvY2Vzc2VzVHJpZ2dlciRdKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+ICh0aGlzLmlzTG9hZGluZyA9IHRydWUpKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKFtpc0NvbHVtblNjaGVtYUNyZWF0ZWRdKSA9PiBpc0NvbHVtblNjaGVtYUNyZWF0ZWQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaEFwaU1ldGhvZCA9PT0gJ1BPU1QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0Tm9kZSA9IHRoaXMuY3JlYXRlUHJvY2Vzc0xpc3RSZXF1ZXN0Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTGlzdFJlcXVlc3ROb2RlID0gcmVxdWVzdE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTGlzdENsb3VkU2VydmljZS5mZXRjaFByb2Nlc3NMaXN0KHJlcXVlc3ROb2RlKS5waXBlKHRha2UoMSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdE5vZGUgPSB0aGlzLmNyZWF0ZVJlcXVlc3ROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3ROb2RlID0gcmVxdWVzdE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTGlzdENsb3VkU2VydmljZS5nZXRQcm9jZXNzQnlSZXF1ZXN0KHJlcXVlc3ROb2RlKS5waXBlKHRha2UoMSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChwcm9jZXNzZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dzID0gdGhpcy52YXJpYWJsZU1hcHBlclNlcnZpY2UubWFwVmFyaWFibGVzQnlDb2x1bW5UaXRsZShwcm9jZXNzZXMubGlzdC5lbnRyaWVzLCB0aGlzLmNvbHVtbnMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUFkYXB0ZXIgPSBuZXcgUHJvY2Vzc0xpc3REYXRhdGFibGVBZGFwdGVyKHRoaXMucm93cywgdGhpcy5jb2x1bW5zKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MuZW1pdChwcm9jZXNzZXMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24ubmV4dChwcm9jZXNzZXMubGlzdC5wYWdpbmF0aW9uKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLmNsb3VkUHJlZmVyZW5jZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQcmVmZXJlbmNlcyh0aGlzLmFwcE5hbWUpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIG1hcCgocHJlZmVyZW5jZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlZmVyZW5jZXNMaXN0ID0gcHJlZmVyZW5jZXM/Lmxpc3Q/LmVudHJpZXMgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbnNPcmRlciA9IHByZWZlcmVuY2VzTGlzdC5maW5kKChwcmVmZXJlbmNlKSA9PiBwcmVmZXJlbmNlLmVudHJ5LmtleSA9PT0gUHJvY2Vzc0xpc3RDbG91ZFByZWZlcmVuY2VzLmNvbHVtbk9yZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uc1Zpc2liaWxpdHkgPSBwcmVmZXJlbmNlc0xpc3QuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChwcmVmZXJlbmNlKSA9PiBwcmVmZXJlbmNlLmVudHJ5LmtleSA9PT0gUHJvY2Vzc0xpc3RDbG91ZFByZWZlcmVuY2VzLmNvbHVtbnNWaXNpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbnNXaWR0aHMgPSBwcmVmZXJlbmNlc0xpc3QuZmluZCgocHJlZmVyZW5jZSkgPT4gcHJlZmVyZW5jZS5lbnRyeS5rZXkgPT09IFByb2Nlc3NMaXN0Q2xvdWRQcmVmZXJlbmNlcy5jb2x1bW5zV2lkdGhzKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc09yZGVyOiBjb2x1bW5zT3JkZXIgPyBKU09OLnBhcnNlKGNvbHVtbnNPcmRlci5lbnRyeS52YWx1ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zVmlzaWJpbGl0eTogY29sdW1uc1Zpc2liaWxpdHkgPyBKU09OLnBhcnNlKGNvbHVtbnNWaXNpYmlsaXR5LmVudHJ5LnZhbHVlKSA6IHRoaXMuY29sdW1uc1Zpc2liaWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zV2lkdGhzOiBjb2x1bW5zV2lkdGhzID8gSlNPTi5wYXJzZShjb2x1bW5zV2lkdGhzLmVudHJ5LnZhbHVlKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zT3JkZXI6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zVmlzaWJpbGl0eTogdGhpcy5jb2x1bW5zVmlzaWJpbGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zV2lkdGhzOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgY29sdW1uc09yZGVyLCBjb2x1bW5zVmlzaWJpbGl0eSwgY29sdW1uc1dpZHRocyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbnNWaXNpYmlsaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc1Zpc2liaWxpdHkgPSBjb2x1bW5zVmlzaWJpbGl0eTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uc09yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc09yZGVyID0gY29sdW1uc09yZGVyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW5zV2lkdGhzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc1dpZHRocyA9IGNvbHVtbnNXaWR0aHM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVEYXRhdGFibGVTY2hlbWEoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUHJvcGVydHlDaGFuZ2VkKGNoYW5nZXMsICdzb3J0aW5nJykpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0U29ydGluZyhjaGFuZ2VzWydzb3J0aW5nJ10uY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQW55UHJvcGVydHlDaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbnN0YW5jZUlkO1xuICAgIH1cblxuICAgIHJlbG9hZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwTmFtZSB8fCB0aGlzLmFwcE5hbWUgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoUHJvY2Vzc2VzVHJpZ2dlciQubmV4dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3dzID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQW55UHJvcGVydHlDaGFuZ2VkKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Byb3BlcnR5Q2hhbmdlZChjaGFuZ2VzLCBwcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Byb3BlcnR5Q2hhbmdlZChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzLCBwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgcHJvcGVydHkpO1xuICAgIH1cblxuICAgIGlzTGlzdEVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMucm93cyB8fCB0aGlzLnJvd3MubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0cyB0aGUgcGFnaW5hdGlvbiB2YWx1ZXNcbiAgICAgKi9cbiAgICByZXNldFBhZ2luYXRpb24oKSB7XG4gICAgICAgIHRoaXMuc2tpcENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5zaXplID0gdGhpcy51c2VyUHJlZmVyZW5jZXMucGFnaW5hdGlvblNpemU7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5uZXh0KHtcbiAgICAgICAgICAgIHNraXBDb3VudDogMCxcbiAgICAgICAgICAgIG1heEl0ZW1zOiB0aGlzLnNpemVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzZXRzIHRoZSBwYWdpbmF0aW9uIHZhbHVlcyBhbmRcbiAgICAgKiBSZWxvYWRzIHRoZSBwcm9jZXNzIGxpc3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYWdpbmF0aW9uIFBhZ2luYXRpb24gdmFsdWVzIHRvIGJlIHNldFxuICAgICAqL1xuICAgIHVwZGF0ZVBhZ2luYXRpb24ocGFnaW5hdGlvbjogUGFnaW5hdGlvbk1vZGVsKSB7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHBhZ2luYXRpb24ubWF4SXRlbXM7XG4gICAgICAgIHRoaXMuc2tpcENvdW50ID0gcGFnaW5hdGlvbi5za2lwQ291bnQ7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5uZXh0KHBhZ2luYXRpb24pO1xuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgIH1cblxuICAgIG9uU29ydGluZ0NoYW5nZWQoZXZlbnQ6IEN1c3RvbUV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0U29ydGluZyhldmVudC5kZXRhaWwpO1xuICAgICAgICB0aGlzLmZvcm1hdFNvcnRpbmcodGhpcy5zb3J0aW5nKTtcbiAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG5cbiAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlZChjb2x1bW5zV2l0aE5ld09yZGVyOiBEYXRhQ29sdW1uW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb2x1bW5zT3JkZXIgPSBjb2x1bW5zV2l0aE5ld09yZGVyLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4uaWQpO1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbHVtbnMoKTtcblxuICAgICAgICBpZiAodGhpcy5hcHBOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3VkUHJlZmVyZW5jZVNlcnZpY2UudXBkYXRlUHJlZmVyZW5jZSh0aGlzLmFwcE5hbWUsIFByb2Nlc3NMaXN0Q2xvdWRQcmVmZXJlbmNlcy5jb2x1bW5PcmRlciwgdGhpcy5jb2x1bW5zT3JkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Db2x1bW5zVmlzaWJpbGl0eUNoYW5nZShjb2x1bW5zOiBEYXRhQ29sdW1uW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb2x1bW5zVmlzaWJpbGl0eSA9IGNvbHVtbnMucmVkdWNlKCh2aXNpYmxlQ29sdW1uc01hcCwgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmlzSGlkZGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlQ29sdW1uc01hcFtjb2x1bW4uaWRdID0gIWNvbHVtbi5pc0hpZGRlbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZpc2libGVDb2x1bW5zTWFwO1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgdGhpcy5jcmVhdGVDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlRGF0YXRhYmxlU2NoZW1hKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXBwTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5jbG91ZFByZWZlcmVuY2VTZXJ2aWNlLnVwZGF0ZVByZWZlcmVuY2UodGhpcy5hcHBOYW1lLCBQcm9jZXNzTGlzdENsb3VkUHJlZmVyZW5jZXMuY29sdW1uc1Zpc2liaWxpdHksIHRoaXMuY29sdW1uc1Zpc2liaWxpdHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Db2x1bW5zV2lkdGhDaGFuZ2VkKGNvbHVtbnM6IERhdGFDb2x1bW5bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdDb2x1bW5zV2lkdGhzID0gY29sdW1ucy5yZWR1Y2UoKHdpZHRoc0NvbHVtbnNNYXAsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbHVtbi53aWR0aCkge1xuICAgICAgICAgICAgICAgIHdpZHRoc0NvbHVtbnNNYXBbY29sdW1uLmlkXSA9IE1hdGguY2VpbChjb2x1bW4ud2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdpZHRoc0NvbHVtbnNNYXA7XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICB0aGlzLmNvbHVtbnNXaWR0aHMgPSB7IC4uLnRoaXMuY29sdW1uc1dpZHRocywgLi4ubmV3Q29sdW1uc1dpZHRocyB9O1xuXG4gICAgICAgIHRoaXMuY3JlYXRlQ29sdW1ucygpO1xuXG4gICAgICAgIGlmICh0aGlzLmFwcE5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvdWRQcmVmZXJlbmNlU2VydmljZS51cGRhdGVQcmVmZXJlbmNlKHRoaXMuYXBwTmFtZSwgUHJvY2Vzc0xpc3RDbG91ZFByZWZlcmVuY2VzLmNvbHVtbnNXaWR0aHMsIHRoaXMuY29sdW1uc1dpZHRocyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJvd0NsaWNrKGl0ZW06IERhdGFSb3dFdmVudCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbnN0YW5jZUlkID0gaXRlbS52YWx1ZS5nZXRWYWx1ZSgnaWQnKTtcbiAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHRoaXMuY3VycmVudEluc3RhbmNlSWQpO1xuICAgIH1cblxuICAgIG9uUm93U2VsZWN0KGV2ZW50OiBDdXN0b21FdmVudCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5zdGFuY2VzID0gWy4uLmV2ZW50LmRldGFpbC5zZWxlY3Rpb25dO1xuICAgICAgICB0aGlzLnJvd3NTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJbnN0YW5jZXMpO1xuICAgIH1cblxuICAgIG9uUm93VW5zZWxlY3QoZXZlbnQ6IEN1c3RvbUV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnN0YW5jZXMgPSBbLi4uZXZlbnQuZGV0YWlsLnNlbGVjdGlvbl07XG4gICAgICAgIHRoaXMucm93c1NlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZEluc3RhbmNlcyk7XG4gICAgfVxuXG4gICAgb25Sb3dLZXlVcChldmVudDogQ3VzdG9tRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmRldGFpbC5rZXlib2FyZEV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEluc3RhbmNlSWQgPSBldmVudC5kZXRhaWwucm93LmdldFZhbHVlKCdpZCcpO1xuICAgICAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHRoaXMuY3VycmVudEluc3RhbmNlSWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TaG93Um93QWN0aW9uc01lbnUoZXZlbnQ6IERhdGFDZWxsRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zaG93Um93QWN0aW9uc01lbnUuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25TaG93Um93Q29udGV4dE1lbnUoZXZlbnQ6IERhdGFDZWxsRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zaG93Um93Q29udGV4dE1lbnUuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25FeGVjdXRlUm93QWN0aW9uKHJvdzogRGF0YVJvd0FjdGlvbkV2ZW50KSB7XG4gICAgICAgIHRoaXMuZXhlY3V0ZVJvd0FjdGlvbi5lbWl0KHJvdyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVQcm9jZXNzTGlzdFJlcXVlc3ROb2RlKCk6IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdE5vZGU6IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsID0ge1xuICAgICAgICAgICAgYXBwTmFtZTogdGhpcy5hcHBOYW1lLFxuICAgICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgICAgIG1heEl0ZW1zOiB0aGlzLnNpemUsXG4gICAgICAgICAgICAgICAgc2tpcENvdW50OiB0aGlzLnNraXBDb3VudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNvcnRpbmc6IHRoaXMuZ2V0UHJvY2Vzc0xpc3RSZXF1ZXN0U29ydGluZygpLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lcyxcbiAgICAgICAgICAgIGlkOiB0aGlzLmlkcyxcbiAgICAgICAgICAgIHBhcmVudElkOiB0aGlzLnBhcmVudElkcyxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbk5hbWVzLFxuICAgICAgICAgICAgaW5pdGlhdG9yOiB0aGlzLmluaXRpYXRvcnMsXG4gICAgICAgICAgICBhcHBWZXJzaW9uOiB0aGlzLmFwcFZlcnNpb25zLFxuICAgICAgICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1c2VzLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkRnJvbTogdGhpcy5sYXN0TW9kaWZpZWRGcm9tPy50b0lTT1N0cmluZygpIHx8ICcnLFxuICAgICAgICAgICAgbGFzTW9kaWZpZWRUbzogdGhpcy5sYXN0TW9kaWZpZWRUbz8udG9JU09TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgICAgIHN0YXJ0RnJvbTogdGhpcy5zdGFydEZyb20sXG4gICAgICAgICAgICBzdGFydFRvOiB0aGlzLnN0YXJ0VG8sXG4gICAgICAgICAgICBjb21wbGV0ZWRGcm9tOiB0aGlzLmNvbXBsZXRlZEZyb20sXG4gICAgICAgICAgICBjb21wbGV0ZWRUbzogdGhpcy5jb21wbGV0ZWRUbyxcbiAgICAgICAgICAgIHN1c3BlbmRlZEZyb206IHRoaXMuc3VzcGVuZGVkRnJvbSxcbiAgICAgICAgICAgIHN1c3BlbmRlZFRvOiB0aGlzLnN1c3BlbmRlZFRvLFxuICAgICAgICAgICAgcHJvY2Vzc1ZhcmlhYmxlS2V5czogdGhpcy5nZXRWYXJpYWJsZURlZmluaXRpb25zUmVxdWVzdE1vZGVsKCksXG4gICAgICAgICAgICBwcm9jZXNzVmFyaWFibGVGaWx0ZXJzOiB0aGlzLnByb2Nlc3NWYXJpYWJsZXNcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsKHJlcXVlc3ROb2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb2Nlc3NMaXN0UmVxdWVzdFNvcnRpbmcoKTogUHJvY2Vzc0xpc3RSZXF1ZXN0U29ydGluZ01vZGVsIHtcbiAgICAgICAgaWYgKCF0aGlzLnNvcnRpbmc/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9jZXNzTGlzdFJlcXVlc3RTb3J0aW5nTW9kZWwoe1xuICAgICAgICAgICAgICAgIG9yZGVyQnk6IHRoaXMuZGVmYXVsdFNvcnRpbmcua2V5LFxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5kZWZhdWx0U29ydGluZy5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgaXNGaWVsZFByb2Nlc3NWYXJpYWJsZTogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JkZXJCeSA9IHRoaXMuc29ydGluZ1swXT8ub3JkZXJCeTtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gdGhpcy5zb3J0aW5nWzBdPy5kaXJlY3Rpb247XG4gICAgICAgIGNvbnN0IG9yZGVyQnlDb2x1bW4gPSB0aGlzLmNvbHVtbkxpc3Q/LmNvbHVtbnMuZmluZCgoY29sdW1uKSA9PiBjb2x1bW4ua2V5ID09PSBvcmRlckJ5KTtcbiAgICAgICAgY29uc3QgaXNGaWVsZFByb2Nlc3NWYXJpYWJsZSA9IG9yZGVyQnlDb2x1bW4/LmN1c3RvbURhdGE/LmNvbHVtblR5cGUgPT09ICdwcm9jZXNzLXZhcmlhYmxlLWNvbHVtbic7XG5cbiAgICAgICAgaWYgKGlzRmllbGRQcm9jZXNzVmFyaWFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NEZWZpbml0aW9uS2V5ID0gb3JkZXJCeUNvbHVtbi5jdXN0b21EYXRhLnZhcmlhYmxlRGVmaW5pdGlvbnNQYXlsb2FkWzBdLnNwbGl0KCcvJylbMF07XG4gICAgICAgICAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSBvcmRlckJ5Q29sdW1uLmN1c3RvbURhdGEudmFyaWFibGVEZWZpbml0aW9uc1BheWxvYWRbMF0uc3BsaXQoJy8nKVsxXTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvY2Vzc0xpc3RSZXF1ZXN0U29ydGluZ01vZGVsKHtcbiAgICAgICAgICAgICAgICBvcmRlckJ5OiB2YXJpYWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgIGlzRmllbGRQcm9jZXNzVmFyaWFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgcHJvY2Vzc1ZhcmlhYmxlRGF0YToge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbktleSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogb3JkZXJCeUNvbHVtbi5jdXN0b21EYXRhLnZhcmlhYmxlVHlwZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9jZXNzTGlzdFJlcXVlc3RTb3J0aW5nTW9kZWwoeyBvcmRlckJ5LCBkaXJlY3Rpb24sIGlzRmllbGRQcm9jZXNzVmFyaWFibGU6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVSZXF1ZXN0Tm9kZSgpOiBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3ROb2RlID0ge1xuICAgICAgICAgICAgYXBwTmFtZTogdGhpcy5hcHBOYW1lLFxuICAgICAgICAgICAgYXBwVmVyc2lvbjogdGhpcy5nZXRBcHBWZXJzaW9ucygpLFxuICAgICAgICAgICAgbWF4SXRlbXM6IHRoaXMuc2l6ZSxcbiAgICAgICAgICAgIHNraXBDb3VudDogdGhpcy5za2lwQ291bnQsXG4gICAgICAgICAgICBpbml0aWF0b3I6IHRoaXMuaW5pdGlhdG9yLFxuICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgICAgICBlbnZpcm9ubWVudElkOiB0aGlzLmVudmlyb25tZW50SWQsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICBwYXJlbnRJZDogdGhpcy5wYXJlbnRJZCxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uSWQ6IHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSxcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICAgICAgICBidXNpbmVzc0tleTogdGhpcy5idXNpbmVzc0tleSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZEZyb206IHRoaXMubGFzdE1vZGlmaWVkRnJvbSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZFRvOiB0aGlzLmxhc3RNb2RpZmllZFRvLFxuICAgICAgICAgICAgc3RhcnRGcm9tOiB0aGlzLnN0YXJ0RnJvbSxcbiAgICAgICAgICAgIHN0YXJ0VG86IHRoaXMuc3RhcnRUbyxcbiAgICAgICAgICAgIGNvbXBsZXRlZEZyb206IHRoaXMuY29tcGxldGVkRnJvbSxcbiAgICAgICAgICAgIGNvbXBsZXRlZFRvOiB0aGlzLmNvbXBsZXRlZFRvLFxuICAgICAgICAgICAgc3VzcGVuZGVkRnJvbTogdGhpcy5zdXNwZW5kZWRGcm9tLFxuICAgICAgICAgICAgc3VzcGVuZGVkVG86IHRoaXMuc3VzcGVuZGVkVG8sXG4gICAgICAgICAgICBjb21wbGV0ZWREYXRlOiB0aGlzLmNvbXBsZXRlZERhdGUsXG4gICAgICAgICAgICBzb3J0aW5nOiB0aGlzLnNvcnRpbmcsXG4gICAgICAgICAgICB2YXJpYWJsZUtleXM6IHRoaXMuZ2V0VmFyaWFibGVEZWZpbml0aW9uc1JlcXVlc3RNb2RlbCgpXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbChyZXF1ZXN0Tm9kZSk7XG4gICAgfVxuXG4gICAgZ2V0QXBwVmVyc2lvbnMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwVmVyc2lvbiBpbnN0YW5jZW9mIEFycmF5ID8gdGhpcy5hcHBWZXJzaW9uLmpvaW4oJywnKSA6IHRoaXMuYXBwVmVyc2lvbiA/IFN0cmluZyh0aGlzLmFwcFZlcnNpb24pIDogJyc7XG4gICAgfVxuXG4gICAgc2V0U29ydGluZyhzb3J0RGV0YWlsKSB7XG4gICAgICAgIGNvbnN0IHNvcnRpbmcgPSBzb3J0RGV0YWlsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIG9yZGVyQnk6IHNvcnREZXRhaWwua2V5LFxuICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBzb3J0RGV0YWlsLmRpcmVjdGlvbi50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogeyAuLi50aGlzLmRlZmF1bHRTb3J0aW5nIH07XG4gICAgICAgIHRoaXMuc29ydGluZyA9IFtuZXcgUHJvY2Vzc0xpc3RDbG91ZFNvcnRpbmdNb2RlbChzb3J0aW5nKV07XG4gICAgfVxuXG4gICAgZm9ybWF0U29ydGluZyhzb3J0aW5nOiBQcm9jZXNzTGlzdENsb3VkU29ydGluZ01vZGVsW10pIHtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRTb3J0aW5nID0gdGhpcy5pc1ZhbGlkU29ydGluZyhzb3J0aW5nKSA/IFtzb3J0aW5nWzBdLm9yZGVyQnksIHNvcnRpbmdbMF0uZGlyZWN0aW9uLnRvTG9jYWxlTG93ZXJDYXNlKCldIDogbnVsbDtcbiAgICB9XG5cbiAgICBpc1ZhbGlkU29ydGluZyhzb3J0aW5nOiBQcm9jZXNzTGlzdENsb3VkU29ydGluZ01vZGVsW10pIHtcbiAgICAgICAgcmV0dXJuIHNvcnRpbmcubGVuZ3RoICYmIHNvcnRpbmdbMF0ub3JkZXJCeSAmJiBzb3J0aW5nWzBdLmRpcmVjdGlvbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhcmlhYmxlRGVmaW5pdGlvbnNSZXF1ZXN0TW9kZWwoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBkaXNwbGF5ZWRWYXJpYWJsZUNvbHVtbnMgPSB0aGlzLmNvbHVtbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbHVtbikgPT4gY29sdW1uLmN1c3RvbURhdGE/LmNvbHVtblR5cGUgPT09IFBST0NFU1NfTElTVF9DVVNUT01fVkFSSUFCTEVfQ09MVU1OICYmIGNvbHVtbi5pc0hpZGRlbiAhPT0gdHJ1ZSlcbiAgICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlRGVmaW5pdGlvbnNQYXlsb2FkID0gY29sdW1uLmN1c3RvbURhdGEudmFyaWFibGVEZWZpbml0aW9uc1BheWxvYWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhcmlhYmxlRGVmaW5pdGlvbnNQYXlsb2FkO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHZhcmlhYmxlc1BheWxvYWQsIHBheWxvYWQpID0+IFsuLi52YXJpYWJsZXNQYXlsb2FkLCAuLi5wYXlsb2FkXSwgW10pO1xuXG4gICAgICAgIHJldHVybiBkaXNwbGF5ZWRWYXJpYWJsZUNvbHVtbnMubGVuZ3RoID8gZGlzcGxheWVkVmFyaWFibGVDb2x1bW5zIDogdW5kZWZpbmVkO1xuICAgIH1cbn1cbiIsIjxhZGYtZGF0YXRhYmxlXG4gICAgICAgIFtyb3dzXT1cInJvd3NcIlxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgICAgW2RhdGFdPVwiZGF0YUFkYXB0ZXJcIlxuICAgICAgICBbc3RpY2t5SGVhZGVyXT1cInN0aWNreUhlYWRlclwiXG4gICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgICAgIFtzb3J0aW5nXT1cImZvcm1hdHRlZFNvcnRpbmdcIlxuICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cIm11bHRpc2VsZWN0XCJcbiAgICAgICAgW2FjdGlvbnNdPVwic2hvd0FjdGlvbnNcIlxuICAgICAgICBbYWN0aW9uc1Bvc2l0aW9uXT1cImFjdGlvbnNQb3NpdGlvblwiXG4gICAgICAgIFtjb250ZXh0TWVudV09XCJzaG93Q29udGV4dE1lbnVcIlxuICAgICAgICBbc2hvd01haW5EYXRhdGFibGVBY3Rpb25zXT1cInNob3dNYWluRGF0YXRhYmxlQWN0aW9uc1wiXG4gICAgICAgIFtzaG93UHJvdmlkZWRBY3Rpb25zXT1cInNob3dQcm92aWRlZEFjdGlvbnNcIlxuICAgICAgICBbaXNSZXNpemluZ0VuYWJsZWRdPVwiaXNSZXNpemluZ0VuYWJsZWRcIlxuICAgICAgICAoc2hvd1Jvd0FjdGlvbnNNZW51KT1cIm9uU2hvd1Jvd0FjdGlvbnNNZW51KCRldmVudClcIlxuICAgICAgICAoc2hvd1Jvd0NvbnRleHRNZW51KT1cIm9uU2hvd1Jvd0NvbnRleHRNZW51KCRldmVudClcIlxuICAgICAgICAoZXhlY3V0ZVJvd0FjdGlvbik9XCJvbkV4ZWN1dGVSb3dBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAocm93LXNlbGVjdCk9XCJvblJvd1NlbGVjdCgkYW55KCRldmVudCkpXCJcbiAgICAgICAgKHJvdy11bnNlbGVjdCk9XCJvblJvd1Vuc2VsZWN0KCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAocm93LWtleXVwKT1cIm9uUm93S2V5VXAoJGFueSgkZXZlbnQpKVwiXG4gICAgICAgIChzb3J0aW5nLWNoYW5nZWQpPVwib25Tb3J0aW5nQ2hhbmdlZCgkYW55KCRldmVudCkpXCJcbiAgICAgICAgKGNvbHVtbk9yZGVyQ2hhbmdlZCk9XCJvbkNvbHVtbk9yZGVyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKGNvbHVtbnNXaWR0aENoYW5nZWQpPVwib25Db2x1bW5zV2lkdGhDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDxhZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjdXN0b21Mb2FkaW5nQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWNsb3VkLXByb2Nlc3MtbGlzdC1sb2FkaW5nLW1hcmdpblwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCInaW5kZXRlcm1pbmF0ZSdcIiAvPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi1jdXN0b20tbG9hZGluZy1jb250ZW50LXRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYWRmLWxvYWRpbmctY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPGFkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudCAqbmdJZj1cIiFlbXB0eUN1c3RvbUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiYXNzZXNzbWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQURGX0NMT1VEX1BST0NFU1NfTElTVC5NRVNTQUdFUy5USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ0FERl9DTE9VRF9QUk9DRVNTX0xJU1QuTUVTU0FHRVMuU1VCVElUTEUnfCB0cmFuc2xhdGVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2FkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuXG4gICAgICAgIDxhZGYtbWFpbi1tZW51LWRhdGF0YWJsZS10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbWFpbk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxhZGYtZGF0YXRhYmxlLWNvbHVtbi1zZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgW21haW5NZW51VHJpZ2dlcl09XCJtYWluTWVudVRyaWdnZXJcIlxuICAgICAgICAgICAgICAgICAgICAoc3VibWl0Q29sdW1uc1Zpc2liaWxpdHkpPVwib25Db2x1bW5zVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYWRmLW1haW4tbWVudS1kYXRhdGFibGUtdGVtcGxhdGU+XG48L2FkZi1kYXRhdGFibGU+XG4iXX0=
594
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saXN0LWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWxpc3QvY29tcG9uZW50cy9wcm9jZXNzLWxpc3QtY2xvdWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9wcm9jZXNzL3Byb2Nlc3MtbGlzdC9jb21wb25lbnRzL3Byb2Nlc3MtbGlzdC1jbG91ZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixtQ0FBbUMsRUFDbkMscUNBQXFDLEVBS3JDLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLCtCQUErQixFQUMvQixrQ0FBa0MsRUFDbEMsMEJBQTBCLEVBRzFCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDdkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2Q0FB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SztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLHdCQUF3QjtzQkFEdkIsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQVFOLEtBQUs7c0JBREosS0FBSztnQkFRTixHQUFHO3NCQURGLEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQVFOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFRTixVQUFVO3NCQURULEtBQUs7Z0JBUU4sV0FBVztzQkFEVixLQUFLO2dCQVFOLFFBQVE7c0JBRFAsS0FBSztnQkFRTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixRQUFRO3NCQURQLE1BQU07Z0JBS1AsWUFBWTtzQkFEWCxNQUFNO2dCQUtQLGtCQUFrQjtzQkFEakIsTUFBTTtnQkFLUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBS1AsZ0JBQWdCO3NCQURmLE1BQU07Z0JBS1AsS0FBSztzQkFESixNQUFNO2dCQUtQLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBcHBDb25maWdTZXJ2aWNlLFxuICAgIENvbHVtbnNTZWxlY3RvckNvbXBvbmVudCxcbiAgICBDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBDdXN0b21Mb2FkaW5nQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIERhdGFDZWxsRXZlbnQsXG4gICAgRGF0YUNvbHVtbixcbiAgICBEYXRhUm93QWN0aW9uRXZlbnQsXG4gICAgRGF0YVJvd0V2ZW50LFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBEYXRhVGFibGVTY2hlbWEsXG4gICAgRW1wdHlDb250ZW50Q29tcG9uZW50LFxuICAgIExvYWRpbmdDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgTWFpbk1lbnVEYXRhVGFibGVUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBOb0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBQYWdpbmF0ZWRDb21wb25lbnQsXG4gICAgUGFnaW5hdGlvbk1vZGVsLFxuICAgIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgVXNlclByZWZlcmVuY2VWYWx1ZXNcbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IFByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcHJvY2Vzcy1saXN0LWNsb3VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcHJvY2Vzc0Nsb3VkUHJlc2V0c0RlZmF1bHRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9wcm9jZXNzLWNsb3VkLXByZXNldC5tb2RlbCc7XG5pbXBvcnQgeyBQcm9jZXNzTGlzdFJlcXVlc3RNb2RlbCwgUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvcHJvY2Vzcy1jbG91ZC1xdWVyeS1yZXF1ZXN0Lm1vZGVsJztcbmltcG9ydCB7IFByb2Nlc3NMaXN0Q2xvdWRTb3J0aW5nTW9kZWwsIFByb2Nlc3NMaXN0UmVxdWVzdFNvcnRpbmdNb2RlbCB9IGZyb20gJy4uL21vZGVscy9wcm9jZXNzLWxpc3Qtc29ydGluZy5tb2RlbCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcmVmZXJlbmNlQ2xvdWRTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlZmVyZW5jZS1jbG91ZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUFJPQ0VTU19MSVNUU19QUkVGRVJFTkNFU19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2xvdWQtdG9rZW4uc2VydmljZSc7XG5pbXBvcnQgeyBQcm9jZXNzTGlzdENsb3VkUHJlZmVyZW5jZXMgfSBmcm9tICcuLi9tb2RlbHMvcHJvY2Vzcy1jbG91ZC1wcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBQcm9jZXNzTGlzdERhdGF0YWJsZUFkYXB0ZXIgfSBmcm9tICcuLi9kYXRhdGFibGUvcHJvY2Vzcy1saXN0LWRhdGF0YWJsZS1hZGFwdGVyJztcbmltcG9ydCB7IFBST0NFU1NfTElTVF9DVVNUT01fVkFSSUFCTEVfQ09MVU1OLCBQcm9jZXNzTGlzdERhdGFDb2x1bW5DdXN0b21EYXRhIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RhdGEtY29sdW1uLWN1c3RvbS1kYXRhJztcbmltcG9ydCB7IFZhcmlhYmxlTWFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ZhcmlhYmxlLW1hcHBlci5zZXZpY2UnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUHJvY2Vzc1ZhcmlhYmxlRmlsdGVyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcHJvY2Vzcy12YXJpYWJsZS1maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5jb25zdCBQUkVTRVRfS0VZID0gJ2FkZi1jbG91ZC1wcm9jZXNzLWxpc3QucHJlc2V0cyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9icmFjZS1zdHlsZSAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1jbG91ZC1wcm9jZXNzLWxpc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBDb2x1bW5zU2VsZWN0b3JDb21wb25lbnQsXG4gICAgICAgIE1haW5NZW51RGF0YVRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIEVtcHR5Q29udGVudENvbXBvbmVudCxcbiAgICAgICAgTm9Db250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIExvYWRpbmdDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIE5nSWZcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLWxpc3QtY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtbGlzdC1jbG91ZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0xpc3RDbG91ZENvbXBvbmVudFxuICAgIGV4dGVuZHMgRGF0YVRhYmxlU2NoZW1hPFByb2Nlc3NMaXN0RGF0YUNvbHVtbkN1c3RvbURhdGE+XG4gICAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIFBhZ2luYXRlZENvbXBvbmVudFxue1xuICAgIEBWaWV3Q2hpbGQoRGF0YVRhYmxlQ29tcG9uZW50KSBkYXRhVGFibGU6IERhdGFUYWJsZUNvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoQ3VzdG9tRW1wdHlDb250ZW50VGVtcGxhdGVEaXJlY3RpdmUpXG4gICAgZW1wdHlDdXN0b21Db250ZW50OiBDdXN0b21FbXB0eUNvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICAgIEBDb250ZW50Q2hpbGQoQ3VzdG9tTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSlcbiAgICBjdXN0b21Mb2FkaW5nQ29udGVudDogQ3VzdG9tTG9hZGluZ0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICAgIC8qKiBUaGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24uICovXG4gICAgQElucHV0KClcbiAgICBhcHBOYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBUaGUgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24uICovXG4gICAgQElucHV0KClcbiAgICBhcHBWZXJzaW9uOiBudW1iZXIgfCBudW1iZXJbXTtcblxuICAgIC8qKiBOYW1lIG9mIHRoZSBpbml0aWF0b3Igb2YgdGhlIHByb2Nlc3MuICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWF0b3I6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgcHJvY2Vzc2VzIHRvIGRpc3BsYXkgb25seSB0aGUgb25lcyB3aXRoIHRoaXMgSUQuICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMgdG8gZGlzcGxheSBvbmx5IHRoZSBvbmVzIHdpdGggdGhpcyBlbnZpcm9ubWVudCBJRC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGVudmlyb25tZW50SWQ6IHN0cmluZztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3NlcyB0byBkaXNwbGF5IG9ubHkgdGhlIG9uZXMgd2l0aCB0aGlzIG5hbWUuICovXG4gICAgQElucHV0KClcbiAgICBuYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3NlcyB0byBkaXNwbGF5IG9ubHkgdGhlIG9uZXMgd2l0aCB0aGlzIHBhcmVudElkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFyZW50SWQ/OiBzdHJpbmc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMgdG8gZGlzcGxheSBvbmx5IHRoZSBvbmVzIHdpdGggdGhpcyBwcm9jZXNzIGRlZmluaXRpb24gSUQuICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzRGVmaW5pdGlvbklkOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3NlcyB0byBkaXNwbGF5IG9ubHkgdGhlIG9uZXMgd2l0aCB0aGlzIHByb2Nlc3MgZGVmaW5pdGlvbiBuYW1lLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJvY2Vzc0RlZmluaXRpb25OYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3NlcyB0byBkaXNwbGF5IG9ubHkgdGhlIG9uZXMgd2l0aCB0aGlzIHByb2Nlc3MgZGVmaW5pdGlvbiBrZXkuICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMgdG8gZGlzcGxheSBvbmx5IHRoZSBvbmVzIHdpdGggdGhpcyBzdGF0dXMuICovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXM6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgcHJvY2Vzc2VzIHRvIGRpc3BsYXkgb25seSB0aGUgb25lcyB3aXRoIHRoaXMgYnVzaW5lc3NLZXkgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBidXNpbmVzc0tleTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzIHdpdGggbGFzdE1vZGlmaWVkVG8gZXF1YWwgdG8gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBsYXN0TW9kaWZpZWRGcm9tOiBEYXRlO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgcHJvY2Vzc2VzLiBEaXNwbGF5IG9ubHkgcHJvY2VzcyB3aXRoIGxhc3RNb2RpZmllZFRvIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGFzdE1vZGlmaWVkVG86IERhdGU7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzIHdpdGggc3RhcnRlZERhdGUgZ3JlYXRlciB0aGVuIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RhcnRGcm9tOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3Nlcy4gRGlzcGxheSBvbmx5IHByb2Nlc3Mgd2l0aCBzdGFydGVkRGF0ZSBsZXNzIHRoYW4gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBzdGFydFRvOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3Nlcy4gRGlzcGxheSBvbmx5IHByb2Nlc3Mgd2l0aCBjb21wbGV0ZWRGcm9tIGVxdWFsIHRvIHRoZSBzdXBwbGllZCBkYXRlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29tcGxldGVkRnJvbTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzIHdpdGggY29tcGxldGVkVG8gZXF1YWwgdG8gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBjb21wbGV0ZWRUbzogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzIHdpdGggY29tcGxldGVkRGF0ZSBlcXVhbCB0byB0aGUgc3VwcGxpZWQgZGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbXBsZXRlZERhdGU6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIEZpbHRlciB0aGUgcHJvY2Vzc2VzLiBEaXNwbGF5IG9ubHkgcHJvY2VzcyB3aXRoIHN1c3BlbmRlZEZyb20gZXF1YWwgdG8gdGhlIHN1cHBsaWVkIGRhdGUuICovXG4gICAgQElucHV0KClcbiAgICBzdXNwZW5kZWRGcm9tOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBGaWx0ZXIgdGhlIHByb2Nlc3Nlcy4gRGlzcGxheSBvbmx5IHByb2Nlc3Mgd2l0aCBzdXNwZW5kZWRUbyBlcXVhbCB0byB0aGUgc3VwcGxpZWQgZGF0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHN1c3BlbmRlZFRvOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFJvdyBzZWxlY3Rpb24gbW9kZS4gQ2FuIGJlIFwibm9uZVwiLCBcInNpbmdsZVwiIG9yIFwibXVsdGlwbGVcIi5cbiAgICAgKiBGb3IgbXVsdGlwbGUgbW9kZSwgeW91IGNhbiB1c2UgQ21kIChtYWNPUykgb3IgQ3RybCAoV2luKSBtb2RpZmllclxuICAgICAqIGtleSB0byB0b2dnbGUgc2VsZWN0aW9uIGZvciBtdWx0aXBsZSByb3dzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uTW9kZTogc3RyaW5nID0gJ3NpbmdsZSc7IC8vIG5vbmV8c2luZ2xlfG11bHRpcGxlXG5cbiAgICAvKiogVG9nZ2xlcyBtdWx0aXBsZSByb3cgc2VsZWN0aW9uIGFuZCByZW5kZXJzIGNoZWNrYm94ZXMgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJvdyAqL1xuICAgIEBJbnB1dCgpXG4gICAgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEFycmF5IG9mIG9iamVjdHMgc3BlY2lmeWluZyB0aGUgc29ydCBvcmRlciBhbmQgZGlyZWN0aW9uIGZvciB0aGVcbiAgICAgKiBsaXN0LiBUaGUgc29ydCBwYXJhbWV0ZXJzIGFyZSBmb3IgQkUgc29ydGluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNvcnRpbmc6IFByb2Nlc3NMaXN0Q2xvdWRTb3J0aW5nTW9kZWxbXTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBkYXRhIGFjdGlvbnMgY29sdW1uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0FjdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBwcm92aWRlZCBhY3Rpb25zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1Byb3ZpZGVkQWN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBhY3Rpb25zIGRyb3Bkb3duIG1lbnUuIENhbiBiZSBcImxlZnRcIiBvciBcInJpZ2h0XCIuICovXG4gICAgQElucHV0KClcbiAgICBhY3Rpb25zUG9zaXRpb246IHN0cmluZyA9ICdyaWdodCc7IC8vIGxlZnR8cmlnaHRcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBzdGlja3kgaGVhZGVyIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBzdGlja3lIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIGN1c3RvbSBjb250ZXh0IG1lbnUgZm9yIHRoZSBjb21wb25lbnQuICovXG4gICAgQElucHV0KClcbiAgICBzaG93Q29udGV4dE1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGUgbWFpbiBkYXRhdGFibGUgYWN0aW9ucy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dNYWluRGF0YXRhYmxlQWN0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgbWFpbiBkYXRhdGFibGUgY29sdW1uIHJlc2l6aW5nIGZlYXR1cmUuICovXG4gICAgQElucHV0KClcbiAgICBpc1Jlc2l6aW5nRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEZyb20gQWN0aXZpdGkgOC43LjAgZm9yd2FyZCwgdXNlICdQT1NUJyB2YWx1ZSBhbmQgYXJyYXkgaW5wdXRzIHRvIGVuYWJsZSBhZHZhbmNlZCBmaWx0ZXJpbmcuICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hBcGlNZXRob2Q6ICdHRVQnIHwgJ1BPU1QnID0gJ0dFVCc7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIHByb2Nlc3Nlcy4gRGlzcGxheSBvbmx5IHByb2Nlc3NlcyB3aXRoIG5hbWVzIG1hdGNoaW5nIGFueSBvZiB0aGUgc3VwcGxpZWQgc3RyaW5ncy5cbiAgICAgKiBUaGlzIGlucHV0IHdpbGwgYmUgdXNlZCBvbmx5IGlmIHNlYXJjaEFwaU1ldGhvZCBpbnB1dCBpcyBwcm92aWRlZCB3aXRoICdQT1NUJyB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzZXMgd2l0aCBpbnN0YW5jZSBJZHMgbWF0Y2hpbmcgYW55IG9mIHRoZSBzdXBwbGllZCBzdHJpbmdzLlxuICAgICAqIFRoaXMgaW5wdXQgd2lsbCBiZSB1c2VkIG9ubHkgaWYgc2VhcmNoQXBpTWV0aG9kIGlucHV0IGlzIHByb3ZpZGVkIHdpdGggJ1BPU1QnIHZhbHVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzZXMgd2l0aCBwYXJlbnQgSWRzIG1hdGNoaW5nIGFueSBvZiB0aGUgc3VwcGxpZWQgc3RyaW5ncy5cbiAgICAgKiBUaGlzIGlucHV0IHdpbGwgYmUgdXNlZCBvbmx5IGlmIHNlYXJjaEFwaU1ldGhvZCBpbnB1dCBpcyBwcm92aWRlZCB3aXRoICdQT1NUJyB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBhcmVudElkczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgcHJvY2Vzc2VzLiBEaXNwbGF5IG9ubHkgcHJvY2Vzc2VzIHdpdGggZGVmaW5pdGlvbiBuYW1lcyBtYXRjaGluZyBhbnkgb2YgdGhlIHN1cHBsaWVkIHN0cmluZ3MuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzRGVmaW5pdGlvbk5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzZXMgc3RhcnRlZCBieSBhbnkgb2YgdGhlIHVzZXJzIHdob3NlIHVzZXJuYW1lcyBhcmUgcHJlc2VudCBpbiB0aGUgYXJyYXkuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWF0b3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVyIHRoZSBwcm9jZXNzZXMuIERpc3BsYXkgb25seSBwcm9jZXNzZXMgcHJlc2VudCBpbiBhbnkgb2YgdGhlIHNwZWNpZmllZCBhcHAgdmVyc2lvbnMuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcHBWZXJzaW9uczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgcHJvY2Vzc2VzLiBEaXNwbGF5IG9ubHkgcHJvY2Vzc2VzIHdpdGggcHJvdmlkZWQgc3RhdHVzZXMuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzdGF0dXNlczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgcHJvY2Vzc2VzLiBEaXNwbGF5IG9ubHkgcHJvY2Vzc2VzIHdpdGggc3BlY2lmaWMgcHJvY2VzcyB2YXJpYWJsZXMuXG4gICAgICogVGhpcyBpbnB1dCB3aWxsIGJlIHVzZWQgb25seSBpZiBzZWFyY2hBcGlNZXRob2QgaW5wdXQgaXMgcHJvdmlkZWQgd2l0aCAnUE9TVCcgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzVmFyaWFibGVzOiBQcm9jZXNzVmFyaWFibGVGaWx0ZXJNb2RlbFtdO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIHJvdyBpbiB0aGUgcHJvY2VzcyBsaXN0IGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHJvd3MgYXJlIHNlbGVjdGVkL3Vuc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcm93c1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICAgIC8qKiBFbWl0dGVkIGJlZm9yZSB0aGUgY29udGV4dCBtZW51IGlzIGRpc3BsYXllZCBmb3IgYSByb3cuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2hvd1Jvd0NvbnRleHRNZW51ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhQ2VsbEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgYmVmb3JlIHRoZSBhY3Rpb25zIG1lbnUgaXMgZGlzcGxheWVkIGZvciBhIHJvdy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzaG93Um93QWN0aW9uc01lbnUgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFDZWxsRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIGV4ZWN1dGVzIGEgcm93IGFjdGlvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBleGVjdXRlUm93QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhUm93QWN0aW9uRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3VycyB3aGlsZSBsb2FkaW5nIHRoZSBsaXN0IG9mIHByb2Nlc3MgaW5zdGFuY2VzIGZyb20gdGhlIHNlcnZlci4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgbGlzdCBvZiBwcm9jZXNzIGluc3RhbmNlcyBoYXMgYmVlbiBsb2FkZWQgc3VjY2Vzc2Z1bGx5IGZyb20gdGhlIHNlcnZlci4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdWNjZXNzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBwYWdpbmF0aW9uOiBCZWhhdmlvclN1YmplY3Q8UGFnaW5hdGlvbk1vZGVsPjtcbiAgICBzaXplOiBudW1iZXI7XG4gICAgc2tpcENvdW50OiBudW1iZXIgPSAwO1xuICAgIGN1cnJlbnRJbnN0YW5jZUlkOiBzdHJpbmc7XG4gICAgc2VsZWN0ZWRJbnN0YW5jZXM6IGFueVtdO1xuICAgIGlzTG9hZGluZyA9IHRydWU7XG5cbiAgICByb3dzOiBhbnlbXSA9IFtdO1xuICAgIGZvcm1hdHRlZFNvcnRpbmc6IGFueVtdO1xuICAgIHJlcXVlc3ROb2RlOiBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbDtcbiAgICBwcm9jZXNzTGlzdFJlcXVlc3ROb2RlOiBQcm9jZXNzTGlzdFJlcXVlc3RNb2RlbDtcbiAgICBkYXRhQWRhcHRlcjogUHJvY2Vzc0xpc3REYXRhdGFibGVBZGFwdGVyO1xuXG4gICAgcHJpdmF0ZSBkZWZhdWx0U29ydGluZyA9IHsga2V5OiAnc3RhcnREYXRlJywgZGlyZWN0aW9uOiAnZGVzYycgfTtcblxuICAgIHByaXZhdGUgZmV0Y2hQcm9jZXNzZXNUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBwcm9jZXNzTGlzdENsb3VkU2VydmljZTogUHJvY2Vzc0xpc3RDbG91ZFNlcnZpY2UsXG4gICAgICAgIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXNlclByZWZlcmVuY2VzOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFBST0NFU1NfTElTVFNfUFJFRkVSRU5DRVNfU0VSVklDRV9UT0tFTikgcHJpdmF0ZSBjbG91ZFByZWZlcmVuY2VTZXJ2aWNlOiBQcmVmZXJlbmNlQ2xvdWRTZXJ2aWNlSW50ZXJmYWNlLFxuICAgICAgICBwcml2YXRlIHZhcmlhYmxlTWFwcGVyU2VydmljZTogVmFyaWFibGVNYXBwZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGFwcENvbmZpZ1NlcnZpY2UsIFBSRVNFVF9LRVksIHByb2Nlc3NDbG91ZFByZXNldHNEZWZhdWx0TW9kZWwpO1xuICAgICAgICB0aGlzLnNpemUgPSB1c2VyUHJlZmVyZW5jZXMucGFnaW5hdGlvblNpemU7XG4gICAgICAgIHRoaXMudXNlclByZWZlcmVuY2VzLnNlbGVjdChVc2VyUHJlZmVyZW5jZVZhbHVlcy5QYWdpbmF0aW9uU2l6ZSkuc3Vic2NyaWJlKChwYWdlU2l6ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaXplID0gcGFnZVNpemU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhZ2luYXRpb25Nb2RlbD4oe1xuICAgICAgICAgICAgbWF4SXRlbXM6IHRoaXMuc2l6ZSxcbiAgICAgICAgICAgIHNraXBDb3VudDogMCxcbiAgICAgICAgICAgIHRvdGFsSXRlbXM6IDBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5pc0NvbHVtblNjaGVtYUNyZWF0ZWQkLCB0aGlzLmZldGNoUHJvY2Vzc2VzVHJpZ2dlciRdKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+ICh0aGlzLmlzTG9hZGluZyA9IHRydWUpKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKFtpc0NvbHVtblNjaGVtYUNyZWF0ZWRdKSA9PiBpc0NvbHVtblNjaGVtYUNyZWF0ZWQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaEFwaU1ldGhvZCA9PT0gJ1BPU1QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0Tm9kZSA9IHRoaXMuY3JlYXRlUHJvY2Vzc0xpc3RSZXF1ZXN0Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzTGlzdFJlcXVlc3ROb2RlID0gcmVxdWVzdE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTGlzdENsb3VkU2VydmljZS5mZXRjaFByb2Nlc3NMaXN0KHJlcXVlc3ROb2RlKS5waXBlKHRha2UoMSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdE5vZGUgPSB0aGlzLmNyZWF0ZVJlcXVlc3ROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcXVlc3ROb2RlID0gcmVxdWVzdE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTGlzdENsb3VkU2VydmljZS5nZXRQcm9jZXNzQnlSZXF1ZXN0KHJlcXVlc3ROb2RlKS5waXBlKHRha2UoMSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChwcm9jZXNzZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dzID0gdGhpcy52YXJpYWJsZU1hcHBlclNlcnZpY2UubWFwVmFyaWFibGVzQnlDb2x1bW5UaXRsZShwcm9jZXNzZXMubGlzdC5lbnRyaWVzLCB0aGlzLmNvbHVtbnMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUFkYXB0ZXIgPSBuZXcgUHJvY2Vzc0xpc3REYXRhdGFibGVBZGFwdGVyKHRoaXMucm93cywgdGhpcy5jb2x1bW5zKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MuZW1pdChwcm9jZXNzZXMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb24ubmV4dChwcm9jZXNzZXMubGlzdC5wYWdpbmF0aW9uKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLmNsb3VkUHJlZmVyZW5jZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRQcmVmZXJlbmNlcyh0aGlzLmFwcE5hbWUpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIG1hcCgocHJlZmVyZW5jZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlZmVyZW5jZXNMaXN0ID0gcHJlZmVyZW5jZXM/Lmxpc3Q/LmVudHJpZXMgfHwgW107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbnNPcmRlciA9IHByZWZlcmVuY2VzTGlzdC5maW5kKChwcmVmZXJlbmNlKSA9PiBwcmVmZXJlbmNlLmVudHJ5LmtleSA9PT0gUHJvY2Vzc0xpc3RDbG91ZFByZWZlcmVuY2VzLmNvbHVtbk9yZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uc1Zpc2liaWxpdHkgPSBwcmVmZXJlbmNlc0xpc3QuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgIChwcmVmZXJlbmNlKSA9PiBwcmVmZXJlbmNlLmVudHJ5LmtleSA9PT0gUHJvY2Vzc0xpc3RDbG91ZFByZWZlcmVuY2VzLmNvbHVtbnNWaXNpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbnNXaWR0aHMgPSBwcmVmZXJlbmNlc0xpc3QuZmluZCgocHJlZmVyZW5jZSkgPT4gcHJlZmVyZW5jZS5lbnRyeS5rZXkgPT09IFByb2Nlc3NMaXN0Q2xvdWRQcmVmZXJlbmNlcy5jb2x1bW5zV2lkdGhzKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uc09yZGVyOiBjb2x1bW5zT3JkZXIgPyBKU09OLnBhcnNlKGNvbHVtbnNPcmRlci5lbnRyeS52YWx1ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zVmlzaWJpbGl0eTogY29sdW1uc1Zpc2liaWxpdHkgPyBKU09OLnBhcnNlKGNvbHVtbnNWaXNpYmlsaXR5LmVudHJ5LnZhbHVlKSA6IHRoaXMuY29sdW1uc1Zpc2liaWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zV2lkdGhzOiBjb2x1bW5zV2lkdGhzID8gSlNPTi5wYXJzZShjb2x1bW5zV2lkdGhzLmVudHJ5LnZhbHVlKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zT3JkZXI6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zVmlzaWJpbGl0eTogdGhpcy5jb2x1bW5zVmlzaWJpbGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zV2lkdGhzOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgY29sdW1uc09yZGVyLCBjb2x1bW5zVmlzaWJpbGl0eSwgY29sdW1uc1dpZHRocyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbnNWaXNpYmlsaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc1Zpc2liaWxpdHkgPSBjb2x1bW5zVmlzaWJpbGl0eTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uc09yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc09yZGVyID0gY29sdW1uc09yZGVyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW5zV2lkdGhzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc1dpZHRocyA9IGNvbHVtbnNXaWR0aHM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVEYXRhdGFibGVTY2hlbWEoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUHJvcGVydHlDaGFuZ2VkKGNoYW5nZXMsICdzb3J0aW5nJykpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0U29ydGluZyhjaGFuZ2VzWydzb3J0aW5nJ10uY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQW55UHJvcGVydHlDaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbnN0YW5jZUlkO1xuICAgIH1cblxuICAgIHJlbG9hZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwTmFtZSB8fCB0aGlzLmFwcE5hbWUgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoUHJvY2Vzc2VzVHJpZ2dlciQubmV4dCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3dzID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQW55UHJvcGVydHlDaGFuZ2VkKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Byb3BlcnR5Q2hhbmdlZChjaGFuZ2VzLCBwcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Byb3BlcnR5Q2hhbmdlZChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzLCBwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgcHJvcGVydHkpO1xuICAgIH1cblxuICAgIGlzTGlzdEVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMucm93cyB8fCB0aGlzLnJvd3MubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0cyB0aGUgcGFnaW5hdGlvbiB2YWx1ZXNcbiAgICAgKi9cbiAgICByZXNldFBhZ2luYXRpb24oKSB7XG4gICAgICAgIHRoaXMuc2tpcENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5zaXplID0gdGhpcy51c2VyUHJlZmVyZW5jZXMucGFnaW5hdGlvblNpemU7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5uZXh0KHtcbiAgICAgICAgICAgIHNraXBDb3VudDogMCxcbiAgICAgICAgICAgIG1heEl0ZW1zOiB0aGlzLnNpemVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzZXRzIHRoZSBwYWdpbmF0aW9uIHZhbHVlcyBhbmRcbiAgICAgKiBSZWxvYWRzIHRoZSBwcm9jZXNzIGxpc3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYWdpbmF0aW9uIFBhZ2luYXRpb24gdmFsdWVzIHRvIGJlIHNldFxuICAgICAqL1xuICAgIHVwZGF0ZVBhZ2luYXRpb24ocGFnaW5hdGlvbjogUGFnaW5hdGlvbk1vZGVsKSB7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHBhZ2luYXRpb24ubWF4SXRlbXM7XG4gICAgICAgIHRoaXMuc2tpcENvdW50ID0gcGFnaW5hdGlvbi5za2lwQ291bnQ7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbi5uZXh0KHBhZ2luYXRpb24pO1xuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgIH1cblxuICAgIG9uU29ydGluZ0NoYW5nZWQoZXZlbnQ6IEN1c3RvbUV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0U29ydGluZyhldmVudC5kZXRhaWwpO1xuICAgICAgICB0aGlzLmZvcm1hdFNvcnRpbmcodGhpcy5zb3J0aW5nKTtcbiAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG5cbiAgICBvbkNvbHVtbk9yZGVyQ2hhbmdlZChjb2x1bW5zV2l0aE5ld09yZGVyOiBEYXRhQ29sdW1uW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb2x1bW5zT3JkZXIgPSBjb2x1bW5zV2l0aE5ld09yZGVyLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4uaWQpO1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbHVtbnMoKTtcblxuICAgICAgICBpZiAodGhpcy5hcHBOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3VkUHJlZmVyZW5jZVNlcnZpY2UudXBkYXRlUHJlZmVyZW5jZSh0aGlzLmFwcE5hbWUsIFByb2Nlc3NMaXN0Q2xvdWRQcmVmZXJlbmNlcy5jb2x1bW5PcmRlciwgdGhpcy5jb2x1bW5zT3JkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Db2x1bW5zVmlzaWJpbGl0eUNoYW5nZShjb2x1bW5zOiBEYXRhQ29sdW1uW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb2x1bW5zVmlzaWJpbGl0eSA9IGNvbHVtbnMucmVkdWNlKCh2aXNpYmxlQ29sdW1uc01hcCwgY29sdW1uKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmlzSGlkZGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlQ29sdW1uc01hcFtjb2x1bW4uaWRdID0gIWNvbHVtbi5pc0hpZGRlbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZpc2libGVDb2x1bW5zTWFwO1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgICAgdGhpcy5jcmVhdGVDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlRGF0YXRhYmxlU2NoZW1hKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXBwTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5jbG91ZFByZWZlcmVuY2VTZXJ2aWNlLnVwZGF0ZVByZWZlcmVuY2UodGhpcy5hcHBOYW1lLCBQcm9jZXNzTGlzdENsb3VkUHJlZmVyZW5jZXMuY29sdW1uc1Zpc2liaWxpdHksIHRoaXMuY29sdW1uc1Zpc2liaWxpdHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Db2x1bW5zV2lkdGhDaGFuZ2VkKGNvbHVtbnM6IERhdGFDb2x1bW5bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdDb2x1bW5zV2lkdGhzID0gY29sdW1ucy5yZWR1Y2UoKHdpZHRoc0NvbHVtbnNNYXAsIGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbHVtbi53aWR0aCkge1xuICAgICAgICAgICAgICAgIHdpZHRoc0NvbHVtbnNNYXBbY29sdW1uLmlkXSA9IE1hdGguY2VpbChjb2x1bW4ud2lkdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdpZHRoc0NvbHVtbnNNYXA7XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICB0aGlzLmNvbHVtbnNXaWR0aHMgPSB7IC4uLnRoaXMuY29sdW1uc1dpZHRocywgLi4ubmV3Q29sdW1uc1dpZHRocyB9O1xuXG4gICAgICAgIHRoaXMuY3JlYXRlQ29sdW1ucygpO1xuXG4gICAgICAgIGlmICh0aGlzLmFwcE5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvdWRQcmVmZXJlbmNlU2VydmljZS51cGRhdGVQcmVmZXJlbmNlKHRoaXMuYXBwTmFtZSwgUHJvY2Vzc0xpc3RDbG91ZFByZWZlcmVuY2VzLmNvbHVtbnNXaWR0aHMsIHRoaXMuY29sdW1uc1dpZHRocyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJvd0NsaWNrKGl0ZW06IERhdGFSb3dFdmVudCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRJbnN0YW5jZUlkID0gaXRlbS52YWx1ZS5nZXRWYWx1ZSgnaWQnKTtcbiAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHRoaXMuY3VycmVudEluc3RhbmNlSWQpO1xuICAgIH1cblxuICAgIG9uUm93U2VsZWN0KGV2ZW50OiBDdXN0b21FdmVudCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5zdGFuY2VzID0gWy4uLmV2ZW50LmRldGFpbC5zZWxlY3Rpb25dO1xuICAgICAgICB0aGlzLnJvd3NTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJbnN0YW5jZXMpO1xuICAgIH1cblxuICAgIG9uUm93VW5zZWxlY3QoZXZlbnQ6IEN1c3RvbUV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnN0YW5jZXMgPSBbLi4uZXZlbnQuZGV0YWlsLnNlbGVjdGlvbl07XG4gICAgICAgIHRoaXMucm93c1NlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZEluc3RhbmNlcyk7XG4gICAgfVxuXG4gICAgb25Sb3dLZXlVcChldmVudDogQ3VzdG9tRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmRldGFpbC5rZXlib2FyZEV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEluc3RhbmNlSWQgPSBldmVudC5kZXRhaWwucm93LmdldFZhbHVlKCdpZCcpO1xuICAgICAgICAgICAgdGhpcy5yb3dDbGljay5lbWl0KHRoaXMuY3VycmVudEluc3RhbmNlSWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TaG93Um93QWN0aW9uc01lbnUoZXZlbnQ6IERhdGFDZWxsRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zaG93Um93QWN0aW9uc01lbnUuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25TaG93Um93Q29udGV4dE1lbnUoZXZlbnQ6IERhdGFDZWxsRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zaG93Um93Q29udGV4dE1lbnUuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25FeGVjdXRlUm93QWN0aW9uKHJvdzogRGF0YVJvd0FjdGlvbkV2ZW50KSB7XG4gICAgICAgIHRoaXMuZXhlY3V0ZVJvd0FjdGlvbi5lbWl0KHJvdyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVQcm9jZXNzTGlzdFJlcXVlc3ROb2RlKCk6IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdE5vZGU6IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsID0ge1xuICAgICAgICAgICAgYXBwTmFtZTogdGhpcy5hcHBOYW1lLFxuICAgICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgICAgIG1heEl0ZW1zOiB0aGlzLnNpemUsXG4gICAgICAgICAgICAgICAgc2tpcENvdW50OiB0aGlzLnNraXBDb3VudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNvcnRpbmc6IHRoaXMuZ2V0UHJvY2Vzc0xpc3RSZXF1ZXN0U29ydGluZygpLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lcyxcbiAgICAgICAgICAgIGlkOiB0aGlzLmlkcyxcbiAgICAgICAgICAgIHBhcmVudElkOiB0aGlzLnBhcmVudElkcyxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbk5hbWVzLFxuICAgICAgICAgICAgaW5pdGlhdG9yOiB0aGlzLmluaXRpYXRvcnMsXG4gICAgICAgICAgICBhcHBWZXJzaW9uOiB0aGlzLmFwcFZlcnNpb25zLFxuICAgICAgICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1c2VzLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkRnJvbTogdGhpcy5sYXN0TW9kaWZpZWRGcm9tPy50b0lTT1N0cmluZygpIHx8ICcnLFxuICAgICAgICAgICAgbGFzTW9kaWZpZWRUbzogdGhpcy5sYXN0TW9kaWZpZWRUbz8udG9JU09TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgICAgIHN0YXJ0RnJvbTogdGhpcy5zdGFydEZyb20sXG4gICAgICAgICAgICBzdGFydFRvOiB0aGlzLnN0YXJ0VG8sXG4gICAgICAgICAgICBjb21wbGV0ZWRGcm9tOiB0aGlzLmNvbXBsZXRlZEZyb20sXG4gICAgICAgICAgICBjb21wbGV0ZWRUbzogdGhpcy5jb21wbGV0ZWRUbyxcbiAgICAgICAgICAgIHN1c3BlbmRlZEZyb206IHRoaXMuc3VzcGVuZGVkRnJvbSxcbiAgICAgICAgICAgIHN1c3BlbmRlZFRvOiB0aGlzLnN1c3BlbmRlZFRvLFxuICAgICAgICAgICAgcHJvY2Vzc1ZhcmlhYmxlS2V5czogdGhpcy5nZXRWYXJpYWJsZURlZmluaXRpb25zUmVxdWVzdE1vZGVsKCksXG4gICAgICAgICAgICBwcm9jZXNzVmFyaWFibGVGaWx0ZXJzOiB0aGlzLnByb2Nlc3NWYXJpYWJsZXNcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsKHJlcXVlc3ROb2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb2Nlc3NMaXN0UmVxdWVzdFNvcnRpbmcoKTogUHJvY2Vzc0xpc3RSZXF1ZXN0U29ydGluZ01vZGVsIHtcbiAgICAgICAgaWYgKCF0aGlzLnNvcnRpbmc/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9jZXNzTGlzdFJlcXVlc3RTb3J0aW5nTW9kZWwoe1xuICAgICAgICAgICAgICAgIG9yZGVyQnk6IHRoaXMuZGVmYXVsdFNvcnRpbmcua2V5LFxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5kZWZhdWx0U29ydGluZy5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgaXNGaWVsZFByb2Nlc3NWYXJpYWJsZTogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JkZXJCeSA9IHRoaXMuc29ydGluZ1swXT8ub3JkZXJCeTtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gdGhpcy5zb3J0aW5nWzBdPy5kaXJlY3Rpb247XG4gICAgICAgIGNvbnN0IG9yZGVyQnlDb2x1bW4gPSB0aGlzLmNvbHVtbkxpc3Q/LmNvbHVtbnMuZmluZCgoY29sdW1uKSA9PiBjb2x1bW4ua2V5ID09PSBvcmRlckJ5KTtcbiAgICAgICAgY29uc3QgaXNGaWVsZFByb2Nlc3NWYXJpYWJsZSA9IG9yZGVyQnlDb2x1bW4/LmN1c3RvbURhdGE/LmNvbHVtblR5cGUgPT09ICdwcm9jZXNzLXZhcmlhYmxlLWNvbHVtbic7XG5cbiAgICAgICAgaWYgKGlzRmllbGRQcm9jZXNzVmFyaWFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NEZWZpbml0aW9uS2V5ID0gb3JkZXJCeUNvbHVtbi5jdXN0b21EYXRhLnZhcmlhYmxlRGVmaW5pdGlvbnNQYXlsb2FkWzBdLnNwbGl0KCcvJylbMF07XG4gICAgICAgICAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSBvcmRlckJ5Q29sdW1uLmN1c3RvbURhdGEudmFyaWFibGVEZWZpbml0aW9uc1BheWxvYWRbMF0uc3BsaXQoJy8nKVsxXTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvY2Vzc0xpc3RSZXF1ZXN0U29ydGluZ01vZGVsKHtcbiAgICAgICAgICAgICAgICBvcmRlckJ5OiB2YXJpYWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgIGlzRmllbGRQcm9jZXNzVmFyaWFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgcHJvY2Vzc1ZhcmlhYmxlRGF0YToge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbktleSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogb3JkZXJCeUNvbHVtbi5jdXN0b21EYXRhLnZhcmlhYmxlVHlwZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9jZXNzTGlzdFJlcXVlc3RTb3J0aW5nTW9kZWwoeyBvcmRlckJ5LCBkaXJlY3Rpb24sIGlzRmllbGRQcm9jZXNzVmFyaWFibGU6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVSZXF1ZXN0Tm9kZSgpOiBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3ROb2RlID0ge1xuICAgICAgICAgICAgYXBwTmFtZTogdGhpcy5hcHBOYW1lLFxuICAgICAgICAgICAgYXBwVmVyc2lvbjogdGhpcy5nZXRBcHBWZXJzaW9ucygpLFxuICAgICAgICAgICAgbWF4SXRlbXM6IHRoaXMuc2l6ZSxcbiAgICAgICAgICAgIHNraXBDb3VudDogdGhpcy5za2lwQ291bnQsXG4gICAgICAgICAgICBpbml0aWF0b3I6IHRoaXMuaW5pdGlhdG9yLFxuICAgICAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgICAgICBlbnZpcm9ubWVudElkOiB0aGlzLmVudmlyb25tZW50SWQsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICBwYXJlbnRJZDogdGhpcy5wYXJlbnRJZCxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uSWQ6IHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSxcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICAgICAgICBidXNpbmVzc0tleTogdGhpcy5idXNpbmVzc0tleSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZEZyb206IHRoaXMubGFzdE1vZGlmaWVkRnJvbSxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZFRvOiB0aGlzLmxhc3RNb2RpZmllZFRvLFxuICAgICAgICAgICAgc3RhcnRGcm9tOiB0aGlzLnN0YXJ0RnJvbSxcbiAgICAgICAgICAgIHN0YXJ0VG86IHRoaXMuc3RhcnRUbyxcbiAgICAgICAgICAgIGNvbXBsZXRlZEZyb206IHRoaXMuY29tcGxldGVkRnJvbSxcbiAgICAgICAgICAgIGNvbXBsZXRlZFRvOiB0aGlzLmNvbXBsZXRlZFRvLFxuICAgICAgICAgICAgc3VzcGVuZGVkRnJvbTogdGhpcy5zdXNwZW5kZWRGcm9tLFxuICAgICAgICAgICAgc3VzcGVuZGVkVG86IHRoaXMuc3VzcGVuZGVkVG8sXG4gICAgICAgICAgICBjb21wbGV0ZWREYXRlOiB0aGlzLmNvbXBsZXRlZERhdGUsXG4gICAgICAgICAgICBzb3J0aW5nOiB0aGlzLnNvcnRpbmcsXG4gICAgICAgICAgICB2YXJpYWJsZUtleXM6IHRoaXMuZ2V0VmFyaWFibGVEZWZpbml0aW9uc1JlcXVlc3RNb2RlbCgpXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbChyZXF1ZXN0Tm9kZSk7XG4gICAgfVxuXG4gICAgZ2V0QXBwVmVyc2lvbnMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwVmVyc2lvbiBpbnN0YW5jZW9mIEFycmF5ID8gdGhpcy5hcHBWZXJzaW9uLmpvaW4oJywnKSA6IHRoaXMuYXBwVmVyc2lvbiA/IFN0cmluZyh0aGlzLmFwcFZlcnNpb24pIDogJyc7XG4gICAgfVxuXG4gICAgc2V0U29ydGluZyhzb3J0RGV0YWlsKSB7XG4gICAgICAgIGNvbnN0IHNvcnRpbmcgPSBzb3J0RGV0YWlsXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIG9yZGVyQnk6IHNvcnREZXRhaWwua2V5LFxuICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBzb3J0RGV0YWlsLmRpcmVjdGlvbi50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogeyAuLi50aGlzLmRlZmF1bHRTb3J0aW5nIH07XG4gICAgICAgIHRoaXMuc29ydGluZyA9IFtuZXcgUHJvY2Vzc0xpc3RDbG91ZFNvcnRpbmdNb2RlbChzb3J0aW5nKV07XG4gICAgfVxuXG4gICAgZm9ybWF0U29ydGluZyhzb3J0aW5nOiBQcm9jZXNzTGlzdENsb3VkU29ydGluZ01vZGVsW10pIHtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRTb3J0aW5nID0gdGhpcy5pc1ZhbGlkU29ydGluZyhzb3J0aW5nKSA/IFtzb3J0aW5nWzBdLm9yZGVyQnksIHNvcnRpbmdbMF0uZGlyZWN0aW9uLnRvTG9jYWxlTG93ZXJDYXNlKCldIDogbnVsbDtcbiAgICB9XG5cbiAgICBpc1ZhbGlkU29ydGluZyhzb3J0aW5nOiBQcm9jZXNzTGlzdENsb3VkU29ydGluZ01vZGVsW10pIHtcbiAgICAgICAgcmV0dXJuIHNvcnRpbmcubGVuZ3RoICYmIHNvcnRpbmdbMF0ub3JkZXJCeSAmJiBzb3J0aW5nWzBdLmRpcmVjdGlvbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhcmlhYmxlRGVmaW5pdGlvbnNSZXF1ZXN0TW9kZWwoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBkaXNwbGF5ZWRWYXJpYWJsZUNvbHVtbnMgPSB0aGlzLmNvbHVtbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbHVtbikgPT4gY29sdW1uLmN1c3RvbURhdGE/LmNvbHVtblR5cGUgPT09IFBST0NFU1NfTElTVF9DVVNUT01fVkFSSUFCTEVfQ09MVU1OICYmIGNvbHVtbi5pc0hpZGRlbiAhPT0gdHJ1ZSlcbiAgICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlRGVmaW5pdGlvbnNQYXlsb2FkID0gY29sdW1uLmN1c3RvbURhdGEudmFyaWFibGVEZWZpbml0aW9uc1BheWxvYWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhcmlhYmxlRGVmaW5pdGlvbnNQYXlsb2FkO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZWR1Y2UoKHZhcmlhYmxlc1BheWxvYWQsIHBheWxvYWQpID0+IFsuLi52YXJpYWJsZXNQYXlsb2FkLCAuLi5wYXlsb2FkXSwgW10pO1xuXG4gICAgICAgIHJldHVybiBkaXNwbGF5ZWRWYXJpYWJsZUNvbHVtbnMubGVuZ3RoID8gZGlzcGxheWVkVmFyaWFibGVDb2x1bW5zIDogdW5kZWZpbmVkO1xuICAgIH1cbn1cbiIsIjxhZGYtZGF0YXRhYmxlXG4gICAgICAgIFtyb3dzXT1cInJvd3NcIlxuICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgICAgW2RhdGFdPVwiZGF0YUFkYXB0ZXJcIlxuICAgICAgICBbc3RpY2t5SGVhZGVyXT1cInN0aWNreUhlYWRlclwiXG4gICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgICAgIFtzb3J0aW5nXT1cImZvcm1hdHRlZFNvcnRpbmdcIlxuICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCJcbiAgICAgICAgW211bHRpc2VsZWN0XT1cIm11bHRpc2VsZWN0XCJcbiAgICAgICAgW2FjdGlvbnNdPVwic2hvd0FjdGlvbnNcIlxuICAgICAgICBbYWN0aW9uc1Bvc2l0aW9uXT1cImFjdGlvbnNQb3NpdGlvblwiXG4gICAgICAgIFtjb250ZXh0TWVudV09XCJzaG93Q29udGV4dE1lbnVcIlxuICAgICAgICBbc2hvd01haW5EYXRhdGFibGVBY3Rpb25zXT1cInNob3dNYWluRGF0YXRhYmxlQWN0aW9uc1wiXG4gICAgICAgIFtzaG93UHJvdmlkZWRBY3Rpb25zXT1cInNob3dQcm92aWRlZEFjdGlvbnNcIlxuICAgICAgICBbaXNSZXNpemluZ0VuYWJsZWRdPVwiaXNSZXNpemluZ0VuYWJsZWRcIlxuICAgICAgICAoc2hvd1Jvd0FjdGlvbnNNZW51KT1cIm9uU2hvd1Jvd0FjdGlvbnNNZW51KCRldmVudClcIlxuICAgICAgICAoc2hvd1Jvd0NvbnRleHRNZW51KT1cIm9uU2hvd1Jvd0NvbnRleHRNZW51KCRldmVudClcIlxuICAgICAgICAoZXhlY3V0ZVJvd0FjdGlvbik9XCJvbkV4ZWN1dGVSb3dBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAocm93LXNlbGVjdCk9XCJvblJvd1NlbGVjdCgkYW55KCRldmVudCkpXCJcbiAgICAgICAgKHJvdy11bnNlbGVjdCk9XCJvblJvd1Vuc2VsZWN0KCRhbnkoJGV2ZW50KSlcIlxuICAgICAgICAocm93LWtleXVwKT1cIm9uUm93S2V5VXAoJGFueSgkZXZlbnQpKVwiXG4gICAgICAgIChzb3J0aW5nLWNoYW5nZWQpPVwib25Tb3J0aW5nQ2hhbmdlZCgkYW55KCRldmVudCkpXCJcbiAgICAgICAgKGNvbHVtbk9yZGVyQ2hhbmdlZCk9XCJvbkNvbHVtbk9yZGVyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKGNvbHVtbnNXaWR0aENoYW5nZWQpPVwib25Db2x1bW5zV2lkdGhDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDxhZGYtbG9hZGluZy1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjdXN0b21Mb2FkaW5nQ29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWNsb3VkLXByb2Nlc3MtbGlzdC1sb2FkaW5nLW1hcmdpblwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCInaW5kZXRlcm1pbmF0ZSdcIiAvPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi1jdXN0b20tbG9hZGluZy1jb250ZW50LXRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYWRmLWxvYWRpbmctY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgPGFkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudCAqbmdJZj1cIiFlbXB0eUN1c3RvbUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiYXNzZXNzbWVudFwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQURGX0NMT1VEX1BST0NFU1NfTElTVC5NRVNTQUdFUy5USVRMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbc3VidGl0bGVdPVwiJ0FERl9DTE9VRF9QUk9DRVNTX0xJU1QuTUVTU0FHRVMuU1VCVElUTEUnfCB0cmFuc2xhdGVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi1jdXN0b20tZW1wdHktY29udGVudC10ZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2FkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuXG4gICAgICAgIDxhZGYtbWFpbi1tZW51LWRhdGF0YWJsZS10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtbWFpbk1lbnVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxhZGYtZGF0YXRhYmxlLWNvbHVtbi1zZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgW21haW5NZW51VHJpZ2dlcl09XCJtYWluTWVudVRyaWdnZXJcIlxuICAgICAgICAgICAgICAgICAgICAoc3VibWl0Q29sdW1uc1Zpc2liaWxpdHkpPVwib25Db2x1bW5zVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYWRmLW1haW4tbWVudS1kYXRhdGFibGUtdGVtcGxhdGU+XG48L2FkZi1kYXRhdGFibGU+XG4iXX0=
@@ -20,16 +20,16 @@ import { LocalPreferenceCloudService } from '../../services/local-preference-clo
20
20
  import { PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN } from '../../services/cloud-token.service';
21
21
  import * as i0 from "@angular/core";
22
22
  export class ProcessListCloudModule {
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessListCloudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
24
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ProcessListCloudModule, imports: [ProcessListCloudComponent], exports: [ProcessListCloudComponent] }); }
25
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessListCloudModule, providers: [
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ProcessListCloudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
24
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.3", ngImport: i0, type: ProcessListCloudModule, imports: [ProcessListCloudComponent], exports: [ProcessListCloudComponent] }); }
25
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ProcessListCloudModule, providers: [
26
26
  {
27
27
  provide: PROCESS_LISTS_PREFERENCES_SERVICE_TOKEN,
28
28
  useClass: LocalPreferenceCloudService
29
29
  }
30
30
  ], imports: [ProcessListCloudComponent] }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessListCloudModule, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ProcessListCloudModule, decorators: [{
33
33
  type: NgModule,
34
34
  args: [{
35
35
  imports: [ProcessListCloudComponent],
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
42
42
  exports: [ProcessListCloudComponent]
43
43
  }]
44
44
  }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saXN0LWNsb3VkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWxpc3QvcHJvY2Vzcy1saXN0LWNsb3VkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVk3RixNQUFNLE9BQU8sc0JBQXNCOytHQUF0QixzQkFBc0I7Z0hBQXRCLHNCQUFzQixZQVRyQix5QkFBeUIsYUFPekIseUJBQXlCO2dIQUUxQixzQkFBc0IsYUFScEI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsdUNBQXVDO2dCQUNoRCxRQUFRLEVBQUUsMkJBQTJCO2FBQ3hDO1NBQ0osWUFOUyx5QkFBeUI7OzRGQVMxQixzQkFBc0I7a0JBVmxDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3BDLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsdUNBQXVDOzRCQUNoRCxRQUFRLEVBQUUsMkJBQTJCO3lCQUN4QztxQkFDSjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztpQkFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9jZXNzTGlzdENsb3VkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Byb2Nlc3MtbGlzdC1jbG91ZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9jYWxQcmVmZXJlbmNlQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtcHJlZmVyZW5jZS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFBST0NFU1NfTElTVFNfUFJFRkVSRU5DRVNfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Nsb3VkLXRva2VuLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtQcm9jZXNzTGlzdENsb3VkQ29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogUFJPQ0VTU19MSVNUU19QUkVGRVJFTkNFU19TRVJWSUNFX1RPS0VOLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IExvY2FsUHJlZmVyZW5jZUNsb3VkU2VydmljZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBleHBvcnRzOiBbUHJvY2Vzc0xpc3RDbG91ZENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0xpc3RDbG91ZE1vZHVsZSB7fVxuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saXN0LWNsb3VkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWxpc3QvcHJvY2Vzcy1saXN0LWNsb3VkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVk3RixNQUFNLE9BQU8sc0JBQXNCOzhHQUF0QixzQkFBc0I7K0dBQXRCLHNCQUFzQixZQVRyQix5QkFBeUIsYUFPekIseUJBQXlCOytHQUUxQixzQkFBc0IsYUFScEI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsdUNBQXVDO2dCQUNoRCxRQUFRLEVBQUUsMkJBQTJCO2FBQ3hDO1NBQ0osWUFOUyx5QkFBeUI7OzJGQVMxQixzQkFBc0I7a0JBVmxDLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3BDLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsdUNBQXVDOzRCQUNoRCxRQUFRLEVBQUUsMkJBQTJCO3lCQUN4QztxQkFDSjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztpQkFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9jZXNzTGlzdENsb3VkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Byb2Nlc3MtbGlzdC1jbG91ZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9jYWxQcmVmZXJlbmNlQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYWwtcHJlZmVyZW5jZS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFBST0NFU1NfTElTVFNfUFJFRkVSRU5DRVNfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Nsb3VkLXRva2VuLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtQcm9jZXNzTGlzdENsb3VkQ29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogUFJPQ0VTU19MSVNUU19QUkVGRVJFTkNFU19TRVJWSUNFX1RPS0VOLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IExvY2FsUHJlZmVyZW5jZUNsb3VkU2VydmljZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBleHBvcnRzOiBbUHJvY2Vzc0xpc3RDbG91ZENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0xpc3RDbG91ZE1vZHVsZSB7fVxuIl19
@@ -243,11 +243,11 @@ export class ProcessListCloudService extends BaseCloudService {
243
243
  }
244
244
  return encodeURI(finalSorting);
245
245
  }
246
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessListCloudService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
247
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessListCloudService, providedIn: 'root' }); }
246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ProcessListCloudService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
247
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ProcessListCloudService, providedIn: 'root' }); }
248
248
  }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessListCloudService, decorators: [{
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: ProcessListCloudService, decorators: [{
250
250
  type: Injectable,
251
251
  args: [{ providedIn: 'root' }]
252
252
  }] });
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saXN0LWNsb3VkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL3Byb2Nlc3MvcHJvY2Vzcy1saXN0L3NlcnZpY2VzL3Byb2Nlc3MtbGlzdC1jbG91ZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBR3JDLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBZ0I7SUFDakQsVUFBVSxDQUNkLFFBQWlFLEVBQ2pFLGVBQXVCLEVBQ3ZCLFdBQTBDLEVBQzFDLFFBQWlCO1FBRWpCLElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3BELFFBQVEsR0FBRyxRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNyRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsRSxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDO1lBQ3hDLENBQUM7WUFFRCxPQUFPLFFBQVEsQ0FBQyxRQUFRLEVB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QUUsQ0FBQztvQkFDaEIsWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3ZELENBQUM7cUJBQU0sQ0FBQztvQkFDSixZQUFZLEdBQUcsR0FBRyxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3ZFLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25DLENBQUM7K0dBMVFRLHVCQUF1QjttSEFBdkIsdUJBQXVCLGNBRFYsTUFBTTs7NEZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsLCBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9wcm9jZXNzLWNsb3VkLXF1ZXJ5LXJlcXVlc3QubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvY2Vzc0xpc3RDbG91ZFNvcnRpbmdNb2RlbCB9IGZyb20gJy4uL21vZGVscy9wcm9jZXNzLWxpc3Qtc29ydGluZy5tb2RlbCc7XG5pbXBvcnQgeyBCYXNlQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzTGlzdENsb3VkU2VydmljZSBleHRlbmRzIEJhc2VDbG91ZFNlcnZpY2Uge1xuICAgIHByaXZhdGUgZ2V0UHJvY2VzcyhcbiAgICAgICAgY2FsbGJhY2s6IChxdWVyeVVybDogc3RyaW5nLCBxdWVyeVBhcmFtczogYW55KSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gICAgICAgIGRlZmF1bHRRdWVyeVVybDogc3RyaW5nLFxuICAgICAgICByZXF1ZXN0Tm9kZTogUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwsXG4gICAgICAgIHF1ZXJ5VXJsPzogc3RyaW5nXG4gICAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKHJlcXVlc3ROb2RlLmFwcE5hbWUgfHwgcmVxdWVzdE5vZGUuYXBwTmFtZSA9PT0gJycpIHtcbiAgICAgICAgICAgIHF1ZXJ5VXJsID0gcXVlcnlVcmwgfHwgYCR7dGhpcy5nZXRCYXNlUGF0aChyZXF1ZXN0Tm9kZS5hcHBOYW1lKX0vJHtkZWZhdWx0UXVlcnlVcmx9YDtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5idWlsZFF1ZXJ5UGFyYW1zKHJlcXVlc3ROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHNvcnRpbmdQYXJhbXMgPSB0aGlzLmJ1aWxkU29ydGluZ1BhcmFtKHJlcXVlc3ROb2RlLnNvcnRpbmcpO1xuICAgICAgICAgICAgaWYgKHNvcnRpbmdQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc1snc29ydCddID0gc29ydGluZ1BhcmFtcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHF1ZXJ5VXJsLCBxdWVyeVBhcmFtcykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IHJlc3BvbnNlLmxpc3Q/LmVudHJpZXM7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjayBvZiB0aGUgbW9kZWwgYW5kIG5lZWRzIHRvIGJlIHJldmlzaXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubGlzdC5lbnRyaWVzID0gZW50cmllcy5tYXAoKGVudHJ5RGF0YSkgPT4gZW50cnlEYXRhLmVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignQXBwbmFtZSBub3QgY29uZmlndXJlZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYSBwcm9jZXNzIHVzaW5nIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHF1ZXJ5IHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBGcm9tIEFjdGl2aXRpIDguNy4wIGZvcndhcmQsIHVzZSBQcm9jZXNzTGlzdENsb3VkU2VydmljZS5mZXRjaFByb2Nlc3NMaXN0IGluc3RlYWQuXG4gICAgICogQHBhcmFtIHJlcXVlc3ROb2RlIFF1ZXJ5IG9iamVjdFxuICAgICAqIEBwYXJhbSBxdWVyeVVybCBRdWVyeSB1cmxcbiAgICAgKiBAcmV0dXJucyBQcm9jZXNzIGluZm9ybWF0aW9uXG4gICAgICovXG4gICAgZ2V0UHJvY2Vzc0J5UmVxdWVzdChyZXF1ZXN0Tm9kZTogUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwsIHF1ZXJ5VXJsPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAodXJsOiBzdHJpbmcsIHF1ZXJ5UGFyYW1zOiBhbnkpID0+IHRoaXMuZ2V0KHVybCwgcXVlcnlQYXJhbXMpO1xuICAgICAgICBjb25zdCBkZWZhdWx0UXVlcnlVcmwgPSAncXVlcnkvdjEvcHJvY2Vzcy1pbnN0YW5jZXMnO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFByb2Nlc3MoY2FsbGJhY2ssIGRlZmF1bHRRdWVyeVVybCwgcmVxdWVzdE5vZGUsIHF1ZXJ5VXJsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdmFpbGFibGUgZnJvbSBBY3Rpdml0aSB2ZXJzaW9uIDguNy4wIG9ud2FyZHMuXG4gICAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBwcm9jZXNzZXMgdXNpbmcgYW4gb2JqZWN0IHdpdGggb3B0aW9uYWwgcXVlcnkgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0Tm9kZSBRdWVyeSBvYmplY3RcbiAgICAgKiBAcGFyYW0gcXVlcnlVcmwgUXVlcnkgdXJsXG4gICAgICogQHJldHVybnMgTGlzdCBvZiBwcm9jZXNzZXNcbiAgICAgKi9cbiAgICBmZXRjaFByb2Nlc3NMaXN0KHJlcXVlc3ROb2RlOiBQcm9jZXNzTGlzdFJlcXVlc3RNb2RlbCwgcXVlcnlVcmw/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAoIXJlcXVlc3ROb2RlPy5hcHBOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0FwcG5hbWUgbm90IGNvbmZpZ3VyZWQnKSk7XG4gICAgICAgIH1cblxuICAgICAgICBxdWVyeVVybCA9IHF1ZXJ5VXJsIHx8IGAke3RoaXMuZ2V0QmFzZVBhdGgocmVxdWVzdE5vZGUuYXBwTmFtZSl9L3F1ZXJ5L3YxL3Byb2Nlc3MtaW5zdGFuY2VzL3NlYXJjaGA7XG5cbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7XG4gICAgICAgICAgICBtYXhJdGVtczogcmVxdWVzdE5vZGUucGFnaW5hdGlvbj8ubWF4SXRlbXMgfHwgMjUsXG4gICAgICAgICAgICBza2lwQ291bnQ6IHJlcXVlc3ROb2RlLnBhZ2luYXRpb24/LnNraXBDb3VudCB8fCAwXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcXVlcnlEYXRhID0gdGhpcy5idWlsZFF1ZXJ5RGF0YShyZXF1ZXN0Tm9kZSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc3Q8YW55LCBhbnk+KHF1ZXJ5VXJsLCBxdWVyeURhdGEsIHF1ZXJ5UGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IHJlc3BvbnNlLmxpc3Q/LmVudHJpZXM7XG4gICAgICAgICAgICAgICAgaWYgKGVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubGlzdC5lbnRyaWVzID0gZW50cmllcy5tYXAoKGVudHJ5RGF0YSkgPT4gZW50cnlEYXRhLmVudHJ5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYnVpbGRRdWVyeURhdGEocmVxdWVzdE5vZGU6IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5RGF0YTogYW55ID0ge1xuICAgICAgICAgICAgbmFtZTogcmVxdWVzdE5vZGUubmFtZSxcbiAgICAgICAgICAgIGlkOiByZXF1ZXN0Tm9kZS5pZCxcbiAgICAgICAgICAgIHBhcmVudElkOiByZXF1ZXN0Tm9kZS5wYXJlbnRJZCxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogcmVxdWVzdE5vZGUucHJvY2Vzc0RlZmluaXRpb25OYW1lLFxuICAgICAgICAgICAgaW5pdGlhdG9yOiByZXF1ZXN0Tm9kZS5pbml0aWF0b3IsXG4gICAgICAgICAgICBhcHBWZXJzaW9uOiByZXF1ZXN0Tm9kZS5hcHBWZXJzaW9uLFxuICAgICAgICAgICAgc3RhdHVzOiByZXF1ZXN0Tm9kZS5zdGF0dXMsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWRGcm9tOiByZXF1ZXN0Tm9kZS5sYXN0TW9kaWZpZWRGcm9tLFxuICAgICAgICAgICAgbGFzTW9kaWZpZWRUbzogcmVxdWVzdE5vZGUubGFzTW9kaWZpZWRUbyxcbiAgICAgICAgICAgIHN0YXJ0RnJvbTogcmVxdWVzdE5vZGUuc3RhcnRGcm9tLFxuICAgICAgICAgICAgc3RhcnRUbzogcmVxdWVzdE5vZGUuc3RhcnRUbyxcbiAgICAgICAgICAgIGNvbXBsZXRlZEZyb206IHJlcXVlc3ROb2RlLmNvbXBsZXRlZEZyb20sXG4gICAgICAgICAgICBjb21wbGV0ZWRUbzogcmVxdWVzdE5vZGUuY29tcGxldGVkVG8sXG4gICAgICAgICAgICBzdXNwZW5kZWRGcm9tOiByZXF1ZXN0Tm9kZS5zdXNwZW5kZWRGcm9tLFxuICAgICAgICAgICAgc3VzcGVuZGVkVG86IHJlcXVlc3ROb2RlLnN1c3BlbmRlZFRvLFxuICAgICAgICAgICAgcHJvY2Vzc1ZhcmlhYmxlS2V5czogcmVxdWVzdE5vZGUucHJvY2Vzc1ZhcmlhYmxlS2V5cyxcbiAgICAgICAgICAgIHByb2Nlc3NWYXJpYWJsZUZpbHRlcnM6IHJlcXVlc3ROb2RlLnByb2Nlc3NWYXJpYWJsZUZpbHRlcnNcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAocmVxdWVzdE5vZGUuc29ydGluZykge1xuICAgICAgICAgICAgcXVlcnlEYXRhWydzb3J0J10gPSB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IHJlcXVlc3ROb2RlLnNvcnRpbmcub3JkZXJCeSxcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IHJlcXVlc3ROb2RlLnNvcnRpbmcuZGlyZWN0aW9uLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgaXNQcm9jZXNzVmFyaWFibGU6IHJlcXVlc3ROb2RlLnNvcnRpbmcuaXNGaWVsZFByb2Nlc3NWYXJpYWJsZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChxdWVyeURhdGFbJ3NvcnQnXS5pc1Byb2Nlc3NWYXJpYWJsZSkge1xuICAgICAgICAgICAgICAgIHF1ZXJ5RGF0YVsnc29ydCddLnByb2Nlc3NEZWZpbml0aW9uS2V5ID0gcmVxdWVzdE5vZGUuc29ydGluZy5wcm9jZXNzVmFyaWFibGVEYXRhPy5wcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICAgICAgICAgICAgICBxdWVyeURhdGFbJ3NvcnQnXS50eXBlID0gcmVxdWVzdE5vZGUuc29ydGluZy5wcm9jZXNzVmFyaWFibGVEYXRhPy50eXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgICogUmVtb3ZlIHByb2Nlc3MgdmFyaWFibGUgZmlsdGVyIGtleXMgd2l0aCBlbXB0eSB2YWx1ZXMgZnJvbSB0aGUgcXVlcnkgZGF0YS5cbiAgICAgICAgICovXG4gICAgICAgIGlmIChxdWVyeURhdGFbJ3Byb2Nlc3NWYXJpYWJsZUZpbHRlcnMnXSkge1xuICAgICAgICAgICAgcXVlcnlEYXRhWydwcm9jZXNzVmFyaWFibGVGaWx0ZXJzJ10gPSBxdWVyeURhdGFbJ3Byb2Nlc3NWYXJpYWJsZUZpbHRlcnMnXS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGZpbHRlcikgPT4gZmlsdGVyLnZhbHVlICE9PSAnJyAmJiBmaWx0ZXIudmFsdWUgIT09IG51bGwgJiYgZmlsdGVyLnZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAgKiBSZW1vdmUga2V5cyB3aXRoIGVtcHR5IHZhbHVlcyBmcm9tIHRoZSBxdWVyeSBkYXRhLlxuICAgICAgICAgKi9cbiAgICAgICAgT2JqZWN0LmtleXMocXVlcnlEYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcXVlcnlEYXRhW2tleV07XG4gICAgICAgICAgICBjb25zdCBpc1ZhbHVlRW1wdHkgPSAhdmFsdWU7XG4gICAgICAgICAgICBjb25zdCBpc1ZhbHVlQXJyYXlXaXRoRW1wdHlWYWx1ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpICYmICh2YWx1ZS5sZW5ndGggPT09IDAgfHwgdmFsdWVbMF0gPT09IG51bGwpO1xuICAgICAgICAgICAgaWYgKGlzVmFsdWVFbXB0eSB8fCBpc1ZhbHVlQXJyYXlXaXRoRW1wdHlWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWVyeURhdGFba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHF1ZXJ5RGF0YTtcbiAgICB9XG5cbiAgICBnZXRQcm9jZXNzTGlzdENvdW50ZXIocmVxdWVzdE5vZGU6IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0Tm9kZS5hcHBOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0FwcG5hbWUgbm90IGNvbmZpZ3VyZWQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hQcm9jZXNzTGlzdChyZXF1ZXN0Tm9kZSkucGlwZShtYXAoKHByb2Nlc3NlcykgPT4gcHJvY2Vzc2VzLmxpc3QucGFnaW5hdGlvbi50b3RhbEl0ZW1zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYSBwcm9jZXNzIHVzaW5nIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHF1ZXJ5IHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXBwTmFtZSBhcHAgbmFtZVxuICAgICAqIEBwYXJhbSBzdGF0dXMgZmlsdGVyIHN0YXR1c1xuICAgICAqIEByZXR1cm5zIFRvdGFsIGl0ZW1zXG4gICAgICovXG4gICAgZ2V0UHJvY2Vzc0NvdW50ZXIoYXBwTmFtZTogc3RyaW5nLCBzdGF0dXM6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKHVybDogc3RyaW5nLCBxdWVyeVBhcmFtczogYW55KSA9PiB0aGlzLmdldCh1cmwsIHF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgbGV0IHF1ZXJ5VXJsOiBzdHJpbmc7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRRdWVyeVVybCA9ICdxdWVyeS92MS9wcm9jZXNzLWluc3RhbmNlcyc7XG4gICAgICAgIGNvbnN0IHJlcXVlc3ROb2RlOiBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbCA9IHtcbiAgICAgICAgICAgIGFwcE5hbWUsXG4gICAgICAgICAgICBhcHBWZXJzaW9uOiAnJyxcbiAgICAgICAgICAgIGluaXRpYXRvcjogbnVsbCxcbiAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbklkOiAnJyxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogbnVsbCxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uS2V5OiAnJyxcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIGJ1c2luZXNzS2V5OiAnJyxcbiAgICAgICAgICAgIHN0YXJ0RnJvbTogbnVsbCxcbiAgICAgICAgICAgIHN0YXJ0VG86IG51bGwsXG4gICAgICAgICAgICBjb21wbGV0ZWRGcm9tOiBudWxsLFxuICAgICAgICAgICAgY29tcGxldGVkVG86IG51bGwsXG4gICAgICAgICAgICBzdXNwZW5kZWRGcm9tOiBudWxsLFxuICAgICAgICAgICAgc3VzcGVuZGVkVG86IG51bGwsXG4gICAgICAgICAgICBjb21wbGV0ZWREYXRlOiAnJyxcbiAgICAgICAgICAgIG1heEl0ZW1zOiAxLFxuICAgICAgICAgICAgc2tpcENvdW50OiAwLFxuICAgICAgICAgICAgc29ydGluZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJCeTogJ3N0YXJ0RGF0ZScsXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ0RFU0MnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFByb2Nlc3MoY2FsbGJhY2ssIGRlZmF1bHRRdWVyeVVybCwgcmVxdWVzdE5vZGUsIHF1ZXJ5VXJsKS5waXBlKG1hcCgodGFza3MpID0+IHRhc2tzPy5saXN0Py5wYWdpbmF0aW9uPy50b3RhbEl0ZW1zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYSBwcm9jZXNzIHVzaW5nIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHF1ZXJ5IHByb3BlcnRpZXMgaW4gYWRtaW4gYXBwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3ROb2RlIFF1ZXJ5IG9iamVjdFxuICAgICAqIEBwYXJhbSBxdWVyeVVybCBRdWVyeSB1cmxcbiAgICAgKiBAcmV0dXJucyBQcm9jZXNzIGluZm9ybWF0aW9uXG4gICAgICovXG4gICAgZ2V0QWRtaW5Qcm9jZXNzQnlSZXF1ZXN0KHJlcXVlc3ROb2RlOiBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbCwgcXVlcnlVcmw/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBjb25zdCBjYWxsYmFjayA9ICh1cmw6IHN0cmluZywgcGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBvc3RCb2R5ID0ge1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlS2V5czogdGhpcy5nZXRWYXJpYWJsZUtleXNGcm9tUXVlcnlQYXJhbXMocGFyYW1zKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZGVsZXRlIHBhcmFtc1sndmFyaWFibGVLZXlzJ107XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3QodXJsLCBwb3N0Qm9keSwgcGFyYW1zKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkZWZhdWx0UXVlcnlVcmwgPSAncXVlcnkvYWRtaW4vdjEvcHJvY2Vzcy1pbnN0YW5jZXMnO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFByb2Nlc3MoY2FsbGJhY2ssIGRlZmF1bHRRdWVyeVVybCwgcmVxdWVzdE5vZGUsIHF1ZXJ5VXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhcmlhYmxlS2V5c0Zyb21RdWVyeVBhcmFtcyhxdWVyeVBhcmFtczogYW55KTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoIXF1ZXJ5UGFyYW1zWyd2YXJpYWJsZUtleXMnXSB8fCBxdWVyeVBhcmFtc1sndmFyaWFibGVLZXlzJ10ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBxdWVyeVBhcmFtc1sndmFyaWFibGVLZXlzJ10uc3BsaXQoJywnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNQcm9wZXJ0eVZhbHVlVmFsaWQocmVxdWVzdE5vZGU6IFByb2Nlc3NRdWVyeUNsb3VkUmVxdWVzdE1vZGVsLCBwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiByZXF1ZXN0Tm9kZVtwcm9wZXJ0eV0gIT09ICcnICYmIHJlcXVlc3ROb2RlW3Byb3BlcnR5XSAhPT0gbnVsbCAmJiByZXF1ZXN0Tm9kZVtwcm9wZXJ0eV0gIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYnVpbGRRdWVyeVBhcmFtcyhyZXF1ZXN0Tm9kZTogUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwpOiBhbnkge1xuICAgICAgICBjb25zdCBxdWVyeVBhcmFtID0ge307XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiByZXF1ZXN0Tm9kZSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXF1ZXN0Tm9kZSwgcHJvcGVydHkpICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuaXNFeGNsdWRlZEZpZWxkKHByb3BlcnR5KSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuaXNQcm9wZXJ0eVZhbHVlVmFsaWQocmVxdWVzdE5vZGUsIHByb3BlcnR5KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbVtwcm9wZXJ0eV0gPSB0aGlzLmdldFF1ZXJ5UGFyYW1WYWx1ZUZyb21SZXF1ZXN0Tm9kZShyZXF1ZXN0Tm9kZSwgcHJvcGVydHkgYXMga2V5b2YgUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFxdWVyeVBhcmFtWydzdGF0dXMnXSkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbVsnc3RhdHVzJ10gPSB0aGlzLmJ1aWxkRmlsdGVyRm9yQWxsU3RhdHVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcXVlcnlQYXJhbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFF1ZXJ5UGFyYW1WYWx1ZUZyb21SZXF1ZXN0Tm9kZShyZXF1ZXN0Tm9kZTogUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwsIHByb3BlcnR5OiBrZXlvZiBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbCkge1xuICAgICAgICBpZiAocHJvcGVydHkgPT09ICd2YXJpYWJsZUtleXMnICYmIHJlcXVlc3ROb2RlW3Byb3BlcnR5XT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGAke3JlcXVlc3ROb2RlW3Byb3BlcnR5XS5tYXAoKHZhcmlhYmxlSWQpID0+IHZhcmlhYmxlSWQpLmpvaW4oJywnKX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcXVlc3ROb2RlW3Byb3BlcnR5XTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYnVpbGRGaWx0ZXJGb3JBbGxTdGF0dXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gWydSVU5OSU5HJywgJ1NVU1BFTkRFRCcsICdDQU5DRUxMRUQnLCAnQ09NUExFVEVEJ107XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzRXhjbHVkZWRGaWVsZChwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eSA9PT0gJ2FwcE5hbWUnIHx8IHByb3BlcnR5ID09PSAnc29ydGluZyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGJ1aWxkU29ydGluZ1BhcmFtKG1vZGVsczogUHJvY2Vzc0xpc3RDbG91ZFNvcnRpbmdNb2RlbFtdKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGZpbmFsU29ydGluZzogc3RyaW5nID0gJyc7XG4gICAgICAgIGlmIChtb2RlbHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc29ydCBvZiBtb2RlbHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWZpbmFsU29ydGluZykge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbFNvcnRpbmcgPSBgJHtzb3J0Lm9yZGVyQnl9LCR7c29ydC5kaXJlY3Rpb259YDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbFNvcnRpbmcgPSBgJHtmaW5hbFNvcnRpbmd9JiR7c29ydC5vcmRlckJ5fSwke3NvcnQuZGlyZWN0aW9ufWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbmNvZGVVUkkoZmluYWxTb3J0aW5nKTtcbiAgICB9XG59XG4iXX0=
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1saXN0LWNsb3VkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL3Byb2Nlc3MvcHJvY2Vzcy1saXN0L3NlcnZpY2VzL3Byb2Nlc3MtbGlzdC1jbG91ZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBR3JDLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBZ0I7SUFDakQsVUFBVSxDQUNkLFFBQWlFLEVBQ2pFLGVBQXVCLEVBQ3ZCLFdBQTBDLEVBQzFDLFFBQWlCO1FBRWpCLElBQUksV0FBVyxDQUFDLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3BELFFBQVEsR0FBRyxRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNyRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsRSxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNoQixXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDO1lBQ3hDLENBQUM7WUFFRCxPQUFPLFFBQVEsQ0FBQyxRQUFRLEVB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QUUsQ0FBQztvQkFDaEIsWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3ZELENBQUM7cUJBQU0sQ0FBQztvQkFDSixZQUFZLEdBQUcsR0FBRyxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3ZFLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25DLENBQUM7OEdBMVFRLHVCQUF1QjtrSEFBdkIsdUJBQXVCLGNBRFYsTUFBTTs7MkZBQ25CLHVCQUF1QjtrQkFEbkMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsLCBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9wcm9jZXNzLWNsb3VkLXF1ZXJ5LXJlcXVlc3QubW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvY2Vzc0xpc3RDbG91ZFNvcnRpbmdNb2RlbCB9IGZyb20gJy4uL21vZGVscy9wcm9jZXNzLWxpc3Qtc29ydGluZy5tb2RlbCc7XG5pbXBvcnQgeyBCYXNlQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmFzZS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzTGlzdENsb3VkU2VydmljZSBleHRlbmRzIEJhc2VDbG91ZFNlcnZpY2Uge1xuICAgIHByaXZhdGUgZ2V0UHJvY2VzcyhcbiAgICAgICAgY2FsbGJhY2s6IChxdWVyeVVybDogc3RyaW5nLCBxdWVyeVBhcmFtczogYW55KSA9PiBPYnNlcnZhYmxlPGFueT4sXG4gICAgICAgIGRlZmF1bHRRdWVyeVVybDogc3RyaW5nLFxuICAgICAgICByZXF1ZXN0Tm9kZTogUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwsXG4gICAgICAgIHF1ZXJ5VXJsPzogc3RyaW5nXG4gICAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKHJlcXVlc3ROb2RlLmFwcE5hbWUgfHwgcmVxdWVzdE5vZGUuYXBwTmFtZSA9PT0gJycpIHtcbiAgICAgICAgICAgIHF1ZXJ5VXJsID0gcXVlcnlVcmwgfHwgYCR7dGhpcy5nZXRCYXNlUGF0aChyZXF1ZXN0Tm9kZS5hcHBOYW1lKX0vJHtkZWZhdWx0UXVlcnlVcmx9YDtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5idWlsZFF1ZXJ5UGFyYW1zKHJlcXVlc3ROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHNvcnRpbmdQYXJhbXMgPSB0aGlzLmJ1aWxkU29ydGluZ1BhcmFtKHJlcXVlc3ROb2RlLnNvcnRpbmcpO1xuICAgICAgICAgICAgaWYgKHNvcnRpbmdQYXJhbXMpIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc1snc29ydCddID0gc29ydGluZ1BhcmFtcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHF1ZXJ5VXJsLCBxdWVyeVBhcmFtcykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IHJlc3BvbnNlLmxpc3Q/LmVudHJpZXM7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbnRyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiB0aGlzIGlzIGEgaGFjayBvZiB0aGUgbW9kZWwgYW5kIG5lZWRzIHRvIGJlIHJldmlzaXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubGlzdC5lbnRyaWVzID0gZW50cmllcy5tYXAoKGVudHJ5RGF0YSkgPT4gZW50cnlEYXRhLmVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcignQXBwbmFtZSBub3QgY29uZmlndXJlZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYSBwcm9jZXNzIHVzaW5nIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHF1ZXJ5IHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBGcm9tIEFjdGl2aXRpIDguNy4wIGZvcndhcmQsIHVzZSBQcm9jZXNzTGlzdENsb3VkU2VydmljZS5mZXRjaFByb2Nlc3NMaXN0IGluc3RlYWQuXG4gICAgICogQHBhcmFtIHJlcXVlc3ROb2RlIFF1ZXJ5IG9iamVjdFxuICAgICAqIEBwYXJhbSBxdWVyeVVybCBRdWVyeSB1cmxcbiAgICAgKiBAcmV0dXJucyBQcm9jZXNzIGluZm9ybWF0aW9uXG4gICAgICovXG4gICAgZ2V0UHJvY2Vzc0J5UmVxdWVzdChyZXF1ZXN0Tm9kZTogUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwsIHF1ZXJ5VXJsPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAodXJsOiBzdHJpbmcsIHF1ZXJ5UGFyYW1zOiBhbnkpID0+IHRoaXMuZ2V0KHVybCwgcXVlcnlQYXJhbXMpO1xuICAgICAgICBjb25zdCBkZWZhdWx0UXVlcnlVcmwgPSAncXVlcnkvdjEvcHJvY2Vzcy1pbnN0YW5jZXMnO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFByb2Nlc3MoY2FsbGJhY2ssIGRlZmF1bHRRdWVyeVVybCwgcmVxdWVzdE5vZGUsIHF1ZXJ5VXJsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdmFpbGFibGUgZnJvbSBBY3Rpdml0aSB2ZXJzaW9uIDguNy4wIG9ud2FyZHMuXG4gICAgICogUmV0cmlldmVzIGEgbGlzdCBvZiBwcm9jZXNzZXMgdXNpbmcgYW4gb2JqZWN0IHdpdGggb3B0aW9uYWwgcXVlcnkgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0Tm9kZSBRdWVyeSBvYmplY3RcbiAgICAgKiBAcGFyYW0gcXVlcnlVcmwgUXVlcnkgdXJsXG4gICAgICogQHJldHVybnMgTGlzdCBvZiBwcm9jZXNzZXNcbiAgICAgKi9cbiAgICBmZXRjaFByb2Nlc3NMaXN0KHJlcXVlc3ROb2RlOiBQcm9jZXNzTGlzdFJlcXVlc3RNb2RlbCwgcXVlcnlVcmw/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAoIXJlcXVlc3ROb2RlPy5hcHBOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0FwcG5hbWUgbm90IGNvbmZpZ3VyZWQnKSk7XG4gICAgICAgIH1cblxuICAgICAgICBxdWVyeVVybCA9IHF1ZXJ5VXJsIHx8IGAke3RoaXMuZ2V0QmFzZVBhdGgocmVxdWVzdE5vZGUuYXBwTmFtZSl9L3F1ZXJ5L3YxL3Byb2Nlc3MtaW5zdGFuY2VzL3NlYXJjaGA7XG5cbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7XG4gICAgICAgICAgICBtYXhJdGVtczogcmVxdWVzdE5vZGUucGFnaW5hdGlvbj8ubWF4SXRlbXMgfHwgMjUsXG4gICAgICAgICAgICBza2lwQ291bnQ6IHJlcXVlc3ROb2RlLnBhZ2luYXRpb24/LnNraXBDb3VudCB8fCAwXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcXVlcnlEYXRhID0gdGhpcy5idWlsZFF1ZXJ5RGF0YShyZXF1ZXN0Tm9kZSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc3Q8YW55LCBhbnk+KHF1ZXJ5VXJsLCBxdWVyeURhdGEsIHF1ZXJ5UGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IHJlc3BvbnNlLmxpc3Q/LmVudHJpZXM7XG4gICAgICAgICAgICAgICAgaWYgKGVudHJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubGlzdC5lbnRyaWVzID0gZW50cmllcy5tYXAoKGVudHJ5RGF0YSkgPT4gZW50cnlEYXRhLmVudHJ5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYnVpbGRRdWVyeURhdGEocmVxdWVzdE5vZGU6IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5RGF0YTogYW55ID0ge1xuICAgICAgICAgICAgbmFtZTogcmVxdWVzdE5vZGUubmFtZSxcbiAgICAgICAgICAgIGlkOiByZXF1ZXN0Tm9kZS5pZCxcbiAgICAgICAgICAgIHBhcmVudElkOiByZXF1ZXN0Tm9kZS5wYXJlbnRJZCxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogcmVxdWVzdE5vZGUucHJvY2Vzc0RlZmluaXRpb25OYW1lLFxuICAgICAgICAgICAgaW5pdGlhdG9yOiByZXF1ZXN0Tm9kZS5pbml0aWF0b3IsXG4gICAgICAgICAgICBhcHBWZXJzaW9uOiByZXF1ZXN0Tm9kZS5hcHBWZXJzaW9uLFxuICAgICAgICAgICAgc3RhdHVzOiByZXF1ZXN0Tm9kZS5zdGF0dXMsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWRGcm9tOiByZXF1ZXN0Tm9kZS5sYXN0TW9kaWZpZWRGcm9tLFxuICAgICAgICAgICAgbGFzTW9kaWZpZWRUbzogcmVxdWVzdE5vZGUubGFzTW9kaWZpZWRUbyxcbiAgICAgICAgICAgIHN0YXJ0RnJvbTogcmVxdWVzdE5vZGUuc3RhcnRGcm9tLFxuICAgICAgICAgICAgc3RhcnRUbzogcmVxdWVzdE5vZGUuc3RhcnRUbyxcbiAgICAgICAgICAgIGNvbXBsZXRlZEZyb206IHJlcXVlc3ROb2RlLmNvbXBsZXRlZEZyb20sXG4gICAgICAgICAgICBjb21wbGV0ZWRUbzogcmVxdWVzdE5vZGUuY29tcGxldGVkVG8sXG4gICAgICAgICAgICBzdXNwZW5kZWRGcm9tOiByZXF1ZXN0Tm9kZS5zdXNwZW5kZWRGcm9tLFxuICAgICAgICAgICAgc3VzcGVuZGVkVG86IHJlcXVlc3ROb2RlLnN1c3BlbmRlZFRvLFxuICAgICAgICAgICAgcHJvY2Vzc1ZhcmlhYmxlS2V5czogcmVxdWVzdE5vZGUucHJvY2Vzc1ZhcmlhYmxlS2V5cyxcbiAgICAgICAgICAgIHByb2Nlc3NWYXJpYWJsZUZpbHRlcnM6IHJlcXVlc3ROb2RlLnByb2Nlc3NWYXJpYWJsZUZpbHRlcnNcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAocmVxdWVzdE5vZGUuc29ydGluZykge1xuICAgICAgICAgICAgcXVlcnlEYXRhWydzb3J0J10gPSB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IHJlcXVlc3ROb2RlLnNvcnRpbmcub3JkZXJCeSxcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IHJlcXVlc3ROb2RlLnNvcnRpbmcuZGlyZWN0aW9uLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgaXNQcm9jZXNzVmFyaWFibGU6IHJlcXVlc3ROb2RlLnNvcnRpbmcuaXNGaWVsZFByb2Nlc3NWYXJpYWJsZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChxdWVyeURhdGFbJ3NvcnQnXS5pc1Byb2Nlc3NWYXJpYWJsZSkge1xuICAgICAgICAgICAgICAgIHF1ZXJ5RGF0YVsnc29ydCddLnByb2Nlc3NEZWZpbml0aW9uS2V5ID0gcmVxdWVzdE5vZGUuc29ydGluZy5wcm9jZXNzVmFyaWFibGVEYXRhPy5wcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICAgICAgICAgICAgICBxdWVyeURhdGFbJ3NvcnQnXS50eXBlID0gcmVxdWVzdE5vZGUuc29ydGluZy5wcm9jZXNzVmFyaWFibGVEYXRhPy50eXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgICogUmVtb3ZlIHByb2Nlc3MgdmFyaWFibGUgZmlsdGVyIGtleXMgd2l0aCBlbXB0eSB2YWx1ZXMgZnJvbSB0aGUgcXVlcnkgZGF0YS5cbiAgICAgICAgICovXG4gICAgICAgIGlmIChxdWVyeURhdGFbJ3Byb2Nlc3NWYXJpYWJsZUZpbHRlcnMnXSkge1xuICAgICAgICAgICAgcXVlcnlEYXRhWydwcm9jZXNzVmFyaWFibGVGaWx0ZXJzJ10gPSBxdWVyeURhdGFbJ3Byb2Nlc3NWYXJpYWJsZUZpbHRlcnMnXS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGZpbHRlcikgPT4gZmlsdGVyLnZhbHVlICE9PSAnJyAmJiBmaWx0ZXIudmFsdWUgIT09IG51bGwgJiYgZmlsdGVyLnZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAgKiBSZW1vdmUga2V5cyB3aXRoIGVtcHR5IHZhbHVlcyBmcm9tIHRoZSBxdWVyeSBkYXRhLlxuICAgICAgICAgKi9cbiAgICAgICAgT2JqZWN0LmtleXMocXVlcnlEYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcXVlcnlEYXRhW2tleV07XG4gICAgICAgICAgICBjb25zdCBpc1ZhbHVlRW1wdHkgPSAhdmFsdWU7XG4gICAgICAgICAgICBjb25zdCBpc1ZhbHVlQXJyYXlXaXRoRW1wdHlWYWx1ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpICYmICh2YWx1ZS5sZW5ndGggPT09IDAgfHwgdmFsdWVbMF0gPT09IG51bGwpO1xuICAgICAgICAgICAgaWYgKGlzVmFsdWVFbXB0eSB8fCBpc1ZhbHVlQXJyYXlXaXRoRW1wdHlWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBxdWVyeURhdGFba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHF1ZXJ5RGF0YTtcbiAgICB9XG5cbiAgICBnZXRQcm9jZXNzTGlzdENvdW50ZXIocmVxdWVzdE5vZGU6IFByb2Nlc3NMaXN0UmVxdWVzdE1vZGVsKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0Tm9kZS5hcHBOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0FwcG5hbWUgbm90IGNvbmZpZ3VyZWQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hQcm9jZXNzTGlzdChyZXF1ZXN0Tm9kZSkucGlwZShtYXAoKHByb2Nlc3NlcykgPT4gcHJvY2Vzc2VzLmxpc3QucGFnaW5hdGlvbi50b3RhbEl0ZW1zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYSBwcm9jZXNzIHVzaW5nIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHF1ZXJ5IHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXBwTmFtZSBhcHAgbmFtZVxuICAgICAqIEBwYXJhbSBzdGF0dXMgZmlsdGVyIHN0YXR1c1xuICAgICAqIEByZXR1cm5zIFRvdGFsIGl0ZW1zXG4gICAgICovXG4gICAgZ2V0UHJvY2Vzc0NvdW50ZXIoYXBwTmFtZTogc3RyaW5nLCBzdGF0dXM6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKHVybDogc3RyaW5nLCBxdWVyeVBhcmFtczogYW55KSA9PiB0aGlzLmdldCh1cmwsIHF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgbGV0IHF1ZXJ5VXJsOiBzdHJpbmc7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRRdWVyeVVybCA9ICdxdWVyeS92MS9wcm9jZXNzLWluc3RhbmNlcyc7XG4gICAgICAgIGNvbnN0IHJlcXVlc3ROb2RlOiBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbCA9IHtcbiAgICAgICAgICAgIGFwcE5hbWUsXG4gICAgICAgICAgICBhcHBWZXJzaW9uOiAnJyxcbiAgICAgICAgICAgIGluaXRpYXRvcjogbnVsbCxcbiAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbklkOiAnJyxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uTmFtZTogbnVsbCxcbiAgICAgICAgICAgIHByb2Nlc3NEZWZpbml0aW9uS2V5OiAnJyxcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIGJ1c2luZXNzS2V5OiAnJyxcbiAgICAgICAgICAgIHN0YXJ0RnJvbTogbnVsbCxcbiAgICAgICAgICAgIHN0YXJ0VG86IG51bGwsXG4gICAgICAgICAgICBjb21wbGV0ZWRGcm9tOiBudWxsLFxuICAgICAgICAgICAgY29tcGxldGVkVG86IG51bGwsXG4gICAgICAgICAgICBzdXNwZW5kZWRGcm9tOiBudWxsLFxuICAgICAgICAgICAgc3VzcGVuZGVkVG86IG51bGwsXG4gICAgICAgICAgICBjb21wbGV0ZWREYXRlOiAnJyxcbiAgICAgICAgICAgIG1heEl0ZW1zOiAxLFxuICAgICAgICAgICAgc2tpcENvdW50OiAwLFxuICAgICAgICAgICAgc29ydGluZzogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJCeTogJ3N0YXJ0RGF0ZScsXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogJ0RFU0MnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFByb2Nlc3MoY2FsbGJhY2ssIGRlZmF1bHRRdWVyeVVybCwgcmVxdWVzdE5vZGUsIHF1ZXJ5VXJsKS5waXBlKG1hcCgodGFza3MpID0+IHRhc2tzPy5saXN0Py5wYWdpbmF0aW9uPy50b3RhbEl0ZW1zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgYSBwcm9jZXNzIHVzaW5nIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIHF1ZXJ5IHByb3BlcnRpZXMgaW4gYWRtaW4gYXBwLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3ROb2RlIFF1ZXJ5IG9iamVjdFxuICAgICAqIEBwYXJhbSBxdWVyeVVybCBRdWVyeSB1cmxcbiAgICAgKiBAcmV0dXJucyBQcm9jZXNzIGluZm9ybWF0aW9uXG4gICAgICovXG4gICAgZ2V0QWRtaW5Qcm9jZXNzQnlSZXF1ZXN0KHJlcXVlc3ROb2RlOiBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbCwgcXVlcnlVcmw/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBjb25zdCBjYWxsYmFjayA9ICh1cmw6IHN0cmluZywgcGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBvc3RCb2R5ID0ge1xuICAgICAgICAgICAgICAgIHZhcmlhYmxlS2V5czogdGhpcy5nZXRWYXJpYWJsZUtleXNGcm9tUXVlcnlQYXJhbXMocGFyYW1zKVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZGVsZXRlIHBhcmFtc1sndmFyaWFibGVLZXlzJ107XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3QodXJsLCBwb3N0Qm9keSwgcGFyYW1zKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBkZWZhdWx0UXVlcnlVcmwgPSAncXVlcnkvYWRtaW4vdjEvcHJvY2Vzcy1pbnN0YW5jZXMnO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldFByb2Nlc3MoY2FsbGJhY2ssIGRlZmF1bHRRdWVyeVVybCwgcmVxdWVzdE5vZGUsIHF1ZXJ5VXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhcmlhYmxlS2V5c0Zyb21RdWVyeVBhcmFtcyhxdWVyeVBhcmFtczogYW55KTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoIXF1ZXJ5UGFyYW1zWyd2YXJpYWJsZUtleXMnXSB8fCBxdWVyeVBhcmFtc1sndmFyaWFibGVLZXlzJ10ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBxdWVyeVBhcmFtc1sndmFyaWFibGVLZXlzJ10uc3BsaXQoJywnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNQcm9wZXJ0eVZhbHVlVmFsaWQocmVxdWVzdE5vZGU6IFByb2Nlc3NRdWVyeUNsb3VkUmVxdWVzdE1vZGVsLCBwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiByZXF1ZXN0Tm9kZVtwcm9wZXJ0eV0gIT09ICcnICYmIHJlcXVlc3ROb2RlW3Byb3BlcnR5XSAhPT0gbnVsbCAmJiByZXF1ZXN0Tm9kZVtwcm9wZXJ0eV0gIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYnVpbGRRdWVyeVBhcmFtcyhyZXF1ZXN0Tm9kZTogUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwpOiBhbnkge1xuICAgICAgICBjb25zdCBxdWVyeVBhcmFtID0ge307XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiByZXF1ZXN0Tm9kZSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXF1ZXN0Tm9kZSwgcHJvcGVydHkpICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuaXNFeGNsdWRlZEZpZWxkKHByb3BlcnR5KSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuaXNQcm9wZXJ0eVZhbHVlVmFsaWQocmVxdWVzdE5vZGUsIHByb3BlcnR5KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbVtwcm9wZXJ0eV0gPSB0aGlzLmdldFF1ZXJ5UGFyYW1WYWx1ZUZyb21SZXF1ZXN0Tm9kZShyZXF1ZXN0Tm9kZSwgcHJvcGVydHkgYXMga2V5b2YgUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFxdWVyeVBhcmFtWydzdGF0dXMnXSkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbVsnc3RhdHVzJ10gPSB0aGlzLmJ1aWxkRmlsdGVyRm9yQWxsU3RhdHVzKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcXVlcnlQYXJhbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFF1ZXJ5UGFyYW1WYWx1ZUZyb21SZXF1ZXN0Tm9kZShyZXF1ZXN0Tm9kZTogUHJvY2Vzc1F1ZXJ5Q2xvdWRSZXF1ZXN0TW9kZWwsIHByb3BlcnR5OiBrZXlvZiBQcm9jZXNzUXVlcnlDbG91ZFJlcXVlc3RNb2RlbCkge1xuICAgICAgICBpZiAocHJvcGVydHkgPT09ICd2YXJpYWJsZUtleXMnICYmIHJlcXVlc3ROb2RlW3Byb3BlcnR5XT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGAke3JlcXVlc3ROb2RlW3Byb3BlcnR5XS5tYXAoKHZhcmlhYmxlSWQpID0+IHZhcmlhYmxlSWQpLmpvaW4oJywnKX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcXVlc3ROb2RlW3Byb3BlcnR5XTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYnVpbGRGaWx0ZXJGb3JBbGxTdGF0dXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gWydSVU5OSU5HJywgJ1NVU1BFTkRFRCcsICdDQU5DRUxMRUQnLCAnQ09NUExFVEVEJ107XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzRXhjbHVkZWRGaWVsZChwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eSA9PT0gJ2FwcE5hbWUnIHx8IHByb3BlcnR5ID09PSAnc29ydGluZyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGJ1aWxkU29ydGluZ1BhcmFtKG1vZGVsczogUHJvY2Vzc0xpc3RDbG91ZFNvcnRpbmdNb2RlbFtdKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGZpbmFsU29ydGluZzogc3RyaW5nID0gJyc7XG4gICAgICAgIGlmIChtb2RlbHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc29ydCBvZiBtb2RlbHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWZpbmFsU29ydGluZykge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbFNvcnRpbmcgPSBgJHtzb3J0Lm9yZGVyQnl9LCR7c29ydC5kaXJlY3Rpb259YDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmaW5hbFNvcnRpbmcgPSBgJHtmaW5hbFNvcnRpbmd9JiR7c29ydC5vcmRlckJ5fSwke3NvcnQuZGlyZWN0aW9ufWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbmNvZGVVUkkoZmluYWxTb3J0aW5nKTtcbiAgICB9XG59XG4iXX0=