@alfresco/adf-process-services-cloud 6.9.0 → 6.10.0-10006186111

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 (169) hide show
  1. package/esm2020/lib/app/app-list-cloud.module.mjs +5 -5
  2. package/esm2020/lib/app/components/app-details-cloud.component.mjs +5 -5
  3. package/esm2020/lib/app/components/app-list-cloud.component.mjs +4 -4
  4. package/esm2020/lib/app/services/apps-process-cloud.service.mjs +4 -4
  5. package/esm2020/lib/common/date-range-filter/date-range-filter.component.mjs +6 -6
  6. package/esm2020/lib/common/date-range-filter/date-range-filter.service.mjs +4 -4
  7. package/esm2020/lib/common/process-common.module.mjs +5 -5
  8. package/esm2020/lib/form/components/cloud-form-rendering.service.mjs +4 -4
  9. package/esm2020/lib/form/components/form-cloud-custom-outcomes.component.mjs +4 -4
  10. package/esm2020/lib/form/components/form-cloud.component.mjs +10 -12
  11. package/esm2020/lib/form/components/form-definition-selector-cloud.component.mjs +4 -4
  12. package/esm2020/lib/form/components/spinner/form-spinner.component.mjs +4 -4
  13. package/esm2020/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +11 -12
  14. package/esm2020/lib/form/components/widgets/attach-file/file-properties-table-cloud.component.mjs +5 -5
  15. package/esm2020/lib/form/components/widgets/attach-file/upload-cloud.widget.mjs +6 -7
  16. package/esm2020/lib/form/components/widgets/data-table/data-table-adapter.widget.mjs +7 -7
  17. package/esm2020/lib/form/components/widgets/data-table/data-table.widget.mjs +5 -5
  18. package/esm2020/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.mjs +11 -3
  19. package/esm2020/lib/form/components/widgets/date/date-cloud.widget.mjs +10 -11
  20. package/esm2020/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +5 -5
  21. package/esm2020/lib/form/components/widgets/display-rich-text/display-rich-text.widget.mjs +4 -4
  22. package/esm2020/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +20 -10
  23. package/esm2020/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +4 -4
  24. package/esm2020/lib/form/components/widgets/group/group-cloud.widget.mjs +7 -8
  25. package/esm2020/lib/form/components/widgets/people/people-cloud.widget.mjs +7 -8
  26. package/esm2020/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.mjs +4 -4
  27. package/esm2020/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +4 -4
  28. package/esm2020/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +6 -7
  29. package/esm2020/lib/form/form-cloud.module.mjs +5 -5
  30. package/esm2020/lib/form/services/content-cloud-node-selector.service.mjs +8 -8
  31. package/esm2020/lib/form/services/display-mode.service.mjs +4 -4
  32. package/esm2020/lib/form/services/form-cloud.service.mjs +7 -7
  33. package/esm2020/lib/form/services/form-definition-selector-cloud.service.mjs +4 -4
  34. package/esm2020/lib/form/services/process-cloud-content.service.mjs +10 -10
  35. package/esm2020/lib/form/services/spinner/form-cloud-spinner.service.mjs +4 -4
  36. package/esm2020/lib/group/components/group-cloud.component.mjs +12 -13
  37. package/esm2020/lib/group/group-cloud.module.mjs +5 -5
  38. package/esm2020/lib/group/pipe/group-initial.pipe.mjs +4 -4
  39. package/esm2020/lib/group/services/identity-group.service.mjs +4 -4
  40. package/esm2020/lib/material.module.mjs +135 -38
  41. package/esm2020/lib/people/components/people-cloud.component.mjs +12 -13
  42. package/esm2020/lib/people/people-cloud.module.mjs +5 -5
  43. package/esm2020/lib/people/services/identity-user.service.mjs +4 -4
  44. package/esm2020/lib/pipes/process-name-cloud.pipe.mjs +4 -4
  45. package/esm2020/lib/pipes/process-services-cloud-pipe.module.mjs +5 -5
  46. package/esm2020/lib/process/directives/cancel-process.directive.mjs +4 -4
  47. package/esm2020/lib/process/directives/process-directive.module.mjs +5 -5
  48. package/esm2020/lib/process/process-cloud.module.mjs +5 -5
  49. package/esm2020/lib/process/process-filters/components/edit-process-filter-cloud.component.mjs +34 -35
  50. package/esm2020/lib/process/process-filters/components/process-filter-dialog-cloud.component.mjs +7 -7
  51. package/esm2020/lib/process/process-filters/components/process-filters-cloud.component.mjs +5 -5
  52. package/esm2020/lib/process/process-filters/process-filters-cloud.module.mjs +5 -5
  53. package/esm2020/lib/process/process-filters/services/process-filter-cloud.service.mjs +4 -4
  54. package/esm2020/lib/process/process-header/components/process-header-cloud.component.mjs +10 -12
  55. package/esm2020/lib/process/process-header/process-header-cloud.module.mjs +5 -5
  56. package/esm2020/lib/process/process-list/components/process-list-cloud.component.mjs +4 -4
  57. package/esm2020/lib/process/process-list/process-list-cloud.module.mjs +5 -5
  58. package/esm2020/lib/process/process-list/services/process-list-cloud.service.mjs +4 -4
  59. package/esm2020/lib/process/process-list/services/process-task-list-cloud.service.mjs +4 -4
  60. package/esm2020/lib/process/services/process-cloud.service.mjs +4 -4
  61. package/esm2020/lib/process/start-process/components/start-process-cloud.component.mjs +14 -7
  62. package/esm2020/lib/process/start-process/services/start-process-cloud.service.mjs +4 -4
  63. package/esm2020/lib/process/start-process/start-process-cloud.module.mjs +5 -5
  64. package/esm2020/lib/process-services-cloud.module.mjs +5 -5
  65. package/esm2020/lib/rich-text-editor/rich-text-editor.component.mjs +13 -19
  66. package/esm2020/lib/rich-text-editor/rich-text-editor.module.mjs +5 -5
  67. package/esm2020/lib/services/base-cloud.service.mjs +4 -4
  68. package/esm2020/lib/services/local-preference-cloud.service.mjs +4 -4
  69. package/esm2020/lib/services/notification-cloud.service.mjs +4 -4
  70. package/esm2020/lib/services/user-preference-cloud.service.mjs +4 -4
  71. package/esm2020/lib/services/variable-mapper.sevice.mjs +4 -4
  72. package/esm2020/lib/task/directives/claim-task-cloud.directive.mjs +4 -4
  73. package/esm2020/lib/task/directives/complete-task.directive.mjs +4 -4
  74. package/esm2020/lib/task/directives/task-directive.module.mjs +5 -5
  75. package/esm2020/lib/task/directives/unclaim-task-cloud.directive.mjs +4 -4
  76. package/esm2020/lib/task/services/start-task-cloud.service.mjs +4 -4
  77. package/esm2020/lib/task/services/task-cloud.service.mjs +4 -4
  78. package/esm2020/lib/task/start-task/components/start-task-cloud.component.mjs +8 -8
  79. package/esm2020/lib/task/start-task/start-task-cloud.module.mjs +5 -5
  80. package/esm2020/lib/task/task-cloud.module.mjs +5 -5
  81. package/esm2020/lib/task/task-filters/components/base-task-filters-cloud.component.mjs +4 -4
  82. package/esm2020/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.mjs +4 -4
  83. package/esm2020/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter-cloud.component.mjs +13 -14
  84. package/esm2020/lib/task/task-filters/components/edit-task-filters/edit-task-filter-cloud.component.mjs +13 -14
  85. package/esm2020/lib/task/task-filters/components/service-task-filters-cloud.component.mjs +5 -5
  86. package/esm2020/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +4 -4
  87. package/esm2020/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +7 -7
  88. package/esm2020/lib/task/task-filters/components/task-filters-cloud.component.mjs +5 -5
  89. package/esm2020/lib/task/task-filters/services/service-task-filter-cloud.service.mjs +4 -4
  90. package/esm2020/lib/task/task-filters/services/task-filter-cloud.service.mjs +4 -4
  91. package/esm2020/lib/task/task-filters/task-filters-cloud.module.mjs +5 -5
  92. package/esm2020/lib/task/task-form/components/task-form-cloud.component.mjs +12 -6
  93. package/esm2020/lib/task/task-form/task-form.module.mjs +5 -5
  94. package/esm2020/lib/task/task-header/components/task-header-cloud.component.mjs +5 -5
  95. package/esm2020/lib/task/task-header/task-header-cloud.module.mjs +5 -5
  96. package/esm2020/lib/task/task-list/components/base-task-list-cloud.component.mjs +5 -5
  97. package/esm2020/lib/task/task-list/components/service-task-list-cloud.component.mjs +4 -4
  98. package/esm2020/lib/task/task-list/components/task-list-cloud.component.mjs +4 -4
  99. package/esm2020/lib/task/task-list/services/service-task-list-cloud.service.mjs +4 -4
  100. package/esm2020/lib/task/task-list/services/task-list-cloud.service.mjs +4 -4
  101. package/esm2020/lib/task/task-list/task-list-cloud.module.mjs +5 -5
  102. package/fesm2015/adf-process-services-cloud.mjs +5869 -5741
  103. package/fesm2015/adf-process-services-cloud.mjs.map +1 -1
  104. package/fesm2020/adf-process-services-cloud.mjs +3771 -3643
  105. package/fesm2020/adf-process-services-cloud.mjs.map +1 -1
  106. package/lib/app/components/app-details-cloud.component.d.ts +1 -1
  107. package/lib/app/components/app-list-cloud.component.d.ts +1 -1
  108. package/lib/common/date-range-filter/date-range-filter.component.d.ts +1 -1
  109. package/lib/form/components/form-cloud-custom-outcomes.component.d.ts +1 -1
  110. package/lib/form/components/form-cloud.component.d.ts +2 -2
  111. package/lib/form/components/form-cloud.component.scss +5 -8
  112. package/lib/form/components/form-definition-selector-cloud.component.d.ts +1 -1
  113. package/lib/form/components/spinner/form-spinner.component.d.ts +1 -1
  114. package/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.d.ts +1 -1
  115. package/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.scss +1 -3
  116. package/lib/form/components/widgets/attach-file/file-properties-table-cloud.component.d.ts +1 -1
  117. package/lib/form/components/widgets/attach-file/upload-cloud.widget.d.ts +1 -1
  118. package/lib/form/components/widgets/data-table/data-table.widget.d.ts +1 -1
  119. package/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.d.ts +1 -0
  120. package/lib/form/components/widgets/date/date-cloud.widget.d.ts +1 -1
  121. package/lib/form/components/widgets/date/date-cloud.widget.scss +7 -7
  122. package/lib/form/components/widgets/display-external-property/display-external-property.widget.d.ts +1 -1
  123. package/lib/form/components/widgets/display-external-property/display-external-property.widget.scss +1 -0
  124. package/lib/form/components/widgets/display-rich-text/display-rich-text.widget.d.ts +1 -1
  125. package/lib/form/components/widgets/dropdown/dropdown-cloud.widget.d.ts +3 -1
  126. package/lib/form/components/widgets/file-viewer/file-viewer.widget.d.ts +1 -1
  127. package/lib/form/components/widgets/group/group-cloud.widget.d.ts +1 -1
  128. package/lib/form/components/widgets/people/people-cloud.widget.d.ts +1 -1
  129. package/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.d.ts +1 -1
  130. package/lib/form/components/widgets/properties-viewer/properties-viewer.widget.d.ts +1 -1
  131. package/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.d.ts +1 -1
  132. package/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.scss +12 -0
  133. package/lib/group/components/group-cloud.component.d.ts +1 -1
  134. package/lib/material.module.d.ts +4 -5
  135. package/lib/models/process-instance-variable.model.d.ts +1 -1
  136. package/lib/people/components/people-cloud.component.d.ts +1 -1
  137. package/lib/process/directives/cancel-process.directive.d.ts +1 -1
  138. package/lib/process/process-filters/components/edit-process-filter-cloud.component.d.ts +1 -1
  139. package/lib/process/process-filters/components/process-filter-dialog-cloud.component.d.ts +1 -1
  140. package/lib/process/process-filters/components/process-filters-cloud.component.d.ts +1 -1
  141. package/lib/process/process-header/components/process-header-cloud.component.d.ts +3 -3
  142. package/lib/process/process-list/components/process-list-cloud.component.d.ts +1 -1
  143. package/lib/process/process-list/models/perocess-instance-cloud-view.model.d.ts +1 -1
  144. package/lib/process/start-process/components/start-process-cloud.component.d.ts +5 -2
  145. package/lib/rich-text-editor/rich-text-editor.component.d.ts +1 -3
  146. package/lib/rich-text-editor/rich-text-editor.component.scss +10 -0
  147. package/lib/services/form-fields.interfaces.d.ts +1 -1
  148. package/lib/task/directives/claim-task-cloud.directive.d.ts +1 -1
  149. package/lib/task/directives/complete-task.directive.d.ts +1 -1
  150. package/lib/task/directives/unclaim-task-cloud.directive.d.ts +1 -1
  151. package/lib/task/start-task/components/start-task-cloud.component.d.ts +1 -1
  152. package/lib/task/start-task/models/task-details-cloud.model.d.ts +2 -2
  153. package/lib/task/task-filters/components/base-task-filters-cloud.component.d.ts +1 -1
  154. package/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.d.ts +1 -1
  155. package/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter-cloud.component.d.ts +1 -1
  156. package/lib/task/task-filters/components/edit-task-filters/edit-task-filter-cloud.component.d.ts +1 -1
  157. package/lib/task/task-filters/components/service-task-filters-cloud.component.d.ts +1 -1
  158. package/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.d.ts +1 -1
  159. package/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.d.ts +1 -1
  160. package/lib/task/task-filters/components/task-filters-cloud.component.d.ts +1 -1
  161. package/lib/task/task-form/components/task-form-cloud.component.d.ts +5 -2
  162. package/lib/task/task-form/components/task-form-cloud.component.scss +15 -9
  163. package/lib/task/task-header/components/task-header-cloud.component.d.ts +1 -1
  164. package/lib/task/task-list/components/base-task-list-cloud.component.d.ts +1 -1
  165. package/lib/task/task-list/components/service-task-list-cloud.component.d.ts +1 -1
  166. package/lib/task/task-list/components/task-list-cloud.component.d.ts +1 -1
  167. package/lib/task/task-list/models/task-cloud-view.model.d.ts +1 -1
  168. package/lib/types.d.ts +1 -1
  169. package/package.json +6 -6
@@ -26,14 +26,13 @@ import * as i2 from "@angular/material/autocomplete";
26
26
  import * as i3 from "@angular/material/core";
27
27
  import * as i4 from "@angular/material/button";
28
28
  import * as i5 from "@angular/material/icon";
29
- import * as i6 from "@angular/material/form-field";
30
- import * as i7 from "@angular/material/input";
31
- import * as i8 from "@angular/material/tooltip";
32
- import * as i9 from "@angular/material/chips";
33
- import * as i10 from "@angular/forms";
34
- import * as i11 from "@angular/material/progress-bar";
35
- import * as i12 from "@ngx-translate/core";
36
- import * as i13 from "../pipe/group-initial.pipe";
29
+ import * as i6 from "@angular/material/input";
30
+ import * as i7 from "@angular/material/form-field";
31
+ import * as i8 from "@angular/material/chips";
32
+ import * as i9 from "@angular/forms";
33
+ import * as i10 from "@angular/material/progress-bar";
34
+ import * as i11 from "@ngx-translate/core";
35
+ import * as i12 from "../pipe/group-initial.pipe";
37
36
  export class GroupCloudComponent {
38
37
  constructor(identityGroupService) {
39
38
  this.identityGroupService = identityGroupService;
@@ -346,21 +345,21 @@ export class GroupCloudComponent {
346
345
  this.onDestroy$.complete();
347
346
  }
348
347
  }
349
- GroupCloudComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GroupCloudComponent, deps: [{ token: IDENTITY_GROUP_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
350
- GroupCloudComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: GroupCloudComponent, selector: "adf-cloud-group", inputs: { appName: "appName", title: "title", mode: "mode", preSelectGroups: "preSelectGroups", validate: "validate", readOnly: "readOnly", required: "required", groupChipsCtrl: "groupChipsCtrl", searchGroupsControl: "searchGroupsControl", roles: "roles" }, outputs: { selectGroup: "selectGroup", removeGroup: "removeGroup", changedGroups: "changedGroups", warning: "warning" }, viewQueries: [{ propertyName: "groupInput", first: true, predicate: ["groupInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form>\n <mat-form-field floatLabel=\"auto\" class=\"adf-cloud-group\" [class.adf-invalid]=\"hasError() && isDirty()\">\n <mat-label *ngIf=\"!isReadonly()\" id=\"adf-group-cloud-title-id\" class=\"adf-cloud-group-title\"\n [ngClass]=\"{'adf-cloud-group-title--focus': isFocused}\">{{ (title || 'ADF_CLOUD_GROUPS.SEARCH-GROUP') | translate }}</mat-label>\n <mat-chip-list #groupChipList [disabled]=\"isReadonly() || isValidationLoading()\" data-automation-id=\"adf-cloud-group-chip-list\">\n <mat-chip\n *ngFor=\"let group of selectedGroups\"\n [removable]=\"!(group.readonly)\"\n [attr.data-automation-id]=\"'adf-cloud-group-chip-' + group.name\"\n (removed)=\"onRemove(group)\"\n matTooltip=\"{{ (group.readonly ? 'ADF_CLOUD_GROUPS.MANDATORY' : '') | translate }}\">\n {{group.name}}\n <mat-icon\n *ngIf=\"!(group.readonly || readOnly)\"\n matChipRemove [attr.data-automation-id]=\"'adf-cloud-group-chip-remove-icon-' + group.name\">\n cancel\n </mat-icon>\n </mat-chip>\n <input *ngIf=\"!isReadonly()\" matInput\n [formControl]=\"searchGroupsControl\"\n [matAutocomplete]=\"auto\"\n [matChipInputFor]=\"groupChipList\"\n [required]=\"required\"\n (focus)=\"setFocus(true)\"\n (blur)=\"setFocus(false); markAsTouched()\"\n class=\"adf-group-input\"\n data-automation-id=\"adf-cloud-group-search-input\" #groupInput>\n </mat-chip-list>\n\n <mat-autocomplete\n autoActiveFirstOption\n #auto=\"matAutocomplete\"\n class=\"adf-cloud-group-list\"\n (optionSelected)=\"onSelect($event.option.value)\"\n [displayWith]=\"getDisplayName\"\n data-automation-id=\"adf-cloud-group-autocomplete\">\n <ng-container *ngIf=\"(searchGroups$ | async)?.length else noResults\">\n <mat-option *ngFor=\"let group of searchGroups$ | async; let i = index\" [value]=\"group\"\n [attr.data-automation-id]=\"'adf-cloud-group-chip-' + group.name\"\n class=\"adf-cloud-group-option-active\">\n <div\n class=\"adf-cloud-group-row\"\n id=\"adf-group-{{i}}\"\n data-automation-id=\"adf-cloud-group-row\">\n <button class=\"adf-group-short-name\" mat-fab>{{group | groupNameInitial }}</button>\n <span>{{group.name}}</span>\n </div>\n </mat-option>\n </ng-container>\n <ng-template #noResults>\n <mat-option *ngIf=\"searchGroupsControl.hasError('searchTypingError') && !searchLoading\" disabled\n class=\"adf-cloud-group-option-not-active\"\n data-automation-id=\"adf-cloud-group-no-results\">\n <span> {{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</span>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n </mat-form-field>\n <mat-progress-bar\n *ngIf=\"validationLoading\"\n mode=\"indeterminate\">\n </mat-progress-bar>\n\n <div class=\"adf-error-container\">\n <mat-error *ngIf=\"hasPreselectError() && !isValidationLoading()\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('pattern')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_PATTERN' | translate: { pattern: getValidationPattern() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('maxlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MAX_LENGTH' | translate: { requiredLength: getValidationMaxLength() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('minlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MIN_LENGTH' | translate: { requiredLength: getValidationMinLength() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"(searchGroupsControl.hasError('required') || groupChipsCtrl.hasError('required')) && isDirty()\"\n [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.REQUIRED' | translate }} </div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('searchTypingError') && !this.isFocused\"\n data-automation-id=\"invalid-groups-typing-error\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</div>\n </mat-error>\n </div>\n</form>\n", styles: [".adf-cloud-group-list{margin:5px 0;padding:10px 0}.adf-cloud-group-list .adf-cloud-group-row{place-content:center flex-start;align-items:center;display:flex}.adf-cloud-group-list .adf-cloud-group-row .adf-group-short-name{margin-right:20px;background:var(--theme-primary-color);width:40px;height:40px;box-shadow:none}.adf-cloud-group{width:100%}.adf-cloud-group-title{color:var(--adf-group-cloud-input-label-default-color)}.adf-cloud-group-title--focus{color:var(--adf-group-cloud-input-label-focus-color)}.adf-cloud-group-option-active:not(.adf-cloud-group:disabled){color:var(--adf-group-cloud-autosuggest-result-active-color)}.adf-cloud-group-option-not-active:not(.adf-cloud-group:active){background:inherit;color:var(--adf-group-cloud-autosuggest-result-disabled-color)}.adf-cloud-group-error{color:var(--adf-group-cloud-input-caption-error-color);margin-top:-10px;position:absolute;height:20px}.adf-cloud-group-error-message{padding-right:8px;height:16px;line-height:1.33;width:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i9.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i9.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i9.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i9.MatChipRemove, selector: "[matChipRemove]" }, { kind: "directive", type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i10.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i11.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }, { kind: "pipe", type: i13.InitialGroupNamePipe, name: "groupNameInitial" }], animations: [
348
+ GroupCloudComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GroupCloudComponent, deps: [{ token: IDENTITY_GROUP_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
349
+ GroupCloudComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GroupCloudComponent, selector: "adf-cloud-group", inputs: { appName: "appName", title: "title", mode: "mode", preSelectGroups: "preSelectGroups", validate: "validate", readOnly: "readOnly", required: "required", groupChipsCtrl: "groupChipsCtrl", searchGroupsControl: "searchGroupsControl", roles: "roles" }, outputs: { selectGroup: "selectGroup", removeGroup: "removeGroup", changedGroups: "changedGroups", warning: "warning" }, viewQueries: [{ propertyName: "groupInput", first: true, predicate: ["groupInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<form>\n <mat-form-field class=\"adf-cloud-group\" [class.adf-invalid]=\"hasError() && isDirty()\">\n <ng-content select=\"[label]\"></ng-content>\n <mat-chip-grid #groupChipList [disabled]=\"isReadonly() || isValidationLoading()\" data-automation-id=\"adf-cloud-group-chip-list\">\n <mat-chip-row\n *ngFor=\"let group of selectedGroups\"\n [removable]=\"!(group.readonly)\"\n [attr.data-automation-id]=\"'adf-cloud-group-chip-' + group.name\"\n (removed)=\"onRemove(group)\"\n title=\"{{ (group.readonly ? 'ADF_CLOUD_GROUPS.MANDATORY' : '') | translate }}\">\n {{group.name}}\n <mat-icon\n *ngIf=\"!(group.readonly || readOnly)\"\n matChipRemove [attr.data-automation-id]=\"'adf-cloud-group-chip-remove-icon-' + group.name\">\n cancel\n </mat-icon>\n </mat-chip-row>\n <input [disabled]=\"isReadonly()\" matInput\n [formControl]=\"searchGroupsControl\"\n [matAutocomplete]=\"auto\"\n [matChipInputFor]=\"groupChipList\"\n [placeholder]=\"title | translate\"\n [required]=\"required\"\n (focus)=\"setFocus(true)\"\n (blur)=\"setFocus(false); markAsTouched()\"\n class=\"adf-group-input\"\n data-automation-id=\"adf-cloud-group-search-input\" #groupInput>\n </mat-chip-grid>\n\n <mat-autocomplete\n autoActiveFirstOption\n #auto=\"matAutocomplete\"\n class=\"adf-cloud-group-list\"\n (optionSelected)=\"onSelect($event.option.value)\"\n [displayWith]=\"getDisplayName\"\n data-automation-id=\"adf-cloud-group-autocomplete\">\n <ng-container *ngIf=\"(searchGroups$ | async)?.length else noResults\">\n <mat-option *ngFor=\"let group of searchGroups$ | async; let i = index\" [value]=\"group\"\n [attr.data-automation-id]=\"'adf-cloud-group-chip-' + group.name\"\n class=\"adf-cloud-group-option-active\">\n <div\n class=\"adf-cloud-group-row\"\n id=\"adf-group-{{i}}\"\n data-automation-id=\"adf-cloud-group-row\">\n <button class=\"adf-group-short-name\" mat-fab>{{group | groupNameInitial }}</button>\n <span>{{group.name}}</span>\n </div>\n </mat-option>\n </ng-container>\n <ng-template #noResults>\n <mat-option *ngIf=\"searchGroupsControl.hasError('searchTypingError') && !searchLoading\" disabled\n class=\"adf-cloud-group-option-not-active\"\n data-automation-id=\"adf-cloud-group-no-results\">\n <span> {{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</span>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n </mat-form-field>\n <mat-progress-bar\n *ngIf=\"validationLoading\"\n mode=\"indeterminate\">\n </mat-progress-bar>\n\n <div class=\"adf-error-container\">\n <mat-error *ngIf=\"hasPreselectError() && !isValidationLoading()\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('pattern')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_PATTERN' | translate: { pattern: getValidationPattern() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('maxlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MAX_LENGTH' | translate: { requiredLength: getValidationMaxLength() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('minlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MIN_LENGTH' | translate: { requiredLength: getValidationMinLength() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"(searchGroupsControl.hasError('required') || groupChipsCtrl.hasError('required')) && isDirty()\"\n [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.REQUIRED' | translate }} </div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('searchTypingError') && !this.isFocused\"\n data-automation-id=\"invalid-groups-typing-error\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</div>\n </mat-error>\n </div>\n</form>\n", styles: [".adf-cloud-group-list{margin:5px 0;padding:10px 0}.adf-cloud-group-list .adf-cloud-group-row{place-content:center flex-start;align-items:center;display:flex}.adf-cloud-group-list .adf-cloud-group-row .adf-group-short-name{margin-right:20px;background:var(--theme-primary-color);width:40px;height:40px;box-shadow:none}.adf-cloud-group{width:100%}.adf-cloud-group-title{color:var(--adf-group-cloud-input-label-default-color)}.adf-cloud-group-title--focus{color:var(--adf-group-cloud-input-label-focus-color)}.adf-cloud-group-option-active:not(.adf-cloud-group:disabled){color:var(--adf-group-cloud-autosuggest-result-active-color)}.adf-cloud-group-option-not-active:not(.adf-cloud-group:active){background:inherit;color:var(--adf-group-cloud-autosuggest-result-disabled-color)}.adf-cloud-group-error{color:var(--adf-group-cloud-input-caption-error-color);margin-top:-10px;position:absolute;height:20px}.adf-cloud-group-error-message{padding-right:8px;height:16px;line-height:1.33;width:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i4.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i8.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i8.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i8.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i8.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }, { kind: "pipe", type: i12.InitialGroupNamePipe, name: "groupNameInitial" }], animations: [
351
350
  trigger('transitionMessages', [
352
351
  state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),
353
352
  transition('void => enter', [style({ opacity: 0, transform: 'translateY(-100%)' }), animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)')])
354
353
  ])
355
354
  ], encapsulation: i0.ViewEncapsulation.None });
356
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GroupCloudComponent, decorators: [{
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GroupCloudComponent, decorators: [{
357
356
  type: Component,
358
357
  args: [{ selector: 'adf-cloud-group', animations: [
359
358
  trigger('transitionMessages', [
360
359
  state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),
361
360
  transition('void => enter', [style({ opacity: 0, transform: 'translateY(-100%)' }), animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)')])
362
361
  ])
363
- ], encapsulation: ViewEncapsulation.None, template: "<form>\n <mat-form-field floatLabel=\"auto\" class=\"adf-cloud-group\" [class.adf-invalid]=\"hasError() && isDirty()\">\n <mat-label *ngIf=\"!isReadonly()\" id=\"adf-group-cloud-title-id\" class=\"adf-cloud-group-title\"\n [ngClass]=\"{'adf-cloud-group-title--focus': isFocused}\">{{ (title || 'ADF_CLOUD_GROUPS.SEARCH-GROUP') | translate }}</mat-label>\n <mat-chip-list #groupChipList [disabled]=\"isReadonly() || isValidationLoading()\" data-automation-id=\"adf-cloud-group-chip-list\">\n <mat-chip\n *ngFor=\"let group of selectedGroups\"\n [removable]=\"!(group.readonly)\"\n [attr.data-automation-id]=\"'adf-cloud-group-chip-' + group.name\"\n (removed)=\"onRemove(group)\"\n matTooltip=\"{{ (group.readonly ? 'ADF_CLOUD_GROUPS.MANDATORY' : '') | translate }}\">\n {{group.name}}\n <mat-icon\n *ngIf=\"!(group.readonly || readOnly)\"\n matChipRemove [attr.data-automation-id]=\"'adf-cloud-group-chip-remove-icon-' + group.name\">\n cancel\n </mat-icon>\n </mat-chip>\n <input *ngIf=\"!isReadonly()\" matInput\n [formControl]=\"searchGroupsControl\"\n [matAutocomplete]=\"auto\"\n [matChipInputFor]=\"groupChipList\"\n [required]=\"required\"\n (focus)=\"setFocus(true)\"\n (blur)=\"setFocus(false); markAsTouched()\"\n class=\"adf-group-input\"\n data-automation-id=\"adf-cloud-group-search-input\" #groupInput>\n </mat-chip-list>\n\n <mat-autocomplete\n autoActiveFirstOption\n #auto=\"matAutocomplete\"\n class=\"adf-cloud-group-list\"\n (optionSelected)=\"onSelect($event.option.value)\"\n [displayWith]=\"getDisplayName\"\n data-automation-id=\"adf-cloud-group-autocomplete\">\n <ng-container *ngIf=\"(searchGroups$ | async)?.length else noResults\">\n <mat-option *ngFor=\"let group of searchGroups$ | async; let i = index\" [value]=\"group\"\n [attr.data-automation-id]=\"'adf-cloud-group-chip-' + group.name\"\n class=\"adf-cloud-group-option-active\">\n <div\n class=\"adf-cloud-group-row\"\n id=\"adf-group-{{i}}\"\n data-automation-id=\"adf-cloud-group-row\">\n <button class=\"adf-group-short-name\" mat-fab>{{group | groupNameInitial }}</button>\n <span>{{group.name}}</span>\n </div>\n </mat-option>\n </ng-container>\n <ng-template #noResults>\n <mat-option *ngIf=\"searchGroupsControl.hasError('searchTypingError') && !searchLoading\" disabled\n class=\"adf-cloud-group-option-not-active\"\n data-automation-id=\"adf-cloud-group-no-results\">\n <span> {{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</span>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n </mat-form-field>\n <mat-progress-bar\n *ngIf=\"validationLoading\"\n mode=\"indeterminate\">\n </mat-progress-bar>\n\n <div class=\"adf-error-container\">\n <mat-error *ngIf=\"hasPreselectError() && !isValidationLoading()\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('pattern')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_PATTERN' | translate: { pattern: getValidationPattern() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('maxlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MAX_LENGTH' | translate: { requiredLength: getValidationMaxLength() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('minlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MIN_LENGTH' | translate: { requiredLength: getValidationMinLength() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"(searchGroupsControl.hasError('required') || groupChipsCtrl.hasError('required')) && isDirty()\"\n [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.REQUIRED' | translate }} </div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('searchTypingError') && !this.isFocused\"\n data-automation-id=\"invalid-groups-typing-error\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</div>\n </mat-error>\n </div>\n</form>\n", styles: [".adf-cloud-group-list{margin:5px 0;padding:10px 0}.adf-cloud-group-list .adf-cloud-group-row{place-content:center flex-start;align-items:center;display:flex}.adf-cloud-group-list .adf-cloud-group-row .adf-group-short-name{margin-right:20px;background:var(--theme-primary-color);width:40px;height:40px;box-shadow:none}.adf-cloud-group{width:100%}.adf-cloud-group-title{color:var(--adf-group-cloud-input-label-default-color)}.adf-cloud-group-title--focus{color:var(--adf-group-cloud-input-label-focus-color)}.adf-cloud-group-option-active:not(.adf-cloud-group:disabled){color:var(--adf-group-cloud-autosuggest-result-active-color)}.adf-cloud-group-option-not-active:not(.adf-cloud-group:active){background:inherit;color:var(--adf-group-cloud-autosuggest-result-disabled-color)}.adf-cloud-group-error{color:var(--adf-group-cloud-input-caption-error-color);margin-top:-10px;position:absolute;height:20px}.adf-cloud-group-error-message{padding-right:8px;height:16px;line-height:1.33;width:auto}\n"] }]
362
+ ], encapsulation: ViewEncapsulation.None, template: "<form>\n <mat-form-field class=\"adf-cloud-group\" [class.adf-invalid]=\"hasError() && isDirty()\">\n <ng-content select=\"[label]\"></ng-content>\n <mat-chip-grid #groupChipList [disabled]=\"isReadonly() || isValidationLoading()\" data-automation-id=\"adf-cloud-group-chip-list\">\n <mat-chip-row\n *ngFor=\"let group of selectedGroups\"\n [removable]=\"!(group.readonly)\"\n [attr.data-automation-id]=\"'adf-cloud-group-chip-' + group.name\"\n (removed)=\"onRemove(group)\"\n title=\"{{ (group.readonly ? 'ADF_CLOUD_GROUPS.MANDATORY' : '') | translate }}\">\n {{group.name}}\n <mat-icon\n *ngIf=\"!(group.readonly || readOnly)\"\n matChipRemove [attr.data-automation-id]=\"'adf-cloud-group-chip-remove-icon-' + group.name\">\n cancel\n </mat-icon>\n </mat-chip-row>\n <input [disabled]=\"isReadonly()\" matInput\n [formControl]=\"searchGroupsControl\"\n [matAutocomplete]=\"auto\"\n [matChipInputFor]=\"groupChipList\"\n [placeholder]=\"title | translate\"\n [required]=\"required\"\n (focus)=\"setFocus(true)\"\n (blur)=\"setFocus(false); markAsTouched()\"\n class=\"adf-group-input\"\n data-automation-id=\"adf-cloud-group-search-input\" #groupInput>\n </mat-chip-grid>\n\n <mat-autocomplete\n autoActiveFirstOption\n #auto=\"matAutocomplete\"\n class=\"adf-cloud-group-list\"\n (optionSelected)=\"onSelect($event.option.value)\"\n [displayWith]=\"getDisplayName\"\n data-automation-id=\"adf-cloud-group-autocomplete\">\n <ng-container *ngIf=\"(searchGroups$ | async)?.length else noResults\">\n <mat-option *ngFor=\"let group of searchGroups$ | async; let i = index\" [value]=\"group\"\n [attr.data-automation-id]=\"'adf-cloud-group-chip-' + group.name\"\n class=\"adf-cloud-group-option-active\">\n <div\n class=\"adf-cloud-group-row\"\n id=\"adf-group-{{i}}\"\n data-automation-id=\"adf-cloud-group-row\">\n <button class=\"adf-group-short-name\" mat-fab>{{group | groupNameInitial }}</button>\n <span>{{group.name}}</span>\n </div>\n </mat-option>\n </ng-container>\n <ng-template #noResults>\n <mat-option *ngIf=\"searchGroupsControl.hasError('searchTypingError') && !searchLoading\" disabled\n class=\"adf-cloud-group-option-not-active\"\n data-automation-id=\"adf-cloud-group-no-results\">\n <span> {{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</span>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n </mat-form-field>\n <mat-progress-bar\n *ngIf=\"validationLoading\"\n mode=\"indeterminate\">\n </mat-progress-bar>\n\n <div class=\"adf-error-container\">\n <mat-error *ngIf=\"hasPreselectError() && !isValidationLoading()\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('pattern')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_PATTERN' | translate: { pattern: getValidationPattern() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('maxlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MAX_LENGTH' | translate: { requiredLength: getValidationMaxLength() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('minlength')\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.INVALID_MIN_LENGTH' | translate: { requiredLength: getValidationMinLength() } }}</div>\n </mat-error>\n <mat-error *ngIf=\"(searchGroupsControl.hasError('required') || groupChipsCtrl.hasError('required')) && isDirty()\"\n [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_PEOPLE_GROUPS.ERROR.REQUIRED' | translate }} </div>\n </mat-error>\n <mat-error *ngIf=\"searchGroupsControl.hasError('searchTypingError') && !this.isFocused\"\n data-automation-id=\"invalid-groups-typing-error\" [@transitionMessages]=\"subscriptAnimationState\" class=\"adf-error\">\n <mat-icon class=\"adf-error-icon\">error_outline</mat-icon>\n <div class=\"adf-error-text\">{{ 'ADF_CLOUD_GROUPS.ERROR.NOT_FOUND' | translate }}</div>\n </mat-error>\n </div>\n</form>\n", styles: [".adf-cloud-group-list{margin:5px 0;padding:10px 0}.adf-cloud-group-list .adf-cloud-group-row{place-content:center flex-start;align-items:center;display:flex}.adf-cloud-group-list .adf-cloud-group-row .adf-group-short-name{margin-right:20px;background:var(--theme-primary-color);width:40px;height:40px;box-shadow:none}.adf-cloud-group{width:100%}.adf-cloud-group-title{color:var(--adf-group-cloud-input-label-default-color)}.adf-cloud-group-title--focus{color:var(--adf-group-cloud-input-label-focus-color)}.adf-cloud-group-option-active:not(.adf-cloud-group:disabled){color:var(--adf-group-cloud-autosuggest-result-active-color)}.adf-cloud-group-option-not-active:not(.adf-cloud-group:active){background:inherit;color:var(--adf-group-cloud-autosuggest-result-disabled-color)}.adf-cloud-group-error{color:var(--adf-group-cloud-input-caption-error-color);margin-top:-10px;position:absolute;height:20px}.adf-cloud-group-error-message{padding-right:8px;height:16px;line-height:1.33;width:auto}\n"] }]
364
363
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
365
364
  type: Inject,
366
365
  args: [IDENTITY_GROUP_SERVICE_TOKEN]
@@ -396,4 +395,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
396
395
  type: ViewChild,
397
396
  args: ['groupInput']
398
397
  }] } });
399
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtY2xvdWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9ncm91cC9jb21wb25lbnRzL2dyb3VwLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZ3JvdXAvY29tcG9uZW50cy9ncm91cC1jbG91ZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFFVixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUlMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWpILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFjeEYsTUFBTSxPQUFPLG1CQUFtQjtJQXVGNUIsWUFFWSxvQkFBbUQ7UUFBbkQseUJBQW9CLEdBQXBCLG9CQUFvQixDQUErQjtRQWhGL0QsOENBQThDO1FBRTlDLFNBQUksR0FBMkIsUUFBUSxDQUFDO1FBRXhD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LGFBQWE7c0JBRFosTUFBTTtnQkFLUCxPQUFPO3NCQUROLE1BQU07Z0JBSUMsVUFBVTtzQkFEakIsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBJbnB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdHJpZ2dlciwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCBhbmltYXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzd2l0Y2hNYXAsIG1lcmdlTWFwLCBmaWx0ZXIsIHRhcCwgdGFrZVVudGlsLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgSWRlbnRpdHlHcm91cE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2lkZW50aXR5LWdyb3VwLm1vZGVsJztcbmltcG9ydCB7IElkZW50aXR5R3JvdXBTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaWRlbnRpdHktZ3JvdXAuc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSURFTlRJVFlfR1JPVVBfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uL3NlcnZpY2VzL2lkZW50aXR5LWdyb3VwLXNlcnZpY2UudG9rZW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1jbG91ZC1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dyb3VwLWNsb3VkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9ncm91cC1jbG91ZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcigndHJhbnNpdGlvbk1lc3NhZ2VzJywgW1xuICAgICAgICAgICAgc3RhdGUoJ2VudGVyJywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDAlKScgfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiBlbnRlcicsIFtzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTEwMCUpJyB9KSwgYW5pbWF0ZSgnMzAwbXMgY3ViaWMtYmV6aWVyKDAuNTUsIDAsIDAuNTUsIDAuMiknKV0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEdyb3VwQ2xvdWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKiogTmFtZSBvZiB0aGUgYXBwbGljYXRpb24uIElmIHNwZWNpZmllZCB0aGlzIHNob3dzIHRoZSBncm91cHMgd2hvIGhhdmUgYWNjZXNzIHRvIHRoZSBhcHAuICovXG4gICAgQElucHV0KClcbiAgICBhcHBOYW1lOiBzdHJpbmc7XG5cbiAgICAvKiogVGl0bGUgb2YgdGhlIGZpZWxkICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZTogc3RyaW5nO1xuXG4gICAgLyoqIEdyb3VwIHNlbGVjdGlvbiBtb2RlIChzaW5nbGUvbXVsdGlwbGUpLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9kZTogQ29tcG9uZW50U2VsZWN0aW9uTW9kZSA9ICdzaW5nbGUnO1xuXG4gICAgLyoqIEFycmF5IG9mIGdyb3VwcyB0byBiZSBwcmUtc2VsZWN0ZWQuIFRoaXMgcHJlLXNlbGVjdHMgYWxsIGdyb3VwcyBpbiBtdWx0aSBzZWxlY3Rpb24gbW9kZSBhbmQgb25seSB0aGUgZmlyc3QgZ3JvdXAgb2YgdGhlIGFycmF5IGluIHNpbmdsZSBzZWxlY3Rpb24gbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByZVNlbGVjdEdyb3VwczogSWRlbnRpdHlHcm91cE1vZGVsW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBlbmFibGVzIHRoZSB2YWxpZGF0aW9uIG9uIHRoZSBwcmVTZWxlY3RHcm91cHMgcGFzc2VkIGFzIGlucHV0LlxuICAgICAqIEluIGNhc2UgdGhlIGZsYWcgaXMgdHJ1ZSB0aGUgY29tcG9uZW50cyBjYWxsIHRoZSBpZGVudGl0eSBzZXJ2aWNlIHRvIHZlcmlmeSB0aGUgdmFsaWRpdHkgb2YgdGhlIGluZm9ybWF0aW9uIHBhc3NlZCBhcyBpbnB1dC5cbiAgICAgKiBPdGhlcndpc2UsIG5vIGNoZWNrIHdpbGwgYmUgZG9uZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZhbGlkYXRlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRoZSBpbmZvIGluIHJlYWRvbmx5IG1vZGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBNYXJrIHRoaXMgZmllbGQgYXMgcmVxdWlyZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvKiogRm9ybUNvbnRyb2wgdG8gbGlzdCBvZiBncm91cCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ3JvdXBDaGlwc0N0cmwgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKHsgdmFsdWU6ICcnLCBkaXNhYmxlZDogZmFsc2UgfSk7XG5cbiAgICAvKiogRm9ybUNvbnRyb2wgdG8gc2VhcmNoIHRoZSBncm91cCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VhcmNoR3JvdXBzQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiBmYWxzZSB9KTtcblxuICAgIC8qKiBSb2xlIG5hbWVzIG9mIHRoZSBncm91cHMgdG8gYmUgbGlzdGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcm9sZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgZ3JvdXAgaXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0R3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPElkZW50aXR5R3JvdXBNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBncm91cCBpcyByZW1vdmVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlbW92ZUdyb3VwID0gbmV3IEV2ZW50RW1pdHRlcjxJZGVudGl0eUdyb3VwTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgZ3JvdXAgc2VsZWN0aW9uIGNoYW5nZS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjaGFuZ2VkR3JvdXBzID0gbmV3IEV2ZW50RW1pdHRlcjxJZGVudGl0eUdyb3VwTW9kZWxbXT4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYW4gd2FybmluZyBvY2N1cnMuICovXG4gICAgQE91dHB1dCgpXG4gICAgd2FybmluZyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnZ3JvdXBJbnB1dCcpXG4gICAgcHJpdmF0ZSBncm91cElucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSBzZWFyY2hHcm91cHM6IElkZW50aXR5R3JvdXBNb2RlbFtdID0gW107XG4gICAgcHJpdmF0ZSBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIHNlbGVjdGVkR3JvdXBzOiBJZGVudGl0eUdyb3VwTW9kZWxbXSA9IFtdO1xuICAgIGludmFsaWRHcm91cHM6IElkZW50aXR5R3JvdXBNb2RlbFtdID0gW107XG5cbiAgICBzZWFyY2hHcm91cHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJZGVudGl0eUdyb3VwTW9kZWxbXT4odGhpcy5zZWFyY2hHcm91cHMpO1xuICAgIHN1YnNjcmlwdEFuaW1hdGlvblN0YXRlOiBzdHJpbmcgPSAnZW50ZXInO1xuICAgIGlzRm9jdXNlZDogYm9vbGVhbjtcbiAgICB0b3VjaGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICB2YWxpZGF0ZUdyb3Vwc01lc3NhZ2U6IHN0cmluZztcbiAgICBzZWFyY2hlZFZhbHVlID0gJyc7XG5cbiAgICB2YWxpZGF0aW9uTG9hZGluZyA9IGZhbHNlO1xuICAgIHNlYXJjaExvYWRpbmcgPSBmYWxzZTtcblxuICAgIHR5cGluZ1VuaXF1ZVZhbHVlTm90RW1wdHkkOiBPYnNlcnZhYmxlPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChJREVOVElUWV9HUk9VUF9TRVJWSUNFX1RPS0VOKVxuICAgICAgICBwcml2YXRlIGlkZW50aXR5R3JvdXBTZXJ2aWNlOiBJZGVudGl0eUdyb3VwU2VydmljZUludGVyZmFjZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRTZWFyY2goKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc1ByZXNlbGVjdGVkR3JvdXBzQ2hhbmdlZChjaGFuZ2VzKSB8fCB0aGlzLmhhc01vZGVDaGFuZ2VkKGNoYW5nZXMpIHx8IHRoaXMuaXNWYWxpZGF0aW9uQ2hhbmdlZChjaGFuZ2VzKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzUHJlU2VsZWN0R3JvdXBzKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcmVTZWxlY3RHcm91cHMoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNQcmVzZWxlY3RlZEdyb3Vwc0NsZWFyZWQoY2hhbmdlcykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkR3JvdXBzID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5pc1ZhbGlkYXRpb25FbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmludmFsaWRHcm91cHMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplU3RyZWFtKCk7XG4gICAgICAgIHRoaXMudHlwaW5nVW5pcXVlVmFsdWVOb3RFbXB0eSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgobmFtZTogc3RyaW5nKSA9PiB0aGlzLmlkZW50aXR5R3JvdXBTZXJ2aWNlLnNlYXJjaChuYW1lLCB7IHJvbGVzOiB0aGlzLnJvbGVzLCB3aXRoaW5BcHBsaWNhdGlvbjogdGhpcy5hcHBOYW1lIH0pKSxcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoZ3JvdXBzOiBJZGVudGl0eUdyb3VwTW9kZWxbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2VhcmNoR3JvdXBzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXBzO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZ3JvdXApID0+ICF0aGlzLmlzR3JvdXBBbHJlYWR5U2VsZWN0ZWQoZ3JvdXApKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VhcmNoZWRHcm91cDogSWRlbnRpdHlHcm91cE1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hHcm91cHMucHVzaChzZWFyY2hlZEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEdyb3VwcyQubmV4dCh0aGlzLnNlYXJjaEdyb3Vwcyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVTdHJlYW0oKSB7XG4gICAgICAgIGNvbnN0IHR5cGluZ1ZhbHVlRnJvbUNvbnRyb2wkID0gdGhpcy5zZWFyY2hHcm91cHNDb250cm9sLnZhbHVlQ2hhbmdlcztcblxuICAgICAgICBjb25zdCB0eXBpbmdWYWx1ZVR5cGVTdGluZyQgPSB0eXBpbmdWYWx1ZUZyb21Db250cm9sJC5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHR5cGluZ1ZhbHVlSGFuZGxlRXJyb3JNZXNzYWdlJCA9IHR5cGluZ1ZhbHVlVHlwZVN0aW5nJC5waXBlKFxuICAgICAgICAgICAgdGFwKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VHlwaW5nRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHR5cGluZ1ZhbHVlRGVib3VuY2VkVW5pcXVlJCA9IHR5cGluZ1ZhbHVlSGFuZGxlRXJyb3JNZXNzYWdlJC5waXBlKGRlYm91bmNlVGltZSg1MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICAgICAgICB0aGlzLnR5cGluZ1VuaXF1ZVZhbHVlTm90RW1wdHkkID0gdHlwaW5nVmFsdWVEZWJvdW5jZWRVbmlxdWUkLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUudHJpbSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoR3JvdXBzQ29udHJvbC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEdyb3Vwc0NvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5yZXNldFNlYXJjaEdyb3VwcygpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNHcm91cEFscmVhZHlTZWxlY3RlZChncm91cDogSWRlbnRpdHlHcm91cE1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBzICYmIHRoaXMuc2VsZWN0ZWRHcm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWxlY3RlZEdyb3Vwcy5maW5kKChzZWxlY3RlZEdyb3VwOiBJZGVudGl0eUdyb3VwTW9kZWwpID0+IHNlbGVjdGVkR3JvdXAubmFtZSA9PT0gZ3JvdXAubmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiAhIXJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzZWFyY2hHcm91cChuYW1lOiBzdHJpbmcpOiBQcm9taXNlPElkZW50aXR5R3JvdXBNb2RlbD4ge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuaWRlbnRpdHlHcm91cFNlcnZpY2Uuc2VhcmNoKG5hbWUpLnRvUHJvbWlzZSgpKVswXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByZXNlbGVjdGVkR3JvdXBzKCk6IElkZW50aXR5R3JvdXBNb2RlbFtdIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVNb2RlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBbdGhpcy5wcmVTZWxlY3RHcm91cHNbMF1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlRHVwbGljYXRlZEdyb3Vwcyh0aGlzLnByZVNlbGVjdEdyb3Vwcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlUHJlc2VsZWN0R3JvdXBzKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHRoaXMuaW52YWxpZEdyb3VwcyA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5nZXRQcmVzZWxlY3RlZEdyb3VwcygpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCB0aGlzLnNlYXJjaEdyb3VwKGdyb3VwLm5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUHJlc2VsZWN0ZWRHcm91cEludmFsaWQoZ3JvdXAsIHZhbGlkYXRpb25SZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZEdyb3Vwcy5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZEdyb3Vwcy5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hlY2tQcmVzZWxlY3RWYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1ByZXNlbGVjdFZhbGlkYXRpb25FcnJvcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW52YWxpZEdyb3VwcyA9IHRoaXMucmVtb3ZlRHVwbGljYXRlZEdyb3Vwcyh0aGlzLmludmFsaWRHcm91cHMpO1xuXG4gICAgICAgIGlmICh0aGlzLmludmFsaWRHcm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUludmFsaWRHcm91cHNNZXNzYWdlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLndhcm5pbmcuZW1pdCh7XG4gICAgICAgICAgICBtZXNzYWdlOiAnSU5WQUxJRF9QUkVTRUxFQ1RFRF9HUk9VUFMnLFxuICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmludmFsaWRHcm91cHNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUludmFsaWRHcm91cHNNZXNzYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRlR3JvdXBzTWVzc2FnZSA9ICcnO1xuXG4gICAgICAgIHRoaXMuaW52YWxpZEdyb3Vwcy5mb3JFYWNoKChpbnZhbGlkR3JvdXA6IElkZW50aXR5R3JvdXBNb2RlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5pbnZhbGlkR3JvdXBzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlR3JvdXBzTWVzc2FnZSArPSBgJHtpbnZhbGlkR3JvdXAubmFtZX0gYDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUdyb3Vwc01lc3NhZ2UgKz0gYCR7aW52YWxpZEdyb3VwLm5hbWV9LCBgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRQcmVTZWxlY3RHcm91cHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5pc1NpbmdsZU1vZGUoKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IFt0aGlzLnByZVNlbGVjdEdyb3Vwc1swXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzID0gdGhpcy5yZW1vdmVEdXBsaWNhdGVkR3JvdXBzKHRoaXMucHJlU2VsZWN0R3JvdXBzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyb3VwQ2hpcHNDdHJsLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRHcm91cHNbMF0ubmFtZSk7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWRhdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlUHJlc2VsZWN0R3JvdXBzKCk7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25Mb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdChncm91cDogSWRlbnRpdHlHcm91cE1vZGVsKTogdm9pZCB7XG4gICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RHcm91cC5lbWl0KGdyb3VwKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXBsZU1vZGUoKSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0dyb3VwQWxyZWFkeVNlbGVjdGVkKGdyb3VwKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzLnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkR3JvdXBzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IFtncm91cF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3JvdXBJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaEdyb3Vwc0NvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgICAgICAgdGhpcy5ncm91cENoaXBzQ3RybFZhbHVlKHRoaXMuc2VsZWN0ZWRHcm91cHNbMF0ubmFtZSk7XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZEdyb3Vwcy5lbWl0KHRoaXMuc2VsZWN0ZWRHcm91cHMpO1xuICAgICAgICAgICAgdGhpcy5yZXNldFNlYXJjaEdyb3VwcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25SZW1vdmUoZ3JvdXBUb1JlbW92ZTogSWRlbnRpdHlHcm91cE1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlR3JvdXAuZW1pdChncm91cFRvUmVtb3ZlKTtcbiAgICAgICAgdGhpcy5yZW1vdmVHcm91cEZyb21TZWxlY3RlZChncm91cFRvUmVtb3ZlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VkR3JvdXBzLmVtaXQodGhpcy5zZWxlY3RlZEdyb3Vwcyk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5ncm91cENoaXBzQ3RybFZhbHVlKCcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBDaGlwc0N0cmxWYWx1ZSh0aGlzLnNlbGVjdGVkR3JvdXBzWzBdLm5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoR3JvdXBzQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLnNlYXJjaEdyb3Vwc0NvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWRhdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVHcm91cEZyb21WYWxpZGF0aW9uKGdyb3VwVG9SZW1vdmUpO1xuICAgICAgICAgICAgdGhpcy5jaGVja1ByZXNlbGVjdFZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNQcmVzZWxlY3RlZEdyb3VwSW52YWxpZChwcmVzZWxlY3RlZEdyb3VwOiBJZGVudGl0eUdyb3VwTW9kZWwsIHZhbGlkYXRlZEdyb3VwOiBJZGVudGl0eUdyb3VwTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHZhbGlkYXRlZEdyb3VwPy5uYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBwcmVzZWxlY3RlZEdyb3VwLm5hbWUgIT09IHZhbGlkYXRlZEdyb3VwLm5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUR1cGxpY2F0ZWRHcm91cHMoZ3JvdXBzOiBJZGVudGl0eUdyb3VwTW9kZWxbXSk6IElkZW50aXR5R3JvdXBNb2RlbFtdIHtcbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5maWx0ZXIoXG4gICAgICAgICAgICAoZ3JvdXAsIGluZGV4LCBzZWxmKSA9PiBpbmRleCA9PT0gc2VsZi5maW5kSW5kZXgoKGF1eEdyb3VwKSA9PiBncm91cC5pZCA9PT0gYXV4R3JvdXAuaWQgJiYgZ3JvdXAubmFtZSA9PT0gYXV4R3JvdXAubmFtZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdyb3VwQ2hpcHNDdHJsVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmdyb3VwQ2hpcHNDdHJsLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5ncm91cENoaXBzQ3RybC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLmdyb3VwQ2hpcHNDdHJsLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUdyb3VwRnJvbVNlbGVjdGVkKHsgaWQsIG5hbWUgfTogSWRlbnRpdHlHcm91cE1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluZGV4VG9SZW1vdmUgPSB0aGlzLnNlbGVjdGVkR3JvdXBzLmZpbmRJbmRleCgoZ3JvdXApID0+IGdyb3VwLmlkID09PSBpZCAmJiBncm91cC5uYW1lID09PSBuYW1lKTtcblxuICAgICAgICBpZiAoaW5kZXhUb1JlbW92ZSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMuc3BsaWNlKGluZGV4VG9SZW1vdmUsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVHcm91cEZyb21WYWxpZGF0aW9uKHsgaWQsIG5hbWUgfTogSWRlbnRpdHlHcm91cE1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGluZGV4VG9SZW1vdmUgPSB0aGlzLmludmFsaWRHcm91cHMuZmluZEluZGV4KChncm91cCkgPT4gZ3JvdXAuaWQgPT09IGlkICYmIGdyb3VwLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgICAgIGlmIChpbmRleFRvUmVtb3ZlICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5pbnZhbGlkR3JvdXBzLnNwbGljZShpbmRleFRvUmVtb3ZlLCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRTZWFyY2hHcm91cHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoR3JvdXBzID0gW107XG4gICAgICAgIHRoaXMuc2VhcmNoR3JvdXBzJC5uZXh0KHRoaXMuc2VhcmNoR3JvdXBzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU2luZ2xlU2VsZWN0aW9uUmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2luZ2xlTW9kZSgpICYmIHRoaXMuc2VsZWN0ZWRHcm91cHMubGVuZ3RoID09PSAxICYmIHRoaXMuc2VsZWN0ZWRHcm91cHNbMF0ucmVhZG9ubHkgPT09IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1NpbmdsZU1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdzaW5nbGUnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNdWx0aXBsZU1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdtdWx0aXBsZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNQcmVTZWxlY3RHcm91cHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZVNlbGVjdEdyb3VwcyAmJiB0aGlzLnByZVNlbGVjdEdyb3Vwcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzTW9kZUNoYW5nZWQoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gY2hhbmdlcz8ubW9kZSAmJiBjaGFuZ2VzLm1vZGUuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLm1vZGUucHJldmlvdXNWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmFsaWRhdGlvbkNoYW5nZWQoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gY2hhbmdlcz8udmFsaWRhdGUgJiYgY2hhbmdlcy52YWxpZGF0ZS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMudmFsaWRhdGUucHJldmlvdXNWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1ByZXNlbGVjdGVkR3JvdXBzQ2hhbmdlZChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjaGFuZ2VzPy5wcmVTZWxlY3RHcm91cHMgJiYgY2hhbmdlcy5wcmVTZWxlY3RHcm91cHMuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLnByZVNlbGVjdEdyb3Vwcy5wcmV2aW91c1ZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzUHJlc2VsZWN0ZWRHcm91cHNDbGVhcmVkKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNoYW5nZXM/LnByZVNlbGVjdEdyb3Vwcz8uY3VycmVudFZhbHVlLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFR5cGluZ0Vycm9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaEdyb3Vwc0NvbnRyb2wuc2V0RXJyb3JzKHtcbiAgICAgICAgICAgIHNlYXJjaFR5cGluZ0Vycm9yOiB0cnVlLFxuICAgICAgICAgICAgLi4udGhpcy5zZWFyY2hHcm91cHNDb250cm9sLmVycm9yc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYXNQcmVzZWxlY3RFcnJvcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZEdyb3VwcyAmJiB0aGlzLmludmFsaWRHcm91cHMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBpc1JlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkT25seSB8fCB0aGlzLmlzU2luZ2xlU2VsZWN0aW9uUmVhZG9ubHkoKTtcbiAgICB9XG5cbiAgICBnZXREaXNwbGF5TmFtZShncm91cDogSWRlbnRpdHlHcm91cE1vZGVsKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGdyb3VwPy5uYW1lIHx8ICcnO1xuICAgIH1cblxuICAgIGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnNlYXJjaEdyb3Vwc0NvbnRyb2wuZXJyb3JzO1xuICAgIH1cblxuICAgIGlzVmFsaWRhdGlvbkxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRhdGlvbkVuYWJsZWQoKSAmJiB0aGlzLnZhbGlkYXRpb25Mb2FkaW5nO1xuICAgIH1cblxuICAgIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaXNUb3VjaGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b3VjaGVkO1xuICAgIH1cblxuICAgIGlzU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkR3JvdXBzICYmICEhdGhpcy5zZWxlY3RlZEdyb3Vwcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgaXNEaXJ0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNUb3VjaGVkKCkgJiYgIXRoaXMuaXNTZWxlY3RlZCgpO1xuICAgIH1cblxuICAgIHNldEZvY3VzKGlzRm9jdXNlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzRm9jdXNlZCA9IGlzRm9jdXNlZDtcbiAgICB9XG5cbiAgICBpc1ZhbGlkYXRpb25FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZSA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnZXRWYWxpZGF0aW9uUGF0dGVybigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hHcm91cHNDb250cm9sLmVycm9ycy5wYXR0ZXJuLnJlcXVpcmVkUGF0dGVybjtcbiAgICB9XG5cbiAgICBnZXRWYWxpZGF0aW9uTWF4TGVuZ3RoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaEdyb3Vwc0NvbnRyb2wuZXJyb3JzLm1heGxlbmd0aC5yZXF1aXJlZExlbmd0aDtcbiAgICB9XG5cbiAgICBnZXRWYWxpZGF0aW9uTWluTGVuZ3RoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaEdyb3Vwc0NvbnRyb2wuZXJyb3JzLm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxmb3JtPlxuICAgIDxtYXQtZm9ybS1maWVsZCBmbG9hdExhYmVsPVwiYXV0b1wiIGNsYXNzPVwiYWRmLWNsb3VkLWdyb3VwXCIgW2NsYXNzLmFkZi1pbnZhbGlkXT1cImhhc0Vycm9yKCkgJiYgaXNEaXJ0eSgpXCI+XG4gICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCIhaXNSZWFkb25seSgpXCIgaWQ9XCJhZGYtZ3JvdXAtY2xvdWQtdGl0bGUtaWRcIiBjbGFzcz1cImFkZi1jbG91ZC1ncm91cC10aXRsZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FkZi1jbG91ZC1ncm91cC10aXRsZS0tZm9jdXMnOiBpc0ZvY3VzZWR9XCI+e3sgKHRpdGxlIHx8ICdBREZfQ0xPVURfR1JPVVBTLlNFQVJDSC1HUk9VUCcpIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtY2hpcC1saXN0ICNncm91cENoaXBMaXN0IFtkaXNhYmxlZF09XCJpc1JlYWRvbmx5KCkgfHwgaXNWYWxpZGF0aW9uTG9hZGluZygpXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNsb3VkLWdyb3VwLWNoaXAtbGlzdFwiPlxuICAgICAgICAgICAgPG1hdC1jaGlwXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIHNlbGVjdGVkR3JvdXBzXCJcbiAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cIiEoZ3JvdXAucmVhZG9ubHkpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi1jbG91ZC1ncm91cC1jaGlwLScgKyBncm91cC5uYW1lXCJcbiAgICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJvblJlbW92ZShncm91cClcIlxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAoZ3JvdXAucmVhZG9ubHkgPyAnQURGX0NMT1VEX0dST1VQUy5NQU5EQVRPUlknIDogJycpIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICAgICAge3tncm91cC5uYW1lfX1cbiAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhKGdyb3VwLnJlYWRvbmx5IHx8IHJlYWRPbmx5KVwiXG4gICAgICAgICAgICAgICAgICAgIG1hdENoaXBSZW1vdmUgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZ3JvdXAtY2hpcC1yZW1vdmUtaWNvbi0nICsgZ3JvdXAubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICBjYW5jZWxcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtY2hpcD5cbiAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIiFpc1JlYWRvbmx5KClcIiBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hHcm91cHNDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiZ3JvdXBDaGlwTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwic2V0Rm9jdXModHJ1ZSlcIlxuICAgICAgICAgICAgICAgICAgIChibHVyKT1cInNldEZvY3VzKGZhbHNlKTsgbWFya0FzVG91Y2hlZCgpXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1ncm91cC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNsb3VkLWdyb3VwLXNlYXJjaC1pbnB1dFwiICNncm91cElucHV0PlxuICAgICAgICA8L21hdC1jaGlwLWxpc3Q+XG5cbiAgICAgICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvblxuICAgICAgICAgICAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtY2xvdWQtZ3JvdXAtbGlzdFwiXG4gICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25TZWxlY3QoJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImdldERpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1jbG91ZC1ncm91cC1hdXRvY29tcGxldGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoc2VhcmNoR3JvdXBzJCB8IGFzeW5jKT8ubGVuZ3RoIGVsc2Ugbm9SZXN1bHRzXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGdyb3VwIG9mIHNlYXJjaEdyb3VwcyQgfCBhc3luYzsgbGV0IGkgPSBpbmRleFwiIFt2YWx1ZV09XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZ3JvdXAtY2hpcC0nICsgZ3JvdXAubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtY2xvdWQtZ3JvdXAtb3B0aW9uLWFjdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1ncm91cC1yb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhZGYtZ3JvdXAte3tpfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNsb3VkLWdyb3VwLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZi1ncm91cC1zaG9ydC1uYW1lXCIgbWF0LWZhYj57e2dyb3VwIHwgZ3JvdXBOYW1lSW5pdGlhbCB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tncm91cC5uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1Jlc3VsdHM+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJzZWFyY2hHcm91cHNDb250cm9sLmhhc0Vycm9yKCdzZWFyY2hUeXBpbmdFcnJvcicpICYmICFzZWFyY2hMb2FkaW5nXCIgZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1ncm91cC1vcHRpb24tbm90LWFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNsb3VkLWdyb3VwLW5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7ICdBREZfQ0xPVURfR1JPVVBTLkVSUk9SLk5PVF9GT1VORCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1wcm9ncmVzcy1iYXJcbiAgICAgICAgKm5nSWY9XCJ2YWxpZGF0aW9uTG9hZGluZ1wiXG4gICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCI+XG4gICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxuXG4gICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci1jb250YWluZXJcIj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImhhc1ByZXNlbGVjdEVycm9yKCkgJiYgICFpc1ZhbGlkYXRpb25Mb2FkaW5nKClcIiBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJzdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiIGNsYXNzPVwiYWRmLWVycm9yXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPmVycm9yX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci10ZXh0XCI+e3sgJ0FERl9DTE9VRF9HUk9VUFMuRVJST1IuTk9UX0ZPVU5EJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInNlYXJjaEdyb3Vwc0NvbnRyb2wuaGFzRXJyb3IoJ3BhdHRlcm4nKVwiIFtAdHJhbnNpdGlvbk1lc3NhZ2VzXT1cInN1YnNjcmlwdEFuaW1hdGlvblN0YXRlXCIgY2xhc3M9XCJhZGYtZXJyb3JcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFkZi1lcnJvci1pY29uXCI+ZXJyb3Jfb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWVycm9yLXRleHRcIj57eyAnQURGX0NMT1VEX1BFT1BMRV9HUk9VUFMuRVJST1IuSU5WQUxJRF9QQVRURVJOJyB8IHRyYW5zbGF0ZTogeyBwYXR0ZXJuOiBnZXRWYWxpZGF0aW9uUGF0dGVybigpIH0gfX08L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2VhcmNoR3JvdXBzQ29udHJvbC5oYXNFcnJvcignbWF4bGVuZ3RoJylcIiBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJzdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiIGNsYXNzPVwiYWRmLWVycm9yXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPmVycm9yX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci10ZXh0XCI+e3sgJ0FERl9DTE9VRF9QRU9QTEVfR1JPVVBTLkVSUk9SLklOVkFMSURfTUFYX0xFTkdUSCcgfCB0cmFuc2xhdGU6IHsgcmVxdWlyZWRMZW5ndGg6IGdldFZhbGlkYXRpb25NYXhMZW5ndGgoKSB9IH19PC9kaXY+XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2VhcmNoR3JvdXBzQ29udHJvbC5oYXNFcnJvcignbWlubGVuZ3RoJylcIiBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJzdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiIGNsYXNzPVwiYWRmLWVycm9yXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPmVycm9yX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci10ZXh0XCI+e3sgJ0FERl9DTE9VRF9QRU9QTEVfR1JPVVBTLkVSUk9SLklOVkFMSURfTUlOX0xFTkdUSCcgfCB0cmFuc2xhdGU6IHsgcmVxdWlyZWRMZW5ndGg6IGdldFZhbGlkYXRpb25NaW5MZW5ndGgoKSB9IH19PC9kaXY+XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiKHNlYXJjaEdyb3Vwc0NvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykgfHwgZ3JvdXBDaGlwc0N0cmwuaGFzRXJyb3IoJ3JlcXVpcmVkJykpICYmIGlzRGlydHkoKVwiXG4gICAgICAgICAgICBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJzdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiIGNsYXNzPVwiYWRmLWVycm9yXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPmVycm9yX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci10ZXh0XCI+e3sgJ0FERl9DTE9VRF9QRU9QTEVfR1JPVVBTLkVSUk9SLlJFUVVJUkVEJyB8IHRyYW5zbGF0ZSB9fSA8L2Rpdj5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzZWFyY2hHcm91cHNDb250cm9sLmhhc0Vycm9yKCdzZWFyY2hUeXBpbmdFcnJvcicpICYmICF0aGlzLmlzRm9jdXNlZFwiXG4gICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJpbnZhbGlkLWdyb3Vwcy10eXBpbmctZXJyb3JcIiBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJzdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiIGNsYXNzPVwiYWRmLWVycm9yXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPmVycm9yX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci10ZXh0XCI+e3sgJ0FERl9DTE9VRF9HUk9VUFMuRVJST1IuTk9UX0ZPVU5EJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
398
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtY2xvdWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9ncm91cC9jb21wb25lbnRzL2dyb3VwLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZ3JvdXAvY29tcG9uZW50cy9ncm91cC1jbG91ZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFFVixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUlMLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWpILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQWN4RixNQUFNLE9BQU8sbUJBQW1CO0lBdUY1QixZQUVZLG9CQUFtRDtRQUFuRCx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQStCO1FBaEYvRCw4Q0FBOEM7UUFFOUMsU0FBSSxHQUEyQixRQUFRLENBQUM7UUFFeEMs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YUFBYTtzQkFEWixNQUFNO2dCQUtQLE9BQU87c0JBRE4sTUFBTTtnQkFJQyxVQUFVO3NCQURqQixTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIElucHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0cmlnZ2VyLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIGFuaW1hdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCwgbWVyZ2VNYXAsIGZpbHRlciwgdGFwLCB0YWtlVW50aWwsIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbXBvbmVudFNlbGVjdGlvbk1vZGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBJZGVudGl0eUdyb3VwTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvaWRlbnRpdHktZ3JvdXAubW9kZWwnO1xuaW1wb3J0IHsgSWRlbnRpdHlHcm91cFNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZGVudGl0eS1ncm91cC5zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJREVOVElUWV9HUk9VUF9TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vc2VydmljZXMvaWRlbnRpdHktZ3JvdXAtc2VydmljZS50b2tlbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLWdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXAtY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2dyb3VwLWNsb3VkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCd0cmFuc2l0aW9uTWVzc2FnZXMnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnZW50ZXInLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCUpJyB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IGVudGVyJywgW3N0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTAwJSknIH0pLCBhbmltYXRlKCczMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKScpXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgR3JvdXBDbG91ZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBOYW1lIG9mIHRoZSBhcHBsaWNhdGlvbi4gSWYgc3BlY2lmaWVkIHRoaXMgc2hvd3MgdGhlIGdyb3VwcyB3aG8gaGF2ZSBhY2Nlc3MgdG8gdGhlIGFwcC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcE5hbWU6IHN0cmluZztcblxuICAgIC8qKiBUaXRsZSBvZiB0aGUgZmllbGQgKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogR3JvdXAgc2VsZWN0aW9uIG1vZGUgKHNpbmdsZS9tdWx0aXBsZSkuICovXG4gICAgQElucHV0KClcbiAgICBtb2RlOiBDb21wb25lbnRTZWxlY3Rpb25Nb2RlID0gJ3NpbmdsZSc7XG5cbiAgICAvKiogQXJyYXkgb2YgZ3JvdXBzIHRvIGJlIHByZS1zZWxlY3RlZC4gVGhpcyBwcmUtc2VsZWN0cyBhbGwgZ3JvdXBzIGluIG11bHRpIHNlbGVjdGlvbiBtb2RlIGFuZCBvbmx5IHRoZSBmaXJzdCBncm91cCBvZiB0aGUgYXJyYXkgaW4gc2luZ2xlIHNlbGVjdGlvbiBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJlU2VsZWN0R3JvdXBzOiBJZGVudGl0eUdyb3VwTW9kZWxbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBmbGFnIGVuYWJsZXMgdGhlIHZhbGlkYXRpb24gb24gdGhlIHByZVNlbGVjdEdyb3VwcyBwYXNzZWQgYXMgaW5wdXQuXG4gICAgICogSW4gY2FzZSB0aGUgZmxhZyBpcyB0cnVlIHRoZSBjb21wb25lbnRzIGNhbGwgdGhlIGlkZW50aXR5IHNlcnZpY2UgdG8gdmVyaWZ5IHRoZSB2YWxpZGl0eSBvZiB0aGUgaW5mb3JtYXRpb24gcGFzc2VkIGFzIGlucHV0LlxuICAgICAqIE90aGVyd2lzZSwgbm8gY2hlY2sgd2lsbCBiZSBkb25lLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsaWRhdGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNob3cgdGhlIGluZm8gaW4gcmVhZG9ubHkgbW9kZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIE1hcmsgdGhpcyBmaWVsZCBhcyByZXF1aXJlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKiBGb3JtQ29udHJvbCB0byBsaXN0IG9mIGdyb3VwICovXG4gICAgQElucHV0KClcbiAgICBncm91cENoaXBzQ3RybCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiBmYWxzZSB9KTtcblxuICAgIC8qKiBGb3JtQ29udHJvbCB0byBzZWFyY2ggdGhlIGdyb3VwICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hHcm91cHNDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiAnJywgZGlzYWJsZWQ6IGZhbHNlIH0pO1xuXG4gICAgLyoqIFJvbGUgbmFtZXMgb2YgdGhlIGdyb3VwcyB0byBiZSBsaXN0ZWQuICovXG4gICAgQElucHV0KClcbiAgICByb2xlczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBncm91cCBpcyBzZWxlY3RlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RHcm91cCA9IG5ldyBFdmVudEVtaXR0ZXI8SWRlbnRpdHlHcm91cE1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGdyb3VwIGlzIHJlbW92ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVtb3ZlR3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPElkZW50aXR5R3JvdXBNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBncm91cCBzZWxlY3Rpb24gY2hhbmdlLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNoYW5nZWRHcm91cHMgPSBuZXcgRXZlbnRFbWl0dGVyPElkZW50aXR5R3JvdXBNb2RlbFtdPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhbiB3YXJuaW5nIG9jY3Vycy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB3YXJuaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdncm91cElucHV0JylcbiAgICBwcml2YXRlIGdyb3VwSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBwcml2YXRlIHNlYXJjaEdyb3VwczogSWRlbnRpdHlHcm91cE1vZGVsW10gPSBbXTtcbiAgICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgc2VsZWN0ZWRHcm91cHM6IElkZW50aXR5R3JvdXBNb2RlbFtdID0gW107XG4gICAgaW52YWxpZEdyb3VwczogSWRlbnRpdHlHcm91cE1vZGVsW10gPSBbXTtcblxuICAgIHNlYXJjaEdyb3VwcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElkZW50aXR5R3JvdXBNb2RlbFtdPih0aGlzLnNlYXJjaEdyb3Vwcyk7XG4gICAgc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGU6IHN0cmluZyA9ICdlbnRlcic7XG4gICAgaXNGb2N1c2VkOiBib29sZWFuO1xuICAgIHRvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHZhbGlkYXRlR3JvdXBzTWVzc2FnZTogc3RyaW5nO1xuICAgIHNlYXJjaGVkVmFsdWUgPSAnJztcblxuICAgIHZhbGlkYXRpb25Mb2FkaW5nID0gZmFsc2U7XG4gICAgc2VhcmNoTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgdHlwaW5nVW5pcXVlVmFsdWVOb3RFbXB0eSQ6IE9ic2VydmFibGU8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KElERU5USVRZX0dST1VQX1NFUlZJQ0VfVE9LRU4pXG4gICAgICAgIHByaXZhdGUgaWRlbnRpdHlHcm91cFNlcnZpY2U6IElkZW50aXR5R3JvdXBTZXJ2aWNlSW50ZXJmYWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdFNlYXJjaCgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUHJlc2VsZWN0ZWRHcm91cHNDaGFuZ2VkKGNoYW5nZXMpIHx8IHRoaXMuaGFzTW9kZUNoYW5nZWQoY2hhbmdlcykgfHwgdGhpcy5pc1ZhbGlkYXRpb25DaGFuZ2VkKGNoYW5nZXMpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNQcmVTZWxlY3RHcm91cHMoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFByZVNlbGVjdEdyb3VwcygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1ByZXNlbGVjdGVkR3JvdXBzQ2xlYXJlZChjaGFuZ2VzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmludmFsaWRHcm91cHMgPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRhdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZEdyb3VwcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVTdHJlYW0oKTtcbiAgICAgICAgdGhpcy50eXBpbmdVbmlxdWVWYWx1ZU5vdEVtcHR5JFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChuYW1lOiBzdHJpbmcpID0+IHRoaXMuaWRlbnRpdHlHcm91cFNlcnZpY2Uuc2VhcmNoKG5hbWUsIHsgcm9sZXM6IHRoaXMucm9sZXMsIHdpdGhpbkFwcGxpY2F0aW9uOiB0aGlzLmFwcE5hbWUgfSkpLFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKChncm91cHM6IElkZW50aXR5R3JvdXBNb2RlbFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXRTZWFyY2hHcm91cHMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBncm91cHM7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChncm91cCkgPT4gIXRoaXMuaXNHcm91cEFscmVhZHlTZWxlY3RlZChncm91cCkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzZWFyY2hlZEdyb3VwOiBJZGVudGl0eUdyb3VwTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEdyb3Vwcy5wdXNoKHNlYXJjaGVkR3JvdXApO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoR3JvdXBzJC5uZXh0KHRoaXMuc2VhcmNoR3JvdXBzKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVN0cmVhbSgpIHtcbiAgICAgICAgY29uc3QgdHlwaW5nVmFsdWVGcm9tQ29udHJvbCQgPSB0aGlzLnNlYXJjaEdyb3Vwc0NvbnRyb2wudmFsdWVDaGFuZ2VzO1xuXG4gICAgICAgIGNvbnN0IHR5cGluZ1ZhbHVlVHlwZVN0aW5nJCA9IHR5cGluZ1ZhbHVlRnJvbUNvbnRyb2wkLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdHlwaW5nVmFsdWVIYW5kbGVFcnJvck1lc3NhZ2UkID0gdHlwaW5nVmFsdWVUeXBlU3RpbmckLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUeXBpbmdFcnJvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdHlwaW5nVmFsdWVEZWJvdW5jZWRVbmlxdWUkID0gdHlwaW5nVmFsdWVIYW5kbGVFcnJvck1lc3NhZ2UkLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gICAgICAgIHRoaXMudHlwaW5nVW5pcXVlVmFsdWVOb3RFbXB0eSQgPSB0eXBpbmdWYWx1ZURlYm91bmNlZFVuaXF1ZSQucGlwZShcbiAgICAgICAgICAgIHRhcCgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS50cmltKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hHcm91cHNDb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoR3JvdXBzQ29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnJlc2V0U2VhcmNoR3JvdXBzKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0dyb3VwQWxyZWFkeVNlbGVjdGVkKGdyb3VwOiBJZGVudGl0eUdyb3VwTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cHMgJiYgdGhpcy5zZWxlY3RlZEdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNlbGVjdGVkR3JvdXBzLmZpbmQoKHNlbGVjdGVkR3JvdXA6IElkZW50aXR5R3JvdXBNb2RlbCkgPT4gc2VsZWN0ZWRHcm91cC5uYW1lID09PSBncm91cC5uYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuICEhcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNlYXJjaEdyb3VwKG5hbWU6IHN0cmluZyk6IFByb21pc2U8SWRlbnRpdHlHcm91cE1vZGVsPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5pZGVudGl0eUdyb3VwU2VydmljZS5zZWFyY2gobmFtZSkudG9Qcm9taXNlKCkpWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UHJlc2VsZWN0ZWRHcm91cHMoKTogSWRlbnRpdHlHcm91cE1vZGVsW10ge1xuICAgICAgICBpZiAodGhpcy5pc1NpbmdsZU1vZGUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLnByZVNlbGVjdEdyb3Vwc1swXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW1vdmVEdXBsaWNhdGVkR3JvdXBzKHRoaXMucHJlU2VsZWN0R3JvdXBzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVQcmVzZWxlY3RHcm91cHMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgdGhpcy5pbnZhbGlkR3JvdXBzID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiB0aGlzLmdldFByZXNlbGVjdGVkR3JvdXBzKCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHRoaXMuc2VhcmNoR3JvdXAoZ3JvdXAubmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQcmVzZWxlY3RlZEdyb3VwSW52YWxpZChncm91cCwgdmFsaWRhdGlvblJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkR3JvdXBzLnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkR3JvdXBzLnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGVja1ByZXNlbGVjdFZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrUHJlc2VsZWN0VmFsaWRhdGlvbkVycm9ycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkR3JvdXBzID0gdGhpcy5yZW1vdmVEdXBsaWNhdGVkR3JvdXBzKHRoaXMuaW52YWxpZEdyb3Vwcyk7XG5cbiAgICAgICAgaWYgKHRoaXMuaW52YWxpZEdyb3Vwcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlSW52YWxpZEdyb3Vwc01lc3NhZ2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud2FybmluZy5lbWl0KHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdJTlZBTElEX1BSRVNFTEVDVEVEX0dST1VQUycsXG4gICAgICAgICAgICBncm91cHM6IHRoaXMuaW52YWxpZEdyb3Vwc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlSW52YWxpZEdyb3Vwc01lc3NhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVHcm91cHNNZXNzYWdlID0gJyc7XG5cbiAgICAgICAgdGhpcy5pbnZhbGlkR3JvdXBzLmZvckVhY2goKGludmFsaWRHcm91cDogSWRlbnRpdHlHcm91cE1vZGVsLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLmludmFsaWRHcm91cHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVHcm91cHNNZXNzYWdlICs9IGAke2ludmFsaWRHcm91cC5uYW1lfSBgO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlR3JvdXBzTWVzc2FnZSArPSBgJHtpbnZhbGlkR3JvdXAubmFtZX0sIGA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgbG9hZFByZVNlbGVjdEdyb3VwcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwcyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLmlzU2luZ2xlTW9kZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzID0gW3RoaXMucHJlU2VsZWN0R3JvdXBzWzBdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMgPSB0aGlzLnJlbW92ZUR1cGxpY2F0ZWRHcm91cHModGhpcy5wcmVTZWxlY3RHcm91cHMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JvdXBDaGlwc0N0cmwuc2V0VmFsdWUodGhpcy5zZWxlY3RlZEdyb3Vwc1swXS5uYW1lKTtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZGF0aW9uRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25Mb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVQcmVzZWxlY3RHcm91cHMoKTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VsZWN0KGdyb3VwOiBJZGVudGl0eUdyb3VwTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKGdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEdyb3VwLmVtaXQoZ3JvdXApO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc011bHRpcGxlTW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzR3JvdXBBbHJlYWR5U2VsZWN0ZWQoZ3JvdXApKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cHMucHVzaChncm91cCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmludmFsaWRHcm91cHMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBzID0gW2dyb3VwXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncm91cElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoR3JvdXBzQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwQ2hpcHNDdHJsVmFsdWUodGhpcy5zZWxlY3RlZEdyb3Vwc1swXS5uYW1lKTtcblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkR3JvdXBzLmVtaXQodGhpcy5zZWxlY3RlZEdyb3Vwcyk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VhcmNoR3JvdXBzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJlbW92ZShncm91cFRvUmVtb3ZlOiBJZGVudGl0eUdyb3VwTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVHcm91cC5lbWl0KGdyb3VwVG9SZW1vdmUpO1xuICAgICAgICB0aGlzLnJlbW92ZUdyb3VwRnJvbVNlbGVjdGVkKGdyb3VwVG9SZW1vdmUpO1xuICAgICAgICB0aGlzLmNoYW5nZWRHcm91cHMuZW1pdCh0aGlzLnNlbGVjdGVkR3JvdXBzKTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwQ2hpcHNDdHJsVmFsdWUoJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ncm91cENoaXBzQ3RybFZhbHVlKHRoaXMuc2VsZWN0ZWRHcm91cHNbMF0ubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hHcm91cHNDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuc2VhcmNoR3JvdXBzQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZGF0aW9uRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUdyb3VwRnJvbVZhbGlkYXRpb24oZ3JvdXBUb1JlbW92ZSk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrUHJlc2VsZWN0VmFsaWRhdGlvbkVycm9ycygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ByZXNlbGVjdGVkR3JvdXBJbnZhbGlkKHByZXNlbGVjdGVkR3JvdXA6IElkZW50aXR5R3JvdXBNb2RlbCwgdmFsaWRhdGVkR3JvdXA6IElkZW50aXR5R3JvdXBNb2RlbCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodmFsaWRhdGVkR3JvdXA/Lm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHByZXNlbGVjdGVkR3JvdXAubmFtZSAhPT0gdmFsaWRhdGVkR3JvdXAubmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlRHVwbGljYXRlZEdyb3Vwcyhncm91cHM6IElkZW50aXR5R3JvdXBNb2RlbFtdKTogSWRlbnRpdHlHcm91cE1vZGVsW10ge1xuICAgICAgICByZXR1cm4gZ3JvdXBzLmZpbHRlcihcbiAgICAgICAgICAgIChncm91cCwgaW5kZXgsIHNlbGYpID0+IGluZGV4ID09PSBzZWxmLmZpbmRJbmRleCgoYXV4R3JvdXApID0+IGdyb3VwLmlkID09PSBhdXhHcm91cC5pZCAmJiBncm91cC5uYW1lID09PSBhdXhHcm91cC5uYW1lKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ3JvdXBDaGlwc0N0cmxWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZ3JvdXBDaGlwc0N0cmwuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmdyb3VwQ2hpcHNDdHJsLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIHRoaXMuZ3JvdXBDaGlwc0N0cmwubWFya0FzVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlR3JvdXBGcm9tU2VsZWN0ZWQoeyBpZCwgbmFtZSB9OiBJZGVudGl0eUdyb3VwTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXhUb1JlbW92ZSA9IHRoaXMuc2VsZWN0ZWRHcm91cHMuZmluZEluZGV4KChncm91cCkgPT4gZ3JvdXAuaWQgPT09IGlkICYmIGdyb3VwLm5hbWUgPT09IG5hbWUpO1xuXG4gICAgICAgIGlmIChpbmRleFRvUmVtb3ZlICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3Vwcy5zcGxpY2UoaW5kZXhUb1JlbW92ZSwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUdyb3VwRnJvbVZhbGlkYXRpb24oeyBpZCwgbmFtZSB9OiBJZGVudGl0eUdyb3VwTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXhUb1JlbW92ZSA9IHRoaXMuaW52YWxpZEdyb3Vwcy5maW5kSW5kZXgoKGdyb3VwKSA9PiBncm91cC5pZCA9PT0gaWQgJiYgZ3JvdXAubmFtZSA9PT0gbmFtZSk7XG5cbiAgICAgICAgaWYgKGluZGV4VG9SZW1vdmUgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmludmFsaWRHcm91cHMuc3BsaWNlKGluZGV4VG9SZW1vdmUsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFNlYXJjaEdyb3VwcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hHcm91cHMgPSBbXTtcbiAgICAgICAgdGhpcy5zZWFyY2hHcm91cHMkLm5leHQodGhpcy5zZWFyY2hHcm91cHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTaW5nbGVTZWxlY3Rpb25SZWFkb25seSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTaW5nbGVNb2RlKCkgJiYgdGhpcy5zZWxlY3RlZEdyb3Vwcy5sZW5ndGggPT09IDEgJiYgdGhpcy5zZWxlY3RlZEdyb3Vwc1swXS5yZWFkb25seSA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzU2luZ2xlTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3NpbmdsZSc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc011bHRpcGxlTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ211bHRpcGxlJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1ByZVNlbGVjdEdyb3VwcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJlU2VsZWN0R3JvdXBzICYmIHRoaXMucHJlU2VsZWN0R3JvdXBzLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNNb2RlQ2hhbmdlZChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjaGFuZ2VzPy5tb2RlICYmIGNoYW5nZXMubW9kZS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMubW9kZS5wcmV2aW91c1ZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZGF0aW9uQ2hhbmdlZChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjaGFuZ2VzPy52YWxpZGF0ZSAmJiBjaGFuZ2VzLnZhbGlkYXRlLmN1cnJlbnRWYWx1ZSAhPT0gY2hhbmdlcy52YWxpZGF0ZS5wcmV2aW91c1ZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzUHJlc2VsZWN0ZWRHcm91cHNDaGFuZ2VkKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNoYW5nZXM/LnByZVNlbGVjdEdyb3VwcyAmJiBjaGFuZ2VzLnByZVNlbGVjdEdyb3Vwcy5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMucHJlU2VsZWN0R3JvdXBzLnByZXZpb3VzVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNQcmVzZWxlY3RlZEdyb3Vwc0NsZWFyZWQoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gY2hhbmdlcz8ucHJlU2VsZWN0R3JvdXBzPy5jdXJyZW50VmFsdWUubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VHlwaW5nRXJyb3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoR3JvdXBzQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgc2VhcmNoVHlwaW5nRXJyb3I6IHRydWUsXG4gICAgICAgICAgICAuLi50aGlzLnNlYXJjaEdyb3Vwc0NvbnRyb2wuZXJyb3JzXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGhhc1ByZXNlbGVjdEVycm9yKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnZhbGlkR3JvdXBzICYmIHRoaXMuaW52YWxpZEdyb3Vwcy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGlzUmVhZG9ubHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRPbmx5IHx8IHRoaXMuaXNTaW5nbGVTZWxlY3Rpb25SZWFkb25seSgpO1xuICAgIH1cblxuICAgIGdldERpc3BsYXlOYW1lKGdyb3VwOiBJZGVudGl0eUdyb3VwTW9kZWwpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZ3JvdXA/Lm5hbWUgfHwgJyc7XG4gICAgfVxuXG4gICAgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VhcmNoR3JvdXBzQ29udHJvbC5lcnJvcnM7XG4gICAgfVxuXG4gICAgaXNWYWxpZGF0aW9uTG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZGF0aW9uRW5hYmxlZCgpICYmIHRoaXMudmFsaWRhdGlvbkxvYWRpbmc7XG4gICAgfVxuXG4gICAgbWFya0FzVG91Y2hlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b3VjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpc1RvdWNoZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvdWNoZWQ7XG4gICAgfVxuXG4gICAgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRHcm91cHMgJiYgISF0aGlzLnNlbGVjdGVkR3JvdXBzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBpc0RpcnR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1RvdWNoZWQoKSAmJiAhdGhpcy5pc1NlbGVjdGVkKCk7XG4gICAgfVxuXG4gICAgc2V0Rm9jdXMoaXNGb2N1c2VkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkID0gaXNGb2N1c2VkO1xuICAgIH1cblxuICAgIGlzVmFsaWRhdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlID09PSB0cnVlO1xuICAgIH1cblxuICAgIGdldFZhbGlkYXRpb25QYXR0ZXJuKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaEdyb3Vwc0NvbnRyb2wuZXJyb3JzLnBhdHRlcm4ucmVxdWlyZWRQYXR0ZXJuO1xuICAgIH1cblxuICAgIGdldFZhbGlkYXRpb25NYXhMZW5ndGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoR3JvdXBzQ29udHJvbC5lcnJvcnMubWF4bGVuZ3RoLnJlcXVpcmVkTGVuZ3RoO1xuICAgIH1cblxuICAgIGdldFZhbGlkYXRpb25NaW5MZW5ndGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoR3JvdXBzQ29udHJvbC5lcnJvcnMubWlubGVuZ3RoLnJlcXVpcmVkTGVuZ3RoO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGZvcm0+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiYWRmLWNsb3VkLWdyb3VwXCIgW2NsYXNzLmFkZi1pbnZhbGlkXT1cImhhc0Vycm9yKCkgJiYgaXNEaXJ0eSgpXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsYWJlbF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxtYXQtY2hpcC1ncmlkICNncm91cENoaXBMaXN0IFtkaXNhYmxlZF09XCJpc1JlYWRvbmx5KCkgfHwgaXNWYWxpZGF0aW9uTG9hZGluZygpXCIgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNsb3VkLWdyb3VwLWNoaXAtbGlzdFwiPlxuICAgICAgICAgICAgPG1hdC1jaGlwLXJvd1xuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBncm91cCBvZiBzZWxlY3RlZEdyb3Vwc1wiXG4gICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCIhKGdyb3VwLnJlYWRvbmx5KVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZ3JvdXAtY2hpcC0nICsgZ3JvdXAubmFtZVwiXG4gICAgICAgICAgICAgICAgKHJlbW92ZWQpPVwib25SZW1vdmUoZ3JvdXApXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7IChncm91cC5yZWFkb25seSA/ICdBREZfQ0xPVURfR1JPVVBTLk1BTkRBVE9SWScgOiAnJykgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgICB7e2dyb3VwLm5hbWV9fVxuICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiEoZ3JvdXAucmVhZG9ubHkgfHwgcmVhZE9ubHkpXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0Q2hpcFJlbW92ZSBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi1jbG91ZC1ncm91cC1jaGlwLXJlbW92ZS1pY29uLScgKyBncm91cC5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbFxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L21hdC1jaGlwLXJvdz5cbiAgICAgICAgICAgIDxpbnB1dCBbZGlzYWJsZWRdPVwiaXNSZWFkb25seSgpXCIgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoR3JvdXBzQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImdyb3VwQ2hpcExpc3RcIlxuICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0aXRsZSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwic2V0Rm9jdXModHJ1ZSlcIlxuICAgICAgICAgICAgICAgICAgIChibHVyKT1cInNldEZvY3VzKGZhbHNlKTsgbWFya0FzVG91Y2hlZCgpXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1ncm91cC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNsb3VkLWdyb3VwLXNlYXJjaC1pbnB1dFwiICNncm91cElucHV0PlxuICAgICAgICA8L21hdC1jaGlwLWdyaWQ+XG5cbiAgICAgICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgICAgIGF1dG9BY3RpdmVGaXJzdE9wdGlvblxuICAgICAgICAgICAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtY2xvdWQtZ3JvdXAtbGlzdFwiXG4gICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25TZWxlY3QoJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgW2Rpc3BsYXlXaXRoXT1cImdldERpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1jbG91ZC1ncm91cC1hdXRvY29tcGxldGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoc2VhcmNoR3JvdXBzJCB8IGFzeW5jKT8ubGVuZ3RoIGVsc2Ugbm9SZXN1bHRzXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGdyb3VwIG9mIHNlYXJjaEdyb3VwcyQgfCBhc3luYzsgbGV0IGkgPSBpbmRleFwiIFt2YWx1ZV09XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZ3JvdXAtY2hpcC0nICsgZ3JvdXAubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtY2xvdWQtZ3JvdXAtb3B0aW9uLWFjdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1ncm91cC1yb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhZGYtZ3JvdXAte3tpfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNsb3VkLWdyb3VwLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZi1ncm91cC1zaG9ydC1uYW1lXCIgbWF0LWZhYj57e2dyb3VwIHwgZ3JvdXBOYW1lSW5pdGlhbCB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tncm91cC5uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1Jlc3VsdHM+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJzZWFyY2hHcm91cHNDb250cm9sLmhhc0Vycm9yKCdzZWFyY2hUeXBpbmdFcnJvcicpICYmICFzZWFyY2hMb2FkaW5nXCIgZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1ncm91cC1vcHRpb24tbm90LWFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWNsb3VkLWdyb3VwLW5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7ICdBREZfQ0xPVURfR1JPVVBTLkVSUk9SLk5PVF9GT1VORCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1wcm9ncmVzcy1iYXJcbiAgICAgICAgKm5nSWY9XCJ2YWxpZGF0aW9uTG9hZGluZ1wiXG4gICAgICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCI+XG4gICAgPC9tYXQtcHJvZ3Jlc3MtYmFyPlxuXG4gICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci1jb250YWluZXJcIj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImhhc1ByZXNlbGVjdEVycm9yKCkgJiYgICFpc1ZhbGlkYXRpb25Mb2FkaW5nKClcIiBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJzdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiIGNsYXNzPVwiYWRmLWVycm9yXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPmVycm9yX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci10ZXh0XCI+e3sgJ0FERl9DTE9VRF9HUk9VUFMuRVJST1IuTk9UX0ZPVU5EJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInNlYXJjaEdyb3Vwc0NvbnRyb2wuaGFzRXJyb3IoJ3BhdHRlcm4nKVwiIFtAdHJhbnNpdGlvbk1lc3NhZ2VzXT1cInN1YnNjcmlwdEFuaW1hdGlvblN0YXRlXCIgY2xhc3M9XCJhZGYtZXJyb3JcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFkZi1lcnJvci1pY29uXCI+ZXJyb3Jfb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWVycm9yLXRleHRcIj57eyAnQURGX0NMT1VEX1BFT1BMRV9HUk9VUFMuRVJST1IuSU5WQUxJRF9QQVRURVJOJyB8IHRyYW5zbGF0ZTogeyBwYXR0ZXJuOiBnZXRWYWxpZGF0aW9uUGF0dGVybigpIH0gfX08L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2VhcmNoR3JvdXBzQ29udHJvbC5oYXNFcnJvcignbWF4bGVuZ3RoJylcIiBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJzdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiIGNsYXNzPVwiYWRmLWVycm9yXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPmVycm9yX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci10ZXh0XCI+e3sgJ0FERl9DTE9VRF9QRU9QTEVfR1JPVVBTLkVSUk9SLklOVkFMSURfTUFYX0xFTkdUSCcgfCB0cmFuc2xhdGU6IHsgcmVxdWlyZWRMZW5ndGg6IGdldFZhbGlkYXRpb25NYXhMZW5ndGgoKSB9IH19PC9kaXY+XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2VhcmNoR3JvdXBzQ29udHJvbC5oYXNFcnJvcignbWlubGVuZ3RoJylcIiBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJzdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiIGNsYXNzPVwiYWRmLWVycm9yXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPmVycm9yX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci10ZXh0XCI+e3sgJ0FERl9DTE9VRF9QRU9QTEVfR1JPVVBTLkVSUk9SLklOVkFMSURfTUlOX0xFTkdUSCcgfCB0cmFuc2xhdGU6IHsgcmVxdWlyZWRMZW5ndGg6IGdldFZhbGlkYXRpb25NaW5MZW5ndGgoKSB9IH19PC9kaXY+XG4gICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiKHNlYXJjaEdyb3Vwc0NvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykgfHwgZ3JvdXBDaGlwc0N0cmwuaGFzRXJyb3IoJ3JlcXVpcmVkJykpICYmIGlzRGlydHkoKVwiXG4gICAgICAgICAgICBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJzdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiIGNsYXNzPVwiYWRmLWVycm9yXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPmVycm9yX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci10ZXh0XCI+e3sgJ0FERl9DTE9VRF9QRU9QTEVfR1JPVVBTLkVSUk9SLlJFUVVJUkVEJyB8IHRyYW5zbGF0ZSB9fSA8L2Rpdj5cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzZWFyY2hHcm91cHNDb250cm9sLmhhc0Vycm9yKCdzZWFyY2hUeXBpbmdFcnJvcicpICYmICF0aGlzLmlzRm9jdXNlZFwiXG4gICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJpbnZhbGlkLWdyb3Vwcy10eXBpbmctZXJyb3JcIiBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJzdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiIGNsYXNzPVwiYWRmLWVycm9yXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhZGYtZXJyb3ItaWNvblwiPmVycm9yX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1lcnJvci10ZXh0XCI+e3sgJ0FERl9DTE9VRF9HUk9VUFMuRVJST1IuTk9UX0ZPVU5EJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
@@ -26,20 +26,20 @@ import { IdentityGroupService } from './services/identity-group.service';
26
26
  import * as i0 from "@angular/core";
27
27
  export class GroupCloudModule {
28
28
  }
29
- GroupCloudModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GroupCloudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
30
- GroupCloudModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: GroupCloudModule, declarations: [GroupCloudComponent, InitialGroupNamePipe], imports: [CommonModule,
29
+ GroupCloudModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GroupCloudModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
30
+ GroupCloudModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: GroupCloudModule, declarations: [GroupCloudComponent, InitialGroupNamePipe], imports: [CommonModule,
31
31
  MaterialModule,
32
32
  FormsModule,
33
33
  ReactiveFormsModule,
34
34
  CoreModule], exports: [GroupCloudComponent, InitialGroupNamePipe] });
35
- GroupCloudModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GroupCloudModule, providers: [
35
+ GroupCloudModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GroupCloudModule, providers: [
36
36
  { provide: IDENTITY_GROUP_SERVICE_TOKEN, useExisting: IdentityGroupService }
37
37
  ], imports: [CommonModule,
38
38
  MaterialModule,
39
39
  FormsModule,
40
40
  ReactiveFormsModule,
41
41
  CoreModule] });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: GroupCloudModule, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GroupCloudModule, decorators: [{
43
43
  type: NgModule,
44
44
  args: [{
45
45
  imports: [
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
56
56
  exports: [GroupCloudComponent, InitialGroupNamePipe]
57
57
  }]
58
58
  }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtY2xvdWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9ncm91cC9ncm91cC1jbG91ZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBZ0J6RSxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBTlYsbUJBQW1CLEVBQUUsb0JBQW9CLGFBTnBELFlBQVk7UUFDWixjQUFjO1FBQ2QsV0FBVztRQUNYLG1CQUFtQjtRQUNuQixVQUFVLGFBTUosbUJBQW1CLEVBQUUsb0JBQW9COzhHQUUxQyxnQkFBZ0IsYUFMZDtRQUNQLEVBQUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtLQUMvRSxZQVRHLFlBQVk7UUFDWixjQUFjO1FBQ2QsV0FBVztRQUNYLG1CQUFtQjtRQUNuQixVQUFVOzJGQVFMLGdCQUFnQjtrQkFkNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixVQUFVO3FCQUNiO29CQUNELFlBQVksRUFBRSxDQUFDLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDO29CQUN6RCxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFO3FCQUMvRTtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQztpQkFDdkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgR3JvdXBDbG91ZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9ncm91cC1jbG91ZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5pdGlhbEdyb3VwTmFtZVBpcGUgfSBmcm9tICcuL3BpcGUvZ3JvdXAtaW5pdGlhbC5waXBlJztcbmltcG9ydCB7IElERU5USVRZX0dST1VQX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuL3NlcnZpY2VzL2lkZW50aXR5LWdyb3VwLXNlcnZpY2UudG9rZW4nO1xuaW1wb3J0IHsgSWRlbnRpdHlHcm91cFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2lkZW50aXR5LWdyb3VwLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW0dyb3VwQ2xvdWRDb21wb25lbnQsIEluaXRpYWxHcm91cE5hbWVQaXBlXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBJREVOVElUWV9HUk9VUF9TRVJWSUNFX1RPS0VOLCB1c2VFeGlzdGluZzogSWRlbnRpdHlHcm91cFNlcnZpY2UgfVxuICAgIF0sXG4gICAgZXhwb3J0czogW0dyb3VwQ2xvdWRDb21wb25lbnQsIEluaXRpYWxHcm91cE5hbWVQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBHcm91cENsb3VkTW9kdWxlIHsgfVxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtY2xvdWQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9ncm91cC9ncm91cC1jbG91ZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0FBZ0J6RSxNQUFNLE9BQU8sZ0JBQWdCOzs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBTlYsbUJBQW1CLEVBQUUsb0JBQW9CLGFBTnBELFlBQVk7UUFDWixjQUFjO1FBQ2QsV0FBVztRQUNYLG1CQUFtQjtRQUNuQixVQUFVLGFBTUosbUJBQW1CLEVBQUUsb0JBQW9COytHQUUxQyxnQkFBZ0IsYUFMZDtRQUNQLEVBQUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtLQUMvRSxZQVRHLFlBQVk7UUFDWixjQUFjO1FBQ2QsV0FBVztRQUNYLG1CQUFtQjtRQUNuQixVQUFVOzRGQVFMLGdCQUFnQjtrQkFkNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixVQUFVO3FCQUNiO29CQUNELFlBQVksRUFBRSxDQUFDLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDO29CQUN6RCxTQUFTLEVBQUU7d0JBQ1AsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFO3FCQUMvRTtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxvQkFBb0IsQ0FBQztpQkFDdkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgR3JvdXBDbG91ZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9ncm91cC1jbG91ZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5pdGlhbEdyb3VwTmFtZVBpcGUgfSBmcm9tICcuL3BpcGUvZ3JvdXAtaW5pdGlhbC5waXBlJztcbmltcG9ydCB7IElERU5USVRZX0dST1VQX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuL3NlcnZpY2VzL2lkZW50aXR5LWdyb3VwLXNlcnZpY2UudG9rZW4nO1xuaW1wb3J0IHsgSWRlbnRpdHlHcm91cFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2lkZW50aXR5LWdyb3VwLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW0dyb3VwQ2xvdWRDb21wb25lbnQsIEluaXRpYWxHcm91cE5hbWVQaXBlXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBJREVOVElUWV9HUk9VUF9TRVJWSUNFX1RPS0VOLCB1c2VFeGlzdGluZzogSWRlbnRpdHlHcm91cFNlcnZpY2UgfVxuICAgIF0sXG4gICAgZXhwb3J0czogW0dyb3VwQ2xvdWRDb21wb25lbnQsIEluaXRpYWxHcm91cE5hbWVQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBHcm91cENsb3VkTW9kdWxlIHsgfVxuIl19
@@ -29,12 +29,12 @@ export class InitialGroupNamePipe {
29
29
  return groupName;
30
30
  }
31
31
  }
32
- InitialGroupNamePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: InitialGroupNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
33
- InitialGroupNamePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.3", ngImport: i0, type: InitialGroupNamePipe, name: "groupNameInitial" });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: InitialGroupNamePipe, decorators: [{
32
+ InitialGroupNamePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: InitialGroupNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
33
+ InitialGroupNamePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: InitialGroupNamePipe, name: "groupNameInitial" });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: InitialGroupNamePipe, decorators: [{
35
35
  type: Pipe,
36
36
  args: [{
37
37
  name: 'groupNameInitial'
38
38
  }]
39
39
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW5pdGlhbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9ncm91cC9waXBlL2dyb3VwLWluaXRpYWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLG9CQUFvQjtJQUU3QixTQUFTLENBQUMsS0FBeUI7UUFDL0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksS0FBSyxFQUFFO1lBQ1AsTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDL0Q7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsU0FBaUI7UUFDakMsU0FBUyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7O2lIQWJRLG9CQUFvQjsrR0FBcEIsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBSGhDLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGtCQUFrQjtpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElkZW50aXR5R3JvdXBNb2RlbCB9IGZyb20gJy4uL21vZGVscy9pZGVudGl0eS1ncm91cC5tb2RlbCc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JvdXBOYW1lSW5pdGlhbCdcbn0pXG5leHBvcnQgY2xhc3MgSW5pdGlhbEdyb3VwTmFtZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHRyYW5zZm9ybShncm91cDogSWRlbnRpdHlHcm91cE1vZGVsKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZ2V0SW5pdGlhbEdyb3VwTmFtZShncm91cC5uYW1lKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0SW5pdGlhbEdyb3VwTmFtZShncm91cE5hbWU6IHN0cmluZykge1xuICAgICAgICBncm91cE5hbWUgPSAoZ3JvdXBOYW1lID8gZ3JvdXBOYW1lWzBdIDogJycpO1xuICAgICAgICByZXR1cm4gZ3JvdXBOYW1lO1xuICAgIH1cbn1cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW5pdGlhbC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3Byb2Nlc3Mtc2VydmljZXMtY2xvdWQvc3JjL2xpYi9ncm91cC9waXBlL2dyb3VwLWluaXRpYWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLG9CQUFvQjtJQUU3QixTQUFTLENBQUMsS0FBeUI7UUFDL0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksS0FBSyxFQUFFO1lBQ1AsTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDL0Q7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsU0FBaUI7UUFDakMsU0FBUyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7O2tIQWJRLG9CQUFvQjtnSEFBcEIsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBSGhDLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGtCQUFrQjtpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElkZW50aXR5R3JvdXBNb2RlbCB9IGZyb20gJy4uL21vZGVscy9pZGVudGl0eS1ncm91cC5tb2RlbCc7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JvdXBOYW1lSW5pdGlhbCdcbn0pXG5leHBvcnQgY2xhc3MgSW5pdGlhbEdyb3VwTmFtZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHRyYW5zZm9ybShncm91cDogSWRlbnRpdHlHcm91cE1vZGVsKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZ2V0SW5pdGlhbEdyb3VwTmFtZShncm91cC5uYW1lKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0SW5pdGlhbEdyb3VwTmFtZShncm91cE5hbWU6IHN0cmluZykge1xuICAgICAgICBncm91cE5hbWUgPSAoZ3JvdXBOYW1lID8gZ3JvdXBOYW1lWzBdIDogJycpO1xuICAgICAgICByZXR1cm4gZ3JvdXBOYW1lO1xuICAgIH1cbn1cbiJdfQ==
@@ -80,10 +80,10 @@ export class IdentityGroupService {
80
80
  return `${this.appConfigService.get('bpmHost')}`;
81
81
  }
82
82
  }
83
- IdentityGroupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IdentityGroupService, deps: [{ token: i1.OAuth2Service }, { token: i1.AppConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
84
- IdentityGroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IdentityGroupService, providedIn: 'root' });
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: IdentityGroupService, decorators: [{
83
+ IdentityGroupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IdentityGroupService, deps: [{ token: i1.OAuth2Service }, { token: i1.AppConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
84
+ IdentityGroupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IdentityGroupService, providedIn: 'root' });
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IdentityGroupService, decorators: [{
86
86
  type: Injectable,
87
87
  args: [{ providedIn: 'root' }]
88
88
  }], ctorParameters: function () { return [{ type: i1.OAuth2Service }, { type: i1.AppConfigService }]; } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZ3JvdXAvc2VydmljZXMvaWRlbnRpdHktZ3JvdXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFLekMsTUFBTSw4QkFBOEIsR0FBRywwQkFBMEIsQ0FBQztBQUdsRSxNQUFNLE9BQU8sb0JBQW9CO0lBSTdCLFlBQ1ksYUFBNEIsRUFDNUIsZ0JBQWtDO1FBRGxDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFDM0MsQ0FBQztJQUVHLE1BQU0sQ0FBQyxJQUFZLEVBQUUsT0FBc0M7UUFDOUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3BCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO2FBQU0sSUFBSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEY7YUFBTSxJQUFJLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQyxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hFO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU8sMkJBQTJCLENBQUMsSUFBWSxFQUFFLEtBQWdCO1FBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWxDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQVksRUFBRSxlQUF1QixFQUFFLEtBQWlCO1FBQ2xGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztRQUVuRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLDhCQUE4QixZQUFZLENBQUM7UUFDL0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFZLEVBQUUsS0FBaUIsRUFBRSxlQUF3QjtRQUM3RSxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8saUNBQWlDLENBQUMsR0FBVyxFQUFFLE1BQWlCO1FBQ3BFLElBQUksTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELElBQUksY0FBYyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwRDtTQUNKO0lBQ0wsQ0FBQztJQUVPLDRCQUE0QixDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQzNELElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsS0FBZ0I7UUFDeEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFZLFlBQVk7UUFDcEIsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUNyRCxDQUFDOztpSEF2RVEsb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzJGQUNuQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlLCBPQXV0aDJTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJZGVudGl0eUdyb3VwU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4vaWRlbnRpdHktZ3JvdXAuc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWRlbnRpdHlHcm91cEZpbHRlckludGVyZmFjZSB9IGZyb20gJy4vaWRlbnRpdHktZ3JvdXAtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZGVudGl0eUdyb3VwTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvaWRlbnRpdHktZ3JvdXAubW9kZWwnO1xuXG5jb25zdCBJREVOVElUWV9NSUNST19TRVJWSUNFX0lOR1JFU1MgPSAnaWRlbnRpdHktYWRhcHRlci1zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJZGVudGl0eUdyb3VwU2VydmljZSBpbXBsZW1lbnRzIElkZW50aXR5R3JvdXBTZXJ2aWNlSW50ZXJmYWNlIHtcblxuICAgIHF1ZXJ5UGFyYW1zOiB7IHNlYXJjaDogc3RyaW5nOyBhcHBsaWNhdGlvbj86IHN0cmluZzsgcm9sZXM/OiBzdHJpbmcgW10gfTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG9BdXRoMlNlcnZpY2U6IE9BdXRoMlNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxuICAgICkge31cblxuICAgIHB1YmxpYyBzZWFyY2gobmFtZTogc3RyaW5nLCBmaWx0ZXJzPzogSWRlbnRpdHlHcm91cEZpbHRlckludGVyZmFjZSk6IE9ic2VydmFibGU8SWRlbnRpdHlHcm91cE1vZGVsW10+IHtcbiAgICAgICAgaWYgKG5hbWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcnM/LndpdGhpbkFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hHcm91cHNXaXRoaW5BcHAobmFtZSwgZmlsdGVycy53aXRoaW5BcHBsaWNhdGlvbiwgZmlsdGVycz8ucm9sZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcnM/LnJvbGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hHcm91cHNXaXRoR2xvYmFsUm9sZXMobmFtZSwgZmlsdGVycy5yb2xlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hHcm91cHNCeU5hbWUobmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNlYXJjaEdyb3Vwc0J5TmFtZShuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElkZW50aXR5R3JvdXBNb2RlbFtdPiB7XG4gICAgICAgIHRoaXMuYnVpbGRRdWVyeVBhcmFtKG5hbWUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmludm9rZUlkZW50aXR5R3JvdXBBcGkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlYXJjaEdyb3Vwc1dpdGhHbG9iYWxSb2xlcyhuYW1lOiBzdHJpbmcsIHJvbGVzOiBzdHJpbmcgW10pOiBPYnNlcnZhYmxlPElkZW50aXR5R3JvdXBNb2RlbFtdPiB7XG4gICAgICAgIHRoaXMuYnVpbGRRdWVyeVBhcmFtKG5hbWUsIHJvbGVzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VJZGVudGl0eUdyb3VwQXBpKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hHcm91cHNXaXRoaW5BcHAobmFtZTogc3RyaW5nLCBhcHBsaWNhdGlvbk5hbWU6IHN0cmluZywgcm9sZXM/OiBzdHJpbmcgW10pOiBPYnNlcnZhYmxlPElkZW50aXR5R3JvdXBNb2RlbFtdPiB7XG4gICAgICAgIHRoaXMuYnVpbGRRdWVyeVBhcmFtKG5hbWUsIHJvbGVzLCBhcHBsaWNhdGlvbk5hbWUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmludm9rZUlkZW50aXR5R3JvdXBBcGkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGludm9rZUlkZW50aXR5R3JvdXBBcGkoKTogT2JzZXJ2YWJsZTxJZGVudGl0eUdyb3VwTW9kZWxbXT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmlkZW50aXR5SG9zdH0vJHtJREVOVElUWV9NSUNST19TRVJWSUNFX0lOR1JFU1N9L3YxL2dyb3Vwc2A7XG4gICAgICAgIHJldHVybiB0aGlzLm9BdXRoMlNlcnZpY2UuZ2V0KHsgdXJsLCBxdWVyeVBhcmFtczogdGhpcy5xdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkUXVlcnlQYXJhbShuYW1lOiBzdHJpbmcsIHJvbGVzPzogc3RyaW5nIFtdLCBhcHBsaWNhdGlvbk5hbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IHsgc2VhcmNoOiBuYW1lIH07XG4gICAgICAgIHRoaXMuYWRkT3B0aW9uYWxWYWx1ZVRvUXVlcnlQYXJhbSgnYXBwbGljYXRpb24nLCBhcHBsaWNhdGlvbk5hbWUpO1xuICAgICAgICB0aGlzLmFkZE9wdGlvbmFsQ29tbWFWYWx1ZVRvUXVlcnlQYXJhbSgncm9sZScsIHJvbGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE9wdGlvbmFsQ29tbWFWYWx1ZVRvUXVlcnlQYXJhbShrZXk6IHN0cmluZywgdmFsdWVzOiBzdHJpbmcgW10pIHtcbiAgICAgICAgaWYgKHZhbHVlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzTm90RW1wdHkgPSB0aGlzLmZpbHRlck91dEVtcHR5VmFsdWUodmFsdWVzKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZXNOb3RFbXB0eT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXNba2V5XSA9IHZhbHVlc05vdEVtcHR5LmpvaW4oJywnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWRkT3B0aW9uYWxWYWx1ZVRvUXVlcnlQYXJhbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWU/LnRyaW0oKSkge1xuICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlck91dEVtcHR5VmFsdWUocm9sZXM6IHN0cmluZyBbXSk6IHN0cmluZyBbXSB7XG4gICAgICAgIHJldHVybiByb2xlcy5maWx0ZXIoIHJvbGUgPT4gcm9sZS50cmltKCkgPyB0cnVlIDogZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlkZW50aXR5SG9zdCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgnYnBtSG9zdCcpfWA7XG4gICAgfVxufVxuIl19
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktZ3JvdXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZ3JvdXAvc2VydmljZXMvaWRlbnRpdHktZ3JvdXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFLekMsTUFBTSw4QkFBOEIsR0FBRywwQkFBMEIsQ0FBQztBQUdsRSxNQUFNLE9BQU8sb0JBQW9CO0lBSTdCLFlBQ1ksYUFBNEIsRUFDNUIsZ0JBQWtDO1FBRGxDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFDM0MsQ0FBQztJQUVHLE1BQU0sQ0FBQyxJQUFZLEVBQUUsT0FBc0M7UUFDOUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3BCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO2FBQU0sSUFBSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEY7YUFBTSxJQUFJLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQyxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hFO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU8sMkJBQTJCLENBQUMsSUFBWSxFQUFFLEtBQWdCO1FBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWxDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQVksRUFBRSxlQUF1QixFQUFFLEtBQWlCO1FBQ2xGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxlQUFlLENBQUMsQ0FBQztRQUVuRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLDhCQUE4QixZQUFZLENBQUM7UUFDL0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFZLEVBQUUsS0FBaUIsRUFBRSxlQUF3QjtRQUM3RSxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8saUNBQWlDLENBQUMsR0FBVyxFQUFFLE1BQWlCO1FBQ3BFLElBQUksTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDcEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELElBQUksY0FBYyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwRDtTQUNKO0lBQ0wsQ0FBQztJQUVPLDRCQUE0QixDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQzNELElBQUksS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsS0FBZ0I7UUFDeEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFZLFlBQVk7UUFDcEIsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUNyRCxDQUFDOztrSEF2RVEsb0JBQW9CO3NIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzRGQUNuQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlLCBPQXV0aDJTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJZGVudGl0eUdyb3VwU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4vaWRlbnRpdHktZ3JvdXAuc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWRlbnRpdHlHcm91cEZpbHRlckludGVyZmFjZSB9IGZyb20gJy4vaWRlbnRpdHktZ3JvdXAtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZGVudGl0eUdyb3VwTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvaWRlbnRpdHktZ3JvdXAubW9kZWwnO1xuXG5jb25zdCBJREVOVElUWV9NSUNST19TRVJWSUNFX0lOR1JFU1MgPSAnaWRlbnRpdHktYWRhcHRlci1zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJZGVudGl0eUdyb3VwU2VydmljZSBpbXBsZW1lbnRzIElkZW50aXR5R3JvdXBTZXJ2aWNlSW50ZXJmYWNlIHtcblxuICAgIHF1ZXJ5UGFyYW1zOiB7IHNlYXJjaDogc3RyaW5nOyBhcHBsaWNhdGlvbj86IHN0cmluZzsgcm9sZXM/OiBzdHJpbmcgW10gfTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG9BdXRoMlNlcnZpY2U6IE9BdXRoMlNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxuICAgICkge31cblxuICAgIHB1YmxpYyBzZWFyY2gobmFtZTogc3RyaW5nLCBmaWx0ZXJzPzogSWRlbnRpdHlHcm91cEZpbHRlckludGVyZmFjZSk6IE9ic2VydmFibGU8SWRlbnRpdHlHcm91cE1vZGVsW10+IHtcbiAgICAgICAgaWYgKG5hbWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcnM/LndpdGhpbkFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hHcm91cHNXaXRoaW5BcHAobmFtZSwgZmlsdGVycy53aXRoaW5BcHBsaWNhdGlvbiwgZmlsdGVycz8ucm9sZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcnM/LnJvbGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hHcm91cHNXaXRoR2xvYmFsUm9sZXMobmFtZSwgZmlsdGVycy5yb2xlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hHcm91cHNCeU5hbWUobmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNlYXJjaEdyb3Vwc0J5TmFtZShuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPElkZW50aXR5R3JvdXBNb2RlbFtdPiB7XG4gICAgICAgIHRoaXMuYnVpbGRRdWVyeVBhcmFtKG5hbWUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmludm9rZUlkZW50aXR5R3JvdXBBcGkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlYXJjaEdyb3Vwc1dpdGhHbG9iYWxSb2xlcyhuYW1lOiBzdHJpbmcsIHJvbGVzOiBzdHJpbmcgW10pOiBPYnNlcnZhYmxlPElkZW50aXR5R3JvdXBNb2RlbFtdPiB7XG4gICAgICAgIHRoaXMuYnVpbGRRdWVyeVBhcmFtKG5hbWUsIHJvbGVzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VJZGVudGl0eUdyb3VwQXBpKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hHcm91cHNXaXRoaW5BcHAobmFtZTogc3RyaW5nLCBhcHBsaWNhdGlvbk5hbWU6IHN0cmluZywgcm9sZXM/OiBzdHJpbmcgW10pOiBPYnNlcnZhYmxlPElkZW50aXR5R3JvdXBNb2RlbFtdPiB7XG4gICAgICAgIHRoaXMuYnVpbGRRdWVyeVBhcmFtKG5hbWUsIHJvbGVzLCBhcHBsaWNhdGlvbk5hbWUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmludm9rZUlkZW50aXR5R3JvdXBBcGkoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGludm9rZUlkZW50aXR5R3JvdXBBcGkoKTogT2JzZXJ2YWJsZTxJZGVudGl0eUdyb3VwTW9kZWxbXT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmlkZW50aXR5SG9zdH0vJHtJREVOVElUWV9NSUNST19TRVJWSUNFX0lOR1JFU1N9L3YxL2dyb3Vwc2A7XG4gICAgICAgIHJldHVybiB0aGlzLm9BdXRoMlNlcnZpY2UuZ2V0KHsgdXJsLCBxdWVyeVBhcmFtczogdGhpcy5xdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkUXVlcnlQYXJhbShuYW1lOiBzdHJpbmcsIHJvbGVzPzogc3RyaW5nIFtdLCBhcHBsaWNhdGlvbk5hbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IHsgc2VhcmNoOiBuYW1lIH07XG4gICAgICAgIHRoaXMuYWRkT3B0aW9uYWxWYWx1ZVRvUXVlcnlQYXJhbSgnYXBwbGljYXRpb24nLCBhcHBsaWNhdGlvbk5hbWUpO1xuICAgICAgICB0aGlzLmFkZE9wdGlvbmFsQ29tbWFWYWx1ZVRvUXVlcnlQYXJhbSgncm9sZScsIHJvbGVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE9wdGlvbmFsQ29tbWFWYWx1ZVRvUXVlcnlQYXJhbShrZXk6IHN0cmluZywgdmFsdWVzOiBzdHJpbmcgW10pIHtcbiAgICAgICAgaWYgKHZhbHVlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzTm90RW1wdHkgPSB0aGlzLmZpbHRlck91dEVtcHR5VmFsdWUodmFsdWVzKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZXNOb3RFbXB0eT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXNba2V5XSA9IHZhbHVlc05vdEVtcHR5LmpvaW4oJywnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWRkT3B0aW9uYWxWYWx1ZVRvUXVlcnlQYXJhbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWU/LnRyaW0oKSkge1xuICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlck91dEVtcHR5VmFsdWUocm9sZXM6IHN0cmluZyBbXSk6IHN0cmluZyBbXSB7XG4gICAgICAgIHJldHVybiByb2xlcy5maWx0ZXIoIHJvbGUgPT4gcm9sZS50cmltKCkgPyB0cnVlIDogZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlkZW50aXR5SG9zdCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgnYnBtSG9zdCcpfWA7XG4gICAgfVxufVxuIl19