@gravitee/ui-policy-studio-angular 13.1.1 → 13.1.2-renovate-angular-959e53e

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 (23) hide show
  1. package/esm2022/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.mjs +3 -3
  2. package/esm2022/lib/components/flow-details/gio-ps-flow-details.component.mjs +3 -3
  3. package/esm2022/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.mjs +3 -3
  4. package/esm2022/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +3 -3
  5. package/esm2022/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.mjs +3 -3
  6. package/esm2022/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.mjs +3 -3
  7. package/esm2022/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.mjs +3 -3
  8. package/esm2022/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.mjs +3 -3
  9. package/esm2022/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +3 -3
  10. package/esm2022/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.mjs +3 -3
  11. package/esm2022/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.mjs +3 -3
  12. package/esm2022/lib/components/step-form/gio-ps-step-form.component.mjs +10 -6
  13. package/esm2022/lib/policy-group-studio/gio-policy-group-studio.component.mjs +3 -3
  14. package/esm2022/lib/policy-studio/gio-policy-studio.component.mjs +3 -3
  15. package/esm2022/lib/policy-studio/gio-policy-studio.service.mjs +3 -3
  16. package/esm2022/testing/lib/components/step-form/gio-ps-step-form.harness.mjs +5 -1
  17. package/fesm2022/gravitee-ui-policy-studio-angular-testing.mjs +4 -0
  18. package/fesm2022/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
  19. package/fesm2022/gravitee-ui-policy-studio-angular.mjs +51 -47
  20. package/fesm2022/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  21. package/lib/components/step-form/gio-ps-step-form.component.d.ts +1 -0
  22. package/package.json +1 -1
  23. package/testing/lib/components/step-form/gio-ps-step-form.harness.d.ts +1 -0
@@ -131,10 +131,10 @@ export class GioPolicyStudioPoliciesCatalogDialogComponent {
131
131
  this.isValid = false;
132
132
  this.isUnlicensed = false;
133
133
  }
134
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
135
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: GioPolicyStudioPoliciesCatalogDialogComponent, isStandalone: true, selector: "gio-ps-policies-catalog-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n Policies for <span class=\"title__phase\">{{ executionPhaseLabel }}</span> phase\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<ng-container>\n <mat-dialog-content *ngIf=\"!selectedPolicy\" class=\"policiesCatalog\">\n <div class=\"policiesCatalog__filters\" [formGroup]=\"filtersForm\">\n <mat-form-field class=\"policiesCatalog__filters__search\" appearance=\"outline\">\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n <button\n matIconSuffix\n mat-icon-button\n aria-label=\"Clear\"\n *ngIf=\"filtersForm.get('search')?.value\"\n (click)=\"filtersForm.get('search')?.setValue('')\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </mat-form-field>\n <mat-chip-listbox\n *ngIf=\"categories.length > 1\"\n class=\"policiesCatalog__filters__categories\"\n aria-label=\"Categories selection\"\n multiple\n formControlName=\"categories\"\n >\n <mat-chip-option *ngFor=\"let category of categories\" [selected]=\"category\" [value]=\"category\"\n >{{ category | titlecase }}\n </mat-chip-option>\n </mat-chip-listbox>\n </div>\n\n <div *ngIf=\"policies.length; else emptyPoliciesTpl\" class=\"policiesCatalog__list\">\n <div *ngFor=\"let policy of policies\" class=\"policiesCatalog__list__policy\">\n <div class=\"policiesCatalog__list__policy__head\">\n <mat-icon class=\"policiesCatalog__list__policy__head__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"policy.name\" class=\"policiesCatalog__list__policy__head__name\">{{ policy.name }}</span>\n\n <span\n *ngIf=\"policy.genericPolicy.type === 'SHARED_POLICY_GROUP'\"\n class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\"\n >\n <mat-icon svgIcon=\"gio:users\"></mat-icon>&nbsp;Shared Policy Group\n </span>\n </div>\n\n <div class=\"policiesCatalog__list__policy__enterprise\" *ngIf=\"policy.deployed === false\">\n <mat-icon\n class=\"policiesCatalog__list__policy__enterprise__lock\"\n [svgIcon]=\"'gio:lock'\"\n matTooltip=\"This policy is only available for users with an enterprise license.\"\n ></mat-icon>\n </div>\n\n <div *ngIf=\"policy.description\" class=\"policiesCatalog__list__policy__description\">{{ policy.description }}</div>\n\n <button class=\"policiesCatalog__list__policy__selectBtn\" mat-stroked-button role=\"dialog\" (click)=\"onSelectPolicy(policy)\">\n Select\n </button>\n </div>\n </div>\n </mat-dialog-content>\n</ng-container>\n\n<ng-template #emptyPoliciesTpl>\n <div class=\"emptyPoliciesCatalog\">No policies available.</div>\n</ng-template>\n\n<mat-dialog-content *ngIf=\"selectedPolicy\" class=\"policyForm\">\n <button class=\"policyForm__goBackBtn\" mat-stroked-button (click)=\"onGoBack()\">\n <mat-icon svgIcon=\"gio:arrow-left\"></mat-icon>\n Go back\n </button>\n\n <gio-banner *ngIf=\"isUnlicensed\" type=\"error\" icon=\"gio:universe\">\n This policy is only available for users with an enterprise license.\n <span gioBannerBody>Request a license to upgrade your account and unlock this policy</span>\n <div gioBannerAction>\n <a *ngIf=\"trialUrl\" mat-stroked-button [href]=\"trialUrl\" target=\"_blank\">Request upgrade</a>\n </div>\n </gio-banner>\n\n <div class=\"policyForm__info\">\n <div class=\"policyForm__info__head\">\n <mat-icon class=\"policyForm__info__head__icon\" [svgIcon]=\"selectedPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"selectedPolicy.name\" class=\"policyForm__info__head__name\">{{ selectedPolicy.name }}</span>\n\n <span *ngIf=\"selectedPolicy.type === 'SHARED_POLICY_GROUP'\" class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\">\n <mat-icon svgIcon=\"gio:users\"></mat-icon>&nbsp;Shared Policy Group\n </span>\n </div>\n\n <div *ngIf=\"selectedPolicy.description\" class=\"policyForm__info__description\">{{ selectedPolicy.description }}</div>\n </div>\n\n <gio-ps-step-form\n [genericPolicy]=\"selectedPolicy\"\n [executionPhase]=\"executionPhase\"\n (stepChange)=\"onStepChange($event)\"\n (isValid)=\"onIsValid($event)\"\n ></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button\n *ngIf=\"selectedPolicy\"\n class=\"actions__addBtn\"\n color=\"primary\"\n mat-flat-button\n role=\"dialog\"\n [disabled]=\"!isValid || isUnlicensed\"\n (click)=\"onAddPolicy()\"\n >\n Add policy\n </button>\n</mat-dialog-actions>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}.title__closeBtn{top:0;right:-24px;float:right}.policiesCatalog__filters{display:flex;flex-direction:column;padding:0 0 8px;gap:8px}.policiesCatalog__filters__search{width:100%;height:54px;padding-bottom:0}.policiesCatalog__list{--grid-layout-gap: 16px;--grid-column-count: 3;--grid-item-min-width: 200px;--gap-count: calc(var(--grid-column-count) - 1);--total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));--grid-item-max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));display:grid;grid-gap:var(--grid-layout-gap);grid-template-columns:repeat(auto-fill,minmax(max(var(--grid-item-min-width),var(--grid-item-max-width)),1fr))}.policiesCatalog__list__policy{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:16px;border:1px solid #d3d5dc;border-radius:8px;gap:4px}.policiesCatalog__list__policy__head{display:flex;align-items:center;align-self:stretch}.policiesCatalog__list__policy__head__icon{min-width:24px;flex:0 0 24px;margin-right:8px}.policiesCatalog__list__policy__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.policiesCatalog__list__policy__head__badge{float:left}.policiesCatalog__list__policy__enterprise{position:absolute;top:0;right:0;padding:8px 8px 8px 16px;border-radius:0 8px 0 38px;background:#e7e8ef;color:#6c59bd}.policiesCatalog__list__policy__enterprise__lock{min-width:16px;max-width:16px;color:#6c59bd}.policiesCatalog__list__policy__description{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.policiesCatalog__list__policy__description:empty{display:none}.policiesCatalog__list__policy__selectBtn{margin-top:8px}.policyForm__goBackBtn{margin:16px 0}.policyForm__info{display:flex;max-width:100%;flex-direction:column;align-items:flex-start;padding-bottom:16px;gap:4px}.policyForm__info__head{display:flex;align-items:center}.policyForm__info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policyForm__info__head__name{flex:1 1 auto}.policyForm__info__description{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i6.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i6.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: MatInputModule }, { 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: "ngmodule", type: GioBannerModule }, { kind: "component", type: i8.GioBannerComponent, selector: "gio-banner", inputs: ["type", "icon", "collapsible"] }, { kind: "directive", type: i8.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "directive", type: i8.GioBannerActionDirective, selector: "[gioBannerAction]" }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["readOnly", "step", "executionPhase", "genericPolicy"], outputs: ["stepChange", "isValid"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
135
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: GioPolicyStudioPoliciesCatalogDialogComponent, isStandalone: true, selector: "gio-ps-policies-catalog-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n Policies for <span class=\"title__phase\">{{ executionPhaseLabel }}</span> phase\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<ng-container>\n <mat-dialog-content *ngIf=\"!selectedPolicy\" class=\"policiesCatalog\">\n <div class=\"policiesCatalog__filters\" [formGroup]=\"filtersForm\">\n <mat-form-field class=\"policiesCatalog__filters__search\" appearance=\"outline\">\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n <button\n matIconSuffix\n mat-icon-button\n aria-label=\"Clear\"\n *ngIf=\"filtersForm.get('search')?.value\"\n (click)=\"filtersForm.get('search')?.setValue('')\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </mat-form-field>\n <mat-chip-listbox\n *ngIf=\"categories.length > 1\"\n class=\"policiesCatalog__filters__categories\"\n aria-label=\"Categories selection\"\n multiple\n formControlName=\"categories\"\n >\n <mat-chip-option *ngFor=\"let category of categories\" [selected]=\"category\" [value]=\"category\"\n >{{ category | titlecase }}\n </mat-chip-option>\n </mat-chip-listbox>\n </div>\n\n <div *ngIf=\"policies.length; else emptyPoliciesTpl\" class=\"policiesCatalog__list\">\n <div *ngFor=\"let policy of policies\" class=\"policiesCatalog__list__policy\">\n <div class=\"policiesCatalog__list__policy__head\">\n <mat-icon class=\"policiesCatalog__list__policy__head__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"policy.name\" class=\"policiesCatalog__list__policy__head__name\">{{ policy.name }}</span>\n\n <span\n *ngIf=\"policy.genericPolicy.type === 'SHARED_POLICY_GROUP'\"\n class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\"\n >\n <mat-icon svgIcon=\"gio:users\"></mat-icon>&nbsp;Shared Policy Group\n </span>\n </div>\n\n <div class=\"policiesCatalog__list__policy__enterprise\" *ngIf=\"policy.deployed === false\">\n <mat-icon\n class=\"policiesCatalog__list__policy__enterprise__lock\"\n [svgIcon]=\"'gio:lock'\"\n matTooltip=\"This policy is only available for users with an enterprise license.\"\n ></mat-icon>\n </div>\n\n <div *ngIf=\"policy.description\" class=\"policiesCatalog__list__policy__description\">{{ policy.description }}</div>\n\n <button class=\"policiesCatalog__list__policy__selectBtn\" mat-stroked-button role=\"dialog\" (click)=\"onSelectPolicy(policy)\">\n Select\n </button>\n </div>\n </div>\n </mat-dialog-content>\n</ng-container>\n\n<ng-template #emptyPoliciesTpl>\n <div class=\"emptyPoliciesCatalog\">No policies available.</div>\n</ng-template>\n\n<mat-dialog-content *ngIf=\"selectedPolicy\" class=\"policyForm\">\n <button class=\"policyForm__goBackBtn\" mat-stroked-button (click)=\"onGoBack()\">\n <mat-icon svgIcon=\"gio:arrow-left\"></mat-icon>\n Go back\n </button>\n\n <gio-banner *ngIf=\"isUnlicensed\" type=\"error\" icon=\"gio:universe\">\n This policy is only available for users with an enterprise license.\n <span gioBannerBody>Request a license to upgrade your account and unlock this policy</span>\n <div gioBannerAction>\n <a *ngIf=\"trialUrl\" mat-stroked-button [href]=\"trialUrl\" target=\"_blank\">Request upgrade</a>\n </div>\n </gio-banner>\n\n <div class=\"policyForm__info\">\n <div class=\"policyForm__info__head\">\n <mat-icon class=\"policyForm__info__head__icon\" [svgIcon]=\"selectedPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"selectedPolicy.name\" class=\"policyForm__info__head__name\">{{ selectedPolicy.name }}</span>\n\n <span *ngIf=\"selectedPolicy.type === 'SHARED_POLICY_GROUP'\" class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\">\n <mat-icon svgIcon=\"gio:users\"></mat-icon>&nbsp;Shared Policy Group\n </span>\n </div>\n\n <div *ngIf=\"selectedPolicy.description\" class=\"policyForm__info__description\">{{ selectedPolicy.description }}</div>\n </div>\n\n <gio-ps-step-form\n [genericPolicy]=\"selectedPolicy\"\n [executionPhase]=\"executionPhase\"\n (stepChange)=\"onStepChange($event)\"\n (isValid)=\"onIsValid($event)\"\n ></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button\n *ngIf=\"selectedPolicy\"\n class=\"actions__addBtn\"\n color=\"primary\"\n mat-flat-button\n role=\"dialog\"\n [disabled]=\"!isValid || isUnlicensed\"\n (click)=\"onAddPolicy()\"\n >\n Add policy\n </button>\n</mat-dialog-actions>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}.title__closeBtn{top:0;right:-24px;float:right}.policiesCatalog__filters{display:flex;flex-direction:column;padding:0 0 8px;gap:8px}.policiesCatalog__filters__search{width:100%;height:54px;padding-bottom:0}.policiesCatalog__list{--grid-layout-gap: 16px;--grid-column-count: 3;--grid-item-min-width: 200px;--gap-count: calc(var(--grid-column-count) - 1);--total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));--grid-item-max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));display:grid;grid-gap:var(--grid-layout-gap);grid-template-columns:repeat(auto-fill,minmax(max(var(--grid-item-min-width),var(--grid-item-max-width)),1fr))}.policiesCatalog__list__policy{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:16px;border:1px solid #d3d5dc;border-radius:8px;gap:4px}.policiesCatalog__list__policy__head{display:flex;align-items:center;align-self:stretch}.policiesCatalog__list__policy__head__icon{min-width:24px;flex:0 0 24px;margin-right:8px}.policiesCatalog__list__policy__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.policiesCatalog__list__policy__head__badge{float:left}.policiesCatalog__list__policy__enterprise{position:absolute;top:0;right:0;padding:8px 8px 8px 16px;border-radius:0 8px 0 38px;background:#e7e8ef;color:#6c59bd}.policiesCatalog__list__policy__enterprise__lock{min-width:16px;max-width:16px;color:#6c59bd}.policiesCatalog__list__policy__description{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.policiesCatalog__list__policy__description:empty{display:none}.policiesCatalog__list__policy__selectBtn{margin-top:8px}.policyForm__goBackBtn{margin:16px 0}.policyForm__info{display:flex;max-width:100%;flex-direction:column;align-items:flex-start;padding-bottom:16px;gap:4px}.policyForm__info__head{display:flex;align-items:center}.policyForm__info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policyForm__info__head__name{flex:1 1 auto}.policyForm__info__description{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i6.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i6.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: MatInputModule }, { 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: "ngmodule", type: GioBannerModule }, { kind: "component", type: i8.GioBannerComponent, selector: "gio-banner", inputs: ["type", "icon", "collapsible"] }, { kind: "directive", type: i8.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "directive", type: i8.GioBannerActionDirective, selector: "[gioBannerAction]" }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["readOnly", "step", "executionPhase", "genericPolicy"], outputs: ["stepChange", "isValid"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
136
136
  }
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, decorators: [{
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, decorators: [{
138
138
  type: Component,
139
139
  args: [{ standalone: true, imports: [
140
140
  CommonModule,
@@ -39,10 +39,10 @@ export class GioPolicyStudioStepEditDialogComponent {
39
39
  ...this.step,
40
40
  });
41
41
  }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: GioPolicyStudioStepEditDialogComponent, isStandalone: true, selector: "gio-ps-step-edit-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n <mat-icon class=\"title__icon\" [svgIcon]=\"genericPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"title__name\">\n {{ step.name }}\n <span *ngIf=\"genericPolicy.type === 'SHARED_POLICY_GROUP'\" class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\">\n <mat-icon svgIcon=\"gio:users\"></mat-icon>&nbsp;Shared Policy Group\n </span></span\n >\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n\n <div class=\"title__description\">\n {{ genericPolicy.description }}\n </div>\n</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-step-form\n [readOnly]=\"readOnly\"\n [genericPolicy]=\"genericPolicy\"\n [executionPhase]=\"executionPhase\"\n [(step)]=\"step\"\n (isValid)=\"isValid = $event\"\n ></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSave()\" [disabled]=\"!isValid\">Save</button>\n</mat-dialog-actions>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}.title__icon{margin-right:8px}.title__closeBtn{top:0;right:-24px;float:right}.title__description{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["readOnly", "step", "executionPhase", "genericPolicy"], outputs: ["stepChange", "isValid"] }] }); }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: GioPolicyStudioStepEditDialogComponent, isStandalone: true, selector: "gio-ps-step-edit-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n <mat-icon class=\"title__icon\" [svgIcon]=\"genericPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"title__name\">\n {{ step.name }}\n <span *ngIf=\"genericPolicy.type === 'SHARED_POLICY_GROUP'\" class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\">\n <mat-icon svgIcon=\"gio:users\"></mat-icon>&nbsp;Shared Policy Group\n </span></span\n >\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n\n <div class=\"title__description\">\n {{ genericPolicy.description }}\n </div>\n</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-step-form\n [readOnly]=\"readOnly\"\n [genericPolicy]=\"genericPolicy\"\n [executionPhase]=\"executionPhase\"\n [(step)]=\"step\"\n (isValid)=\"isValid = $event\"\n ></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSave()\" [disabled]=\"!isValid\">Save</button>\n</mat-dialog-actions>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}.title__icon{margin-right:8px}.title__closeBtn{top:0;right:-24px;float:right}.title__description{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["readOnly", "step", "executionPhase", "genericPolicy"], outputs: ["stepChange", "isValid"] }] }); }
44
44
  }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, decorators: [{
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, decorators: [{
46
46
  type: Component,
47
47
  args: [{ standalone: true, imports: [CommonModule, MatButtonModule, MatDialogModule, GioIconsModule, GioPolicyStudioStepFormComponent], selector: 'gio-ps-step-edit-dialog', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n <mat-icon class=\"title__icon\" [svgIcon]=\"genericPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"title__name\">\n {{ step.name }}\n <span *ngIf=\"genericPolicy.type === 'SHARED_POLICY_GROUP'\" class=\"gio-badge-neutral policiesCatalog__list__policy__head__badge\">\n <mat-icon svgIcon=\"gio:users\"></mat-icon>&nbsp;Shared Policy Group\n </span></span\n >\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n\n <div class=\"title__description\">\n {{ genericPolicy.description }}\n </div>\n</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-step-form\n [readOnly]=\"readOnly\"\n [genericPolicy]=\"genericPolicy\"\n [executionPhase]=\"executionPhase\"\n [(step)]=\"step\"\n (isValid)=\"isValid = $event\"\n ></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSave()\" [disabled]=\"!isValid\">Save</button>\n</mat-dialog-actions>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}.title__icon{margin-right:8px}.title__closeBtn{top:0;right:-24px;float:right}.title__description{font-size:12px;font-weight:400;line-height:16px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"] }]
48
48
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { Component, EventEmitter, Input, Output } from '@angular/core';
17
- import { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
17
+ import { FormControl, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
18
18
  import { catchError, map, takeUntil } from 'rxjs/operators';
19
19
  import { of, Subject } from 'rxjs';
20
20
  import { GioBannerModule, GioFormJsonSchemaComponent, GioFormJsonSchemaModule, GioLoaderModule, } from '@gravitee/ui-particles-angular';
@@ -39,6 +39,7 @@ export class GioPolicyStudioStepFormComponent {
39
39
  this.stepChange = new EventEmitter();
40
40
  this.isValid = new EventEmitter();
41
41
  this.unsubscribe$ = new Subject();
42
+ this.isMessage = false;
42
43
  }
43
44
  ngOnChanges(changes) {
44
45
  if (changes.genericPolicy) {
@@ -61,6 +62,7 @@ export class GioPolicyStudioStepFormComponent {
61
62
  this.context = {
62
63
  executionPhase: this.executionPhase,
63
64
  };
65
+ this.isMessage = this.executionPhase === 'MESSAGE_REQUEST' || this.executionPhase === 'MESSAGE_RESPONSE';
64
66
  }
65
67
  }
66
68
  ngOnInit() {
@@ -74,6 +76,7 @@ export class GioPolicyStudioStepFormComponent {
74
76
  this.stepForm = new UntypedFormGroup({
75
77
  description: new UntypedFormControl({ value: this.step?.description, disabled: this.readOnly }),
76
78
  condition: new UntypedFormControl({ value: this.step?.condition, disabled: this.readOnly }),
79
+ messageCondition: new FormControl({ value: this.step?.messageCondition, disabled: this.readOnly }),
77
80
  configuration: new UntypedFormControl({ value: this.step?.configuration, disabled: this.readOnly }),
78
81
  });
79
82
  this.stepForm.valueChanges.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
@@ -101,13 +104,14 @@ export class GioPolicyStudioStepFormComponent {
101
104
  ...this.step,
102
105
  description: this.stepForm?.get('description')?.value,
103
106
  condition: this.stepForm?.get('condition')?.value ?? undefined,
107
+ messageCondition: this.stepForm?.get('messageCondition')?.value ?? undefined,
104
108
  configuration,
105
109
  });
106
110
  }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyStudioStepFormComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: GioPolicyStudioStepFormComponent, isStandalone: true, selector: "gio-ps-step-form", inputs: { readOnly: "readOnly", step: "step", executionPhase: "executionPhase", genericPolicy: "genericPolicy" }, outputs: { stepChange: "stepChange", isValid: "isValid" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n </mat-form-field>\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n <gio-asciidoctor [content]=\"policyDocumentation\"></gio-asciidoctor>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;flex-direction:row;border:1px solid #d3d5dc;border-radius:8px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d3d5dc}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d3d5dc}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d3d5dc;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "component", type: i6.GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: ["jsonSchema", "context", "options"], outputs: ["ready"] }, { kind: "ngmodule", type: GioAsciidoctorModule }, { kind: "component", type: i7.GioAsciidoctorComponent, selector: "gio-asciidoctor", inputs: ["content", "src"] }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: i6.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6.GioBannerBodyDirective, selector: "[gioBannerBody]" }] }); }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyStudioStepFormComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: GioPolicyStudioStepFormComponent, isStandalone: true, selector: "gio-ps-step-form", inputs: { readOnly: "readOnly", step: "step", executionPhase: "executionPhase", genericPolicy: "genericPolicy" }, outputs: { stepChange: "stepChange", isValid: "isValid" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n </mat-form-field>\n\n @if (isMessage) {\n <mat-form-field>\n <mat-label>Message trigger condition</mat-label>\n <input matInput formControlName=\"messageCondition\" />\n <mat-hint>The condition to execute this policy on message. Supports Expression Language.</mat-hint>\n </mat-form-field>\n }\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n <gio-asciidoctor [content]=\"policyDocumentation\"></gio-asciidoctor>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;flex-direction:row;border:1px solid #d3d5dc;border-radius:8px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d3d5dc}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d3d5dc}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d3d5dc;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "component", type: i6.GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: ["jsonSchema", "context", "options"], outputs: ["ready"] }, { kind: "ngmodule", type: GioAsciidoctorModule }, { kind: "component", type: i7.GioAsciidoctorComponent, selector: "gio-asciidoctor", inputs: ["content", "src"] }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: i6.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6.GioBannerBodyDirective, selector: "[gioBannerBody]" }] }); }
109
113
  }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyStudioStepFormComponent, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyStudioStepFormComponent, decorators: [{
111
115
  type: Component,
112
116
  args: [{ standalone: true, imports: [
113
117
  CommonModule,
@@ -118,7 +122,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
118
122
  GioAsciidoctorModule,
119
123
  GioLoaderModule,
120
124
  GioBannerModule,
121
- ], selector: 'gio-ps-step-form', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n </mat-form-field>\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n <gio-asciidoctor [content]=\"policyDocumentation\"></gio-asciidoctor>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;flex-direction:row;border:1px solid #d3d5dc;border-radius:8px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d3d5dc}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d3d5dc}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d3d5dc;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}\n"] }]
125
+ ], selector: 'gio-ps-step-form', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n </mat-form-field>\n\n @if (isMessage) {\n <mat-form-field>\n <mat-label>Message trigger condition</mat-label>\n <input matInput formControlName=\"messageCondition\" />\n <mat-hint>The condition to execute this policy on message. Supports Expression Language.</mat-hint>\n </mat-form-field>\n }\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n <gio-asciidoctor [content]=\"policyDocumentation\"></gio-asciidoctor>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;flex-direction:row;border:1px solid #d3d5dc;border-radius:8px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d3d5dc}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d3d5dc}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d3d5dc;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}\n"] }]
122
126
  }], ctorParameters: () => [{ type: i1.GioPolicyStudioService }], propDecorators: { readOnly: [{
123
127
  type: Input
124
128
  }], step: [{
@@ -133,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
133
137
  }], isValid: [{
134
138
  type: Output
135
139
  }] } });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3N0ZXAtZm9ybS9naW8tcHMtc3RlcC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc3RlcC1mb3JtL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUNMLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsdUJBQXVCLEVBR3ZCLGVBQWUsR0FDaEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdE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QUM7UUFDbEYsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25CLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDWixXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSztZQUNyRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLFNBQVM7WUFDOUQsYUFBYTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBL0dVLGdDQUFnQztrR0FBaEMsZ0NBQWdDLDhRQ3BEN0Msd3ZFQStEQSw0MkJEeEJJLFlBQVksdUxBQ1osbUJBQW1CLG0yQkFDbkIsY0FBYyw4c0JBQ2Qsa0JBQWtCLDhCQUNsQix1QkFBdUIsOExBQ3ZCLG9CQUFvQixnSkFDcEIsZUFBZSwwR0FDZixlQUFlOzsyRkFNTixnQ0FBZ0M7a0JBaEI1QyxTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLGVBQWU7cUJBQ2hCLFlBQ1Msa0JBQWtCOzJGQU1yQixRQUFRO3NCQURkLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUlsQixhQUFhO3NCQURuQixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLE1BQU07Z0JBSUEsT0FBTztzQkFEYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBHaW9CYW5uZXJNb2R1bGUsXG4gIEdpb0Zvcm1Kc29uU2NoZW1hQ29tcG9uZW50LFxuICBHaW9Gb3JtSnNvblNjaGVtYU1vZHVsZSxcbiAgR2lvSnNvblNjaGVtYSxcbiAgR2lvSnNvblNjaGVtYUNvbnRleHQsXG4gIEdpb0xvYWRlck1vZHVsZSxcbn0gZnJvbSAnQGdyYXZpdGVlL3VpLXBhcnRpY2xlcy1hbmd1bGFyJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBHaW9Bc2NpaWRvY3Rvck1vZHVsZSB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhci9naW8tYXNjaWlkb2N0b3InO1xuXG5pbXBvcnQgeyBFeGVjdXRpb25QaGFzZSwgaXNQb2xpY3ksIGlzU2hhcmVkUG9saWN5R3JvdXBQb2xpY3ksIFN0ZXAsIHRvUG9saWN5LCBHZW5lcmljUG9saWN5IH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9wb2xpY3ktc3R1ZGlvL2dpby1wb2xpY3ktc3R1ZGlvLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBHaW9Gb3JtSnNvblNjaGVtYU1vZHVsZSxcbiAgICBHaW9Bc2NpaWRvY3Rvck1vZHVsZSxcbiAgICBHaW9Mb2FkZXJNb2R1bGUsXG4gICAgR2lvQmFubmVyTW9kdWxlLFxuICBdLFxuICBzZWxlY3RvcjogJ2dpby1wcy1zdGVwLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvU3RlcEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0ZXA/OiBTdGVwO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBleGVjdXRpb25QaGFzZSE6IEV4ZWN1dGlvblBoYXNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZW5lcmljUG9saWN5ITogR2VuZXJpY1BvbGljeTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHN0ZXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFN0ZXA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpc1ZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBwb2xpY3lTY2hlbWEkPzogT2JzZXJ2YWJsZTxHaW9Kc29uU2NoZW1hIHwgbnVsbCB8IHVuZGVmaW5lZD47XG4gIHB1YmxpYyBwb2xpY3lEb2N1bWVudGF0aW9uJD86IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIGluZm9CYW5uZXI/OiBzdHJpbmc7XG5cbiAgcHVibGljIHN0ZXBGb3JtPzogVW50eXBlZEZvcm1Hcm91cDtcblxuICBwdWJsaWMgY29udGV4dD86IEdpb0pzb25TY2hlbWFDb250ZXh0O1xuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwb2xpY3lTdHVkaW9TZXJ2aWNlOiBHaW9Qb2xpY3lTdHVkaW9TZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZ2VuZXJpY1BvbGljeSkge1xuICAgICAgaWYgKGlzUG9saWN5KHRoaXMuZ2VuZXJpY1BvbGljeSkpIHtcbiAgICAgICAgdGhpcy5wb2xpY3lTY2hlbWEkID0gdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLmdldFBvbGljeVNjaGVtYSh0b1BvbGljeSh0aGlzLmdlbmVyaWNQb2xpY3kpKS5waXBlKFxuICAgICAgICAgIG1hcChzY2hlbWEgPT4ge1xuICAgICAgICAgICAgaWYgKEdpb0Zvcm1Kc29uU2NoZW1hQ29tcG9uZW50LmlzRGlzcGxheWFibGUoc2NoZW1hIGFzIEdpb0pzb25TY2hlbWEpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzY2hlbWEgYXMgR2lvSnNvblNjaGVtYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnBvbGljeURvY3VtZW50YXRpb24kID0gdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLmdldFBvbGljeURvY3VtZW50YXRpb24odG9Qb2xpY3kodGhpcy5nZW5lcmljUG9saWN5KSkucGlwZShcbiAgICAgICAgICBtYXAoZG9jID0+IChpc0VtcHR5KGRvYykgPyAnTm8gZG9jdW1lbnRhdGlvbiBhdmFpbGFibGUuJyA6IGRvYykpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoJ05vIGRvY3VtZW50YXRpb24gYXZhaWxhYmxlLicpKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1NoYXJlZFBvbGljeUdyb3VwUG9saWN5KHRoaXMuZ2VuZXJpY1BvbGljeSkpIHtcbiAgICAgICAgdGhpcy5wb2xpY3lTY2hlbWEkID0gb2Yoe30pO1xuXG4gICAgICAgIHRoaXMucG9saWN5RG9jdW1lbnRhdGlvbiQgPSBvZignICcpO1xuXG4gICAgICAgIHRoaXMuaW5mb0Jhbm5lciA9IHRoaXMuZ2VuZXJpY1BvbGljeS5wcmVyZXF1aXNpdGVNZXNzYWdlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5leGVjdXRpb25QaGFzZSkge1xuICAgICAgdGhpcy5jb250ZXh0ID0ge1xuICAgICAgICBleGVjdXRpb25QaGFzZTogdGhpcy5leGVjdXRpb25QaGFzZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdFN0ZXBGb3JtKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGVwRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBGb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgZGVzY3JpcHRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGVwPy5kZXNjcmlwdGlvbiwgZGlzYWJsZWQ6IHRoaXMucmVhZE9ubHkgfSksXG4gICAgICBjb25kaXRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGVwPy5jb25kaXRpb24sIGRpc2FibGVkOiB0aGlzLnJlYWRPbmx5IH0pLFxuICAgICAgY29uZmlndXJhdGlvbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLnN0ZXA/LmNvbmZpZ3VyYXRpb24sIGRpc2FibGVkOiB0aGlzLnJlYWRPbmx5IH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zdGVwRm9ybS52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5lbWl0U3RlcENoYW5nZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdGVwRm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKHZhbGlkID0+IHtcbiAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KHZhbGlkID09PSAnVkFMSUQnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkpzb25TY2hlbWFSZWFkeShpc1JlYWR5OiBib29sZWFuKSB7XG4gICAgLy8gV2hlbiByZWFkeSBhbmQgaWYgdGhlIGZvcm0gaXMgdmFsaWQsIGVtaXRcbiAgICBpZiAoaXNSZWFkeSkge1xuICAgICAgdGhpcy5lbWl0U3RlcENoYW5nZSgpO1xuXG4gICAgICBpZiAodGhpcy5zdGVwRm9ybT8uc3RhdHVzID09PSAnVkFMSUQnKSB7XG4gICAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlbWl0U3RlcENoYW5nZSgpOiB2b2lkIHtcbiAgICBsZXQgY29uZmlndXJhdGlvbiA9IHRoaXMuc3RlcEZvcm0/LmdldCgnY29uZmlndXJhdGlvbicpPy52YWx1ZTtcblxuICAgIGlmIChpc1NoYXJlZFBvbGljeUdyb3VwUG9saWN5KHRoaXMuZ2VuZXJpY1BvbGljeSkpIHtcbiAgICAgIGNvbmZpZ3VyYXRpb24gPSB7IHNoYXJlZFBvbGljeUdyb3VwSWQ6IHRoaXMuZ2VuZXJpY1BvbGljeS5zaGFyZWRQb2xpY3lHcm91cElkIH07XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoe1xuICAgICAgLi4udGhpcy5zdGVwLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuc3RlcEZvcm0/LmdldCgnZGVzY3JpcHRpb24nKT8udmFsdWUsXG4gICAgICBjb25kaXRpb246IHRoaXMuc3RlcEZvcm0/LmdldCgnY29uZGl0aW9uJyk/LnZhbHVlID8/IHVuZGVmaW5lZCxcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwic2V0dGluZ3NcIj5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmdzX19oZWFkZXJcIj5TZXR0aW5nczwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZXR0aW5nc19fY29udGVudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwRm9ybSAmJiAocG9saWN5U2NoZW1hJCB8IGFzeW5jKSBhcyBwb2xpY3lTY2hlbWE7IGVsc2UgbG9hZGluZ1RtcGxcIiBbZm9ybUdyb3VwXT1cInN0ZXBGb3JtXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+RGVzY3JpcHRpb248L21hdC1sYWJlbD5cbiAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCIgY2RrRm9jdXNJbml0aWFsPjwvdGV4dGFyZWE+XG4gICAgICAgIDxtYXQtaGludD5EZXNjcmliZSBob3cgeW91ciBwb2xpY3kgd29ya3MuPC9tYXQtaGludD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5UcmlnZ2VyIGNvbmRpdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY29uZGl0aW9uXCIgLz5cbiAgICAgICAgPG1hdC1oaW50PlRoZSBjb25kaXRpb24gdG8gZXhlY3V0ZSB0aGlzIHBvbGljeS4gU3VwcG9ydHMgRXhwcmVzc2lvbiBMYW5ndWFnZS48L21hdC1oaW50PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGdpby1mb3JtLWpzb24tc2NoZW1hXG4gICAgICAgICpuZ0lmPVwicG9saWN5U2NoZW1hXCJcbiAgICAgICAgW2pzb25TY2hlbWFdPVwiJGFueShwb2xpY3lTY2hlbWEpXCJcbiAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiXG4gICAgICAgIChyZWFkeSk9XCJvbkpzb25TY2hlbWFSZWFkeSgkZXZlbnQpXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29uZmlndXJhdGlvblwiXG4gICAgICA+PC9naW8tZm9ybS1qc29uLXNjaGVtYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImRvY3VtZW50YXRpb25cIj5cbiAgPGRpdiBjbGFzcz1cImRvY3VtZW50YXRpb25fX2hlYWRlclwiPkRvY3VtZW50YXRpb248L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRhdGlvbl9fY29udGVudFwiPlxuICAgIDxnaW8tYmFubmVyLXdhcm5pbmcgKm5nSWY9XCJpbmZvQmFubmVyXCI+XG4gICAgICBQcmVyZXF1aXNpdGUgbWVzc2FnZVxuICAgICAgPHNwYW4gZ2lvQmFubmVyQm9keT57eyBpbmZvQmFubmVyIH19PC9zcGFuPlxuICAgIDwvZ2lvLWJhbm5lci13YXJuaW5nPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwb2xpY3lEb2N1bWVudGF0aW9uJCB8IGFzeW5jIGFzIHBvbGljeURvY3VtZW50YXRpb247IGVsc2UgbG9hZGluZ1RtcGxcIj5cbiAgICAgIDxnaW8tYXNjaWlkb2N0b3IgW2NvbnRlbnRdPVwicG9saWN5RG9jdW1lbnRhdGlvblwiPjwvZ2lvLWFzY2lpZG9jdG9yPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmdUbXBsPlxuICA8Z2lvLWxvYWRlcj48L2dpby1sb2FkZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3N0ZXAtZm9ybS9naW8tcHMtc3RlcC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc3RlcC1mb3JtL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFDTCxlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLHVCQUF1QixFQUd2QixlQUFlLEdBQ2hCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXRGLE9BQU8sRUFBa0IsUUFBUSxFQUFFLHlCQUF5QixFQUFRLFFBQVEsRUFBaUIsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7OztBQW1CbEgsTUFBTSxPQUFPLGdDQUFnQztJQTZCM0MsWUFBNkIsbUJBQTJDO1FBQTNDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUEzQmpFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFZakIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFHdEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFVckMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFDa0QsQ0FBQztJQUVyRSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM5RixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ1gsSUFBSSwwQkFBMEIsQ0FBQyxhQUFhLENBQUMsTUFBdUIsQ0FBQyxFQUFFLENBQUM7d0JBQ3RFLE9BQU8sTUFBdUIsQ0FBQztvQkFDakMsQ0FBQztvQkFDRCxPQUFPLEVBQUUsQ0FBQztnQkFDWixDQUFDLENBQUMsQ0FDSCxDQUFDO2dCQUVGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDNUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNoRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FDcEQsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLHlCQUF5QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFNUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDO1lBQzNELENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRztnQkFDYixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7YUFDcEMsQ0FBQztZQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsS0FBSyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLGtCQUFrQixDQUFDO1FBQzNHLENBQUM7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDO1lBQ25DLFdBQVcsRUFBRSxJQUFJLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0YsU0FBUyxFQUFFLElBQUksa0JBQWtCLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzRixnQkFBZ0IsRUFBRSxJQUFJLFdBQVcsQ0FBcUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RILGFBQWEsRUFBRSxJQUFJLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDcEcsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9FLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxPQUFnQjtRQUN2Qyw0Q0FBNEM7UUFDNUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV0QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUUvRCxJQUFJLHlCQUF5QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ2xELGFBQWEsR0FBRyxFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNsRixDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDbkIsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUNaLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLO1lBQ3JELFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksU0FBUztZQUM5RCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssSUFBSSxTQUFTO1lBQzVFLGFBQWE7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQW5IVSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQyw4UUNwRDdDLCtqRkF1RUEsNDJCRGhDSSxZQUFZLHVMQUNaLG1CQUFtQixtMkJBQ25CLGNBQWMsOHNCQUNkLGtCQUFrQiw4QkFDbEIsdUJBQXVCLDhMQUN2QixvQkFBb0IsZ0pBQ3BCLGVBQWUsMEdBQ2YsZUFBZTs7MkZBTU4sZ0NBQWdDO2tCQWhCNUMsU0FBUztpQ0FDSSxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixlQUFlO3FCQUNoQixZQUNTLGtCQUFrQjsyRkFNckIsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJbEIsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixNQUFNO2dCQUlBLE9BQU87c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEdpb0Jhbm5lck1vZHVsZSxcbiAgR2lvRm9ybUpzb25TY2hlbWFDb21wb25lbnQsXG4gIEdpb0Zvcm1Kc29uU2NoZW1hTW9kdWxlLFxuICBHaW9Kc29uU2NoZW1hLFxuICBHaW9Kc29uU2NoZW1hQ29udGV4dCxcbiAgR2lvTG9hZGVyTW9kdWxlLFxufSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEdpb0FzY2lpZG9jdG9yTW9kdWxlIH0gZnJvbSAnQGdyYXZpdGVlL3VpLXBhcnRpY2xlcy1hbmd1bGFyL2dpby1hc2NpaWRvY3Rvcic7XG5cbmltcG9ydCB7IEV4ZWN1dGlvblBoYXNlLCBpc1BvbGljeSwgaXNTaGFyZWRQb2xpY3lHcm91cFBvbGljeSwgU3RlcCwgdG9Qb2xpY3ksIEdlbmVyaWNQb2xpY3kgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvU2VydmljZSB9IGZyb20gJy4uLy4uL3BvbGljeS1zdHVkaW8vZ2lvLXBvbGljeS1zdHVkaW8uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIEdpb0Zvcm1Kc29uU2NoZW1hTW9kdWxlLFxuICAgIEdpb0FzY2lpZG9jdG9yTW9kdWxlLFxuICAgIEdpb0xvYWRlck1vZHVsZSxcbiAgICBHaW9CYW5uZXJNb2R1bGUsXG4gIF0sXG4gIHNlbGVjdG9yOiAnZ2lvLXBzLXN0ZXAtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcHMtc3RlcC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9TdGVwRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZE9ubHkgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3RlcD86IFN0ZXA7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIGV4ZWN1dGlvblBoYXNlITogRXhlY3V0aW9uUGhhc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdlbmVyaWNQb2xpY3khOiBHZW5lcmljUG9saWN5O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGlzVmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIHBvbGljeVNjaGVtYSQ/OiBPYnNlcnZhYmxlPEdpb0pzb25TY2hlbWEgfCBudWxsIHwgdW5kZWZpbmVkPjtcbiAgcHVibGljIHBvbGljeURvY3VtZW50YXRpb24kPzogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgaW5mb0Jhbm5lcj86IHN0cmluZztcblxuICBwdWJsaWMgc3RlcEZvcm0/OiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBjb250ZXh0PzogR2lvSnNvblNjaGVtYUNvbnRleHQ7XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgaXNNZXNzYWdlID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcG9saWN5U3R1ZGlvU2VydmljZTogR2lvUG9saWN5U3R1ZGlvU2VydmljZSkge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmdlbmVyaWNQb2xpY3kpIHtcbiAgICAgIGlmIChpc1BvbGljeSh0aGlzLmdlbmVyaWNQb2xpY3kpKSB7XG4gICAgICAgIHRoaXMucG9saWN5U2NoZW1hJCA9IHRoaXMucG9saWN5U3R1ZGlvU2VydmljZS5nZXRQb2xpY3lTY2hlbWEodG9Qb2xpY3kodGhpcy5nZW5lcmljUG9saWN5KSkucGlwZShcbiAgICAgICAgICBtYXAoc2NoZW1hID0+IHtcbiAgICAgICAgICAgIGlmIChHaW9Gb3JtSnNvblNjaGVtYUNvbXBvbmVudC5pc0Rpc3BsYXlhYmxlKHNjaGVtYSBhcyBHaW9Kc29uU2NoZW1hKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2NoZW1hIGFzIEdpb0pzb25TY2hlbWE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5wb2xpY3lEb2N1bWVudGF0aW9uJCA9IHRoaXMucG9saWN5U3R1ZGlvU2VydmljZS5nZXRQb2xpY3lEb2N1bWVudGF0aW9uKHRvUG9saWN5KHRoaXMuZ2VuZXJpY1BvbGljeSkpLnBpcGUoXG4gICAgICAgICAgbWFwKGRvYyA9PiAoaXNFbXB0eShkb2MpID8gJ05vIGRvY3VtZW50YXRpb24gYXZhaWxhYmxlLicgOiBkb2MpKSxcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKCdObyBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZS4nKSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoaXNTaGFyZWRQb2xpY3lHcm91cFBvbGljeSh0aGlzLmdlbmVyaWNQb2xpY3kpKSB7XG4gICAgICAgIHRoaXMucG9saWN5U2NoZW1hJCA9IG9mKHt9KTtcblxuICAgICAgICB0aGlzLnBvbGljeURvY3VtZW50YXRpb24kID0gb2YoJyAnKTtcblxuICAgICAgICB0aGlzLmluZm9CYW5uZXIgPSB0aGlzLmdlbmVyaWNQb2xpY3kucHJlcmVxdWlzaXRlTWVzc2FnZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuZXhlY3V0aW9uUGhhc2UpIHtcbiAgICAgIHRoaXMuY29udGV4dCA9IHtcbiAgICAgICAgZXhlY3V0aW9uUGhhc2U6IHRoaXMuZXhlY3V0aW9uUGhhc2UsXG4gICAgICB9O1xuICAgICAgdGhpcy5pc01lc3NhZ2UgPSB0aGlzLmV4ZWN1dGlvblBoYXNlID09PSAnTUVTU0FHRV9SRVFVRVNUJyB8fCB0aGlzLmV4ZWN1dGlvblBoYXNlID09PSAnTUVTU0FHRV9SRVNQT05TRSc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdFN0ZXBGb3JtKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGVwRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBGb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgZGVzY3JpcHRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGVwPy5kZXNjcmlwdGlvbiwgZGlzYWJsZWQ6IHRoaXMucmVhZE9ubHkgfSksXG4gICAgICBjb25kaXRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGVwPy5jb25kaXRpb24sIGRpc2FibGVkOiB0aGlzLnJlYWRPbmx5IH0pLFxuICAgICAgbWVzc2FnZUNvbmRpdGlvbjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IHVuZGVmaW5lZD4oeyB2YWx1ZTogdGhpcy5zdGVwPy5tZXNzYWdlQ29uZGl0aW9uLCBkaXNhYmxlZDogdGhpcy5yZWFkT25seSB9KSxcbiAgICAgIGNvbmZpZ3VyYXRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGVwPy5jb25maWd1cmF0aW9uLCBkaXNhYmxlZDogdGhpcy5yZWFkT25seSB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuc3RlcEZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZW1pdFN0ZXBDaGFuZ2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RlcEZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSh2YWxpZCA9PiB7XG4gICAgICB0aGlzLmlzVmFsaWQuZW1pdCh2YWxpZCA9PT0gJ1ZBTElEJyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Kc29uU2NoZW1hUmVhZHkoaXNSZWFkeTogYm9vbGVhbikge1xuICAgIC8vIFdoZW4gcmVhZHkgYW5kIGlmIHRoZSBmb3JtIGlzIHZhbGlkLCBlbWl0XG4gICAgaWYgKGlzUmVhZHkpIHtcbiAgICAgIHRoaXMuZW1pdFN0ZXBDaGFuZ2UoKTtcblxuICAgICAgaWYgKHRoaXMuc3RlcEZvcm0/LnN0YXR1cyA9PT0gJ1ZBTElEJykge1xuICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdCh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW1pdFN0ZXBDaGFuZ2UoKTogdm9pZCB7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLnN0ZXBGb3JtPy5nZXQoJ2NvbmZpZ3VyYXRpb24nKT8udmFsdWU7XG5cbiAgICBpZiAoaXNTaGFyZWRQb2xpY3lHcm91cFBvbGljeSh0aGlzLmdlbmVyaWNQb2xpY3kpKSB7XG4gICAgICBjb25maWd1cmF0aW9uID0geyBzaGFyZWRQb2xpY3lHcm91cElkOiB0aGlzLmdlbmVyaWNQb2xpY3kuc2hhcmVkUG9saWN5R3JvdXBJZCB9O1xuICAgIH1cblxuICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KHtcbiAgICAgIC4uLnRoaXMuc3RlcCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnN0ZXBGb3JtPy5nZXQoJ2Rlc2NyaXB0aW9uJyk/LnZhbHVlLFxuICAgICAgY29uZGl0aW9uOiB0aGlzLnN0ZXBGb3JtPy5nZXQoJ2NvbmRpdGlvbicpPy52YWx1ZSA/PyB1bmRlZmluZWQsXG4gICAgICBtZXNzYWdlQ29uZGl0aW9uOiB0aGlzLnN0ZXBGb3JtPy5nZXQoJ21lc3NhZ2VDb25kaXRpb24nKT8udmFsdWUgPz8gdW5kZWZpbmVkLFxuICAgICAgY29uZmlndXJhdGlvbixcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDIzIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gICAgXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgXG4gICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAgICBcbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG5cbjxkaXYgY2xhc3M9XCJzZXR0aW5nc1wiPlxuICA8ZGl2IGNsYXNzPVwic2V0dGluZ3NfX2hlYWRlclwiPlNldHRpbmdzPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmdzX19jb250ZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXBGb3JtICYmIChwb2xpY3lTY2hlbWEkIHwgYXN5bmMpIGFzIHBvbGljeVNjaGVtYTsgZWxzZSBsb2FkaW5nVG1wbFwiIFtmb3JtR3JvdXBdPVwic3RlcEZvcm1cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5EZXNjcmlwdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIiBjZGtGb2N1c0luaXRpYWw+PC90ZXh0YXJlYT5cbiAgICAgICAgPG1hdC1oaW50PkRlc2NyaWJlIGhvdyB5b3VyIHBvbGljeSB3b3Jrcy48L21hdC1oaW50PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPlRyaWdnZXIgY29uZGl0aW9uPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjb25kaXRpb25cIiAvPlxuICAgICAgICA8bWF0LWhpbnQ+VGhlIGNvbmRpdGlvbiB0byBleGVjdXRlIHRoaXMgcG9saWN5LiBTdXBwb3J0cyBFeHByZXNzaW9uIExhbmd1YWdlLjwvbWF0LWhpbnQ+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICBAaWYgKGlzTWVzc2FnZSkge1xuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5NZXNzYWdlIHRyaWdnZXIgY29uZGl0aW9uPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm1lc3NhZ2VDb25kaXRpb25cIiAvPlxuICAgICAgICAgIDxtYXQtaGludD5UaGUgY29uZGl0aW9uIHRvIGV4ZWN1dGUgdGhpcyBwb2xpY3kgb24gbWVzc2FnZS4gU3VwcG9ydHMgRXhwcmVzc2lvbiBMYW5ndWFnZS48L21hdC1oaW50PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgfVxuXG4gICAgICA8Z2lvLWZvcm0tanNvbi1zY2hlbWFcbiAgICAgICAgKm5nSWY9XCJwb2xpY3lTY2hlbWFcIlxuICAgICAgICBbanNvblNjaGVtYV09XCIkYW55KHBvbGljeVNjaGVtYSlcIlxuICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICAgICAgKHJlYWR5KT1cIm9uSnNvblNjaGVtYVJlYWR5KCRldmVudClcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb25maWd1cmF0aW9uXCJcbiAgICAgID48L2dpby1mb3JtLWpzb24tc2NoZW1hPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZG9jdW1lbnRhdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRhdGlvbl9faGVhZGVyXCI+RG9jdW1lbnRhdGlvbjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkb2N1bWVudGF0aW9uX19jb250ZW50XCI+XG4gICAgPGdpby1iYW5uZXItd2FybmluZyAqbmdJZj1cImluZm9CYW5uZXJcIj5cbiAgICAgIFByZXJlcXVpc2l0ZSBtZXNzYWdlXG4gICAgICA8c3BhbiBnaW9CYW5uZXJCb2R5Pnt7IGluZm9CYW5uZXIgfX08L3NwYW4+XG4gICAgPC9naW8tYmFubmVyLXdhcm5pbmc+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvbGljeURvY3VtZW50YXRpb24kIHwgYXN5bmMgYXMgcG9saWN5RG9jdW1lbnRhdGlvbjsgZWxzZSBsb2FkaW5nVG1wbFwiPlxuICAgICAgPGdpby1hc2NpaWRvY3RvciBbY29udGVudF09XCJwb2xpY3lEb2N1bWVudGF0aW9uXCI+PC9naW8tYXNjaWlkb2N0b3I+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RtcGw+XG4gIDxnaW8tbG9hZGVyPjwvZ2lvLWxvYWRlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -133,10 +133,10 @@ export class GioPolicyGroupStudioComponent {
133
133
  this.steps = steps;
134
134
  this.policyGroupChange.emit(steps);
135
135
  }
136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyGroupStudioComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
137
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: GioPolicyGroupStudioComponent, isStandalone: true, selector: "gio-policy-group-studio", inputs: { policies: ["policies", "policies", (policies) => policies ?? []], readOnly: "readOnly", apiType: "apiType", executionPhase: "executionPhase", policySchemaFetcher: "policySchemaFetcher", policyDocumentationFetcher: "policyDocumentationFetcher", policyGroup: "policyGroup" }, outputs: { policyGroupChange: "policyGroupChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (!isLoading && policyGroupVM) {\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n [name]=\"policyGroupVM.name\"\n [description]=\"policyGroupVM.description\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"startConnector\"\n [endConnector]=\"endConnector\"\n [steps]=\"steps\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n [policyExecutionPhase]=\"executionPhase\"\n (stepsChange)=\"onStepsChange($event)\"\n ></gio-ps-flow-details-phase>\n} @else {\n <gio-loader></gio-loader>\n}\n", styles: [""], dependencies: [{ kind: "component", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["readOnly", "steps", "name", "description", "startConnector", "endConnector", "apiType", "genericPolicies", "policyExecutionPhase", "trialUrl"], outputs: ["stepsChange"] }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i2.GioLoaderComponent, selector: "gio-loader" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
136
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyGroupStudioComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
137
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: GioPolicyGroupStudioComponent, isStandalone: true, selector: "gio-policy-group-studio", inputs: { policies: ["policies", "policies", (policies) => policies ?? []], readOnly: "readOnly", apiType: "apiType", executionPhase: "executionPhase", policySchemaFetcher: "policySchemaFetcher", policyDocumentationFetcher: "policyDocumentationFetcher", policyGroup: "policyGroup" }, outputs: { policyGroupChange: "policyGroupChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (!isLoading && policyGroupVM) {\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n [name]=\"policyGroupVM.name\"\n [description]=\"policyGroupVM.description\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"startConnector\"\n [endConnector]=\"endConnector\"\n [steps]=\"steps\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n [policyExecutionPhase]=\"executionPhase\"\n (stepsChange)=\"onStepsChange($event)\"\n ></gio-ps-flow-details-phase>\n} @else {\n <gio-loader></gio-loader>\n}\n", styles: [""], dependencies: [{ kind: "component", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["readOnly", "steps", "name", "description", "startConnector", "endConnector", "apiType", "genericPolicies", "policyExecutionPhase", "trialUrl"], outputs: ["stepsChange"] }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i2.GioLoaderComponent, selector: "gio-loader" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
138
138
  }
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyGroupStudioComponent, decorators: [{
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyGroupStudioComponent, decorators: [{
140
140
  type: Component,
141
141
  args: [{ selector: 'gio-policy-group-studio', standalone: true, imports: [GioPolicyStudioDetailsPhaseComponent, GioFormJsonSchemaModule, GioLoaderModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n\n Copyright (C) 2024 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n@if (!isLoading && policyGroupVM) {\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n [name]=\"policyGroupVM.name\"\n [description]=\"policyGroupVM.description\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"startConnector\"\n [endConnector]=\"endConnector\"\n [steps]=\"steps\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n [policyExecutionPhase]=\"executionPhase\"\n (stepsChange)=\"onStepsChange($event)\"\n ></gio-ps-flow-details-phase>\n} @else {\n <gio-loader></gio-loader>\n}\n" }]
142
142
  }], ctorParameters: () => [{ type: i1.GioPolicyStudioService }], propDecorators: { policies: [{
@@ -170,10 +170,10 @@ export class GioPolicyStudioComponent {
170
170
  initGenericPolicies() {
171
171
  this.genericPolicies = toGenericPolicies(this.policies ?? [], this.sharedPolicyGroupPolicies ?? []);
172
172
  }
173
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyStudioComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
174
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: GioPolicyStudioComponent, isStandalone: true, selector: "gio-policy-studio", inputs: { readOnly: "readOnly", apiType: "apiType", flowExecution: "flowExecution", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", commonFlows: "commonFlows", plans: "plans", policies: "policies", sharedPolicyGroupPolicies: "sharedPolicyGroupPolicies", trialUrl: "trialUrl", loading: "loading", policySchemaFetcher: "policySchemaFetcher", policyDocumentationFetcher: "policyDocumentationFetcher" }, outputs: { save: "save" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__apiInfo\" *ngIf=\"!loading; else loadingApiInfo\">\n <span class=\"gio-badge-primary\">\n {{ apiType | titlecase }}\n </span>\n <span\n class=\"gio-badge-neutral\"\n [matTooltip]=\"connectorsTooltip\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"gio-policy-studio__tooltip-line-break\"\n >\n <mat-icon *ngFor=\"let entrypoint of entrypointsInfo\" class=\"gio-left\" [svgIcon]=\"entrypoint.icon\"></mat-icon>\n <mat-icon *ngFor=\"let endpoint of endpointsInfo\" class=\"gio-left\" [svgIcon]=\"endpoint.icon\"></mat-icon>\n </span>\n </div>\n <ng-template #loadingApiInfo>\n <div class=\"header__apiInfo\">\n <span class=\"gio-badge-primary\">&nbsp;</span>\n <span class=\"gio-badge-neutral\">&nbsp;</span>\n </div>\n </ng-template>\n\n <div class=\"header__btn\">\n <button *ngIf=\"!saving\" mat-flat-button color=\"primary\" [disabled]=\"loading || disableSaveButton\" (click)=\"onSave()\">Save</button>\n <button *ngIf=\"saving\" mat-flat-button color=\"primary\" disabled>Saving...</button>\n </div>\n</div>\n\n<div class=\"wrapper\">\n <div class=\"wrapper__flowsMenu\">\n <gio-ps-flows-menu\n [readOnly]=\"readOnly\"\n [loading]=\"loading\"\n [apiType]=\"apiType\"\n [flowExecution]=\"flowExecution\"\n [flowsGroups]=\"flowsGroups\"\n [entrypoints]=\"entrypointsInfo\"\n (flowsGroupsChange)=\"onFlowsGroupsChange($event)\"\n (flowExecutionChange)=\"onFlowExecutionChange($event)\"\n [(selectedFlow)]=\"selectedFlow\"\n ></gio-ps-flows-menu>\n </div>\n\n <div class=\"wrapper__flowDetails\">\n <gio-ps-flow-details\n [readOnly]=\"readOnly\"\n [loading]=\"loading\"\n [apiType]=\"apiType\"\n [flow]=\"selectedFlow\"\n [entrypointsInfo]=\"entrypointsInfo\"\n [endpointsInfo]=\"endpointsInfo\"\n [policies]=\"policies\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n (flowChange)=\"onSelectedFlowChange($event)\"\n (deleteFlow)=\"onDeleteSelectedFlow($event)\"\n ></gio-ps-flow-details>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;height:100%;flex-direction:column;padding:16px;background-color:#fff}::ng-deep .gio-policy-studio__tooltip-line-break{white-space:pre-line}.header{display:flex;align-items:center;padding-bottom:16px}.header__apiInfo{flex:1 1 auto}.wrapper{display:flex;min-height:0;flex:1 1 auto;flex-direction:row;gap:16px}.wrapper__flowsMenu{overflow:hidden;min-width:230px;max-width:400px;flex:1 1 33%;border:1px solid #d3d5dc;border-radius:8px}.wrapper__flowDetails{overflow:hidden;flex:1 1 66%;border:1px solid #d3d5dc;border-radius:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioFlowsMenuComponent, selector: "gio-ps-flows-menu", inputs: ["readOnly", "loading", "apiType", "flowExecution", "flowsGroups", "selectedFlow", "entrypoints"], outputs: ["selectedFlowChange", "flowsGroupsChange", "flowExecutionChange"] }, { kind: "component", type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: ["readOnly", "loading", "apiType", "flow", "entrypointsInfo", "endpointsInfo", "policies", "genericPolicies", "trialUrl"], outputs: ["flowChange", "deleteFlow"] }] }); }
173
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyStudioComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
174
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: GioPolicyStudioComponent, isStandalone: true, selector: "gio-policy-studio", inputs: { readOnly: "readOnly", apiType: "apiType", flowExecution: "flowExecution", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", commonFlows: "commonFlows", plans: "plans", policies: "policies", sharedPolicyGroupPolicies: "sharedPolicyGroupPolicies", trialUrl: "trialUrl", loading: "loading", policySchemaFetcher: "policySchemaFetcher", policyDocumentationFetcher: "policyDocumentationFetcher" }, outputs: { save: "save" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__apiInfo\" *ngIf=\"!loading; else loadingApiInfo\">\n <span class=\"gio-badge-primary\">\n {{ apiType | titlecase }}\n </span>\n <span\n class=\"gio-badge-neutral\"\n [matTooltip]=\"connectorsTooltip\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"gio-policy-studio__tooltip-line-break\"\n >\n <mat-icon *ngFor=\"let entrypoint of entrypointsInfo\" class=\"gio-left\" [svgIcon]=\"entrypoint.icon\"></mat-icon>\n <mat-icon *ngFor=\"let endpoint of endpointsInfo\" class=\"gio-left\" [svgIcon]=\"endpoint.icon\"></mat-icon>\n </span>\n </div>\n <ng-template #loadingApiInfo>\n <div class=\"header__apiInfo\">\n <span class=\"gio-badge-primary\">&nbsp;</span>\n <span class=\"gio-badge-neutral\">&nbsp;</span>\n </div>\n </ng-template>\n\n <div class=\"header__btn\">\n <button *ngIf=\"!saving\" mat-flat-button color=\"primary\" [disabled]=\"loading || disableSaveButton\" (click)=\"onSave()\">Save</button>\n <button *ngIf=\"saving\" mat-flat-button color=\"primary\" disabled>Saving...</button>\n </div>\n</div>\n\n<div class=\"wrapper\">\n <div class=\"wrapper__flowsMenu\">\n <gio-ps-flows-menu\n [readOnly]=\"readOnly\"\n [loading]=\"loading\"\n [apiType]=\"apiType\"\n [flowExecution]=\"flowExecution\"\n [flowsGroups]=\"flowsGroups\"\n [entrypoints]=\"entrypointsInfo\"\n (flowsGroupsChange)=\"onFlowsGroupsChange($event)\"\n (flowExecutionChange)=\"onFlowExecutionChange($event)\"\n [(selectedFlow)]=\"selectedFlow\"\n ></gio-ps-flows-menu>\n </div>\n\n <div class=\"wrapper__flowDetails\">\n <gio-ps-flow-details\n [readOnly]=\"readOnly\"\n [loading]=\"loading\"\n [apiType]=\"apiType\"\n [flow]=\"selectedFlow\"\n [entrypointsInfo]=\"entrypointsInfo\"\n [endpointsInfo]=\"endpointsInfo\"\n [policies]=\"policies\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n (flowChange)=\"onSelectedFlowChange($event)\"\n (deleteFlow)=\"onDeleteSelectedFlow($event)\"\n ></gio-ps-flow-details>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;height:100%;flex-direction:column;padding:16px;background-color:#fff}::ng-deep .gio-policy-studio__tooltip-line-break{white-space:pre-line}.header{display:flex;align-items:center;padding-bottom:16px}.header__apiInfo{flex:1 1 auto}.wrapper{display:flex;min-height:0;flex:1 1 auto;flex-direction:row;gap:16px}.wrapper__flowsMenu{overflow:hidden;min-width:230px;max-width:400px;flex:1 1 33%;border:1px solid #d3d5dc;border-radius:8px}.wrapper__flowDetails{overflow:hidden;flex:1 1 66%;border:1px solid #d3d5dc;border-radius:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioFlowsMenuComponent, selector: "gio-ps-flows-menu", inputs: ["readOnly", "loading", "apiType", "flowExecution", "flowsGroups", "selectedFlow", "entrypoints"], outputs: ["selectedFlowChange", "flowsGroupsChange", "flowExecutionChange"] }, { kind: "component", type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: ["readOnly", "loading", "apiType", "flow", "entrypointsInfo", "endpointsInfo", "policies", "genericPolicies", "trialUrl"], outputs: ["flowChange", "deleteFlow"] }] }); }
175
175
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyStudioComponent, decorators: [{
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyStudioComponent, decorators: [{
177
177
  type: Component,
178
178
  args: [{ standalone: true, imports: [
179
179
  CommonModule,
@@ -62,10 +62,10 @@ export class GioPolicyStudioService {
62
62
  this.documentationsCache[policy.id] = new BehaviorSubject(documentation);
63
63
  }));
64
64
  }
65
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyStudioService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
66
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyStudioService, providedIn: 'root' }); }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyStudioService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
66
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyStudioService, providedIn: 'root' }); }
67
67
  }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: GioPolicyStudioService, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: GioPolicyStudioService, decorators: [{
69
69
  type: Injectable,
70
70
  args: [{
71
71
  providedIn: 'root',
@@ -34,6 +34,10 @@ export class GioPolicyStudioStepFormHarness extends ComponentHarness {
34
34
  const conditionInput = await this.getConditionInput();
35
35
  await conditionInput.setValue(stepForm.condition);
36
36
  }
37
+ if (stepForm.messageCondition) {
38
+ const messageConditionInput = await this.locatorFor(MatInputHarness.with({ selector: '[formControlName="messageCondition"]' }))();
39
+ await messageConditionInput.setValue(stepForm.messageCondition);
40
+ }
37
41
  if (stepForm.waitForPolicyFormCompletionCb) {
38
42
  await stepForm.waitForPolicyFormCompletionCb(this.locatorFactory);
39
43
  }
@@ -49,4 +53,4 @@ export class GioPolicyStudioStepFormHarness extends ComponentHarness {
49
53
  return documentation.getAttribute('ng-reflect-content');
50
54
  }
51
55
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZm9ybS5oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zdGVwLWZvcm0vZ2lvLXBzLXN0ZXAtZm9ybS5oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQVVsRSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsZ0JBQWdCO0lBQXBFOztRQUdVLHdCQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQ0FBaUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3RyxzQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFtQ25ILENBQUM7YUF2Q2UsaUJBQVksR0FBRyxrQkFBa0IsQUFBckIsQ0FBc0I7SUFNekMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFrQjtRQUN6QyxJQUFJLFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1lBQ2hELFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1FBQ2hELENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDMUQsTUFBTSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RELE1BQU0sY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELElBQUksUUFBUSxDQUFDLDZCQUE2QixFQUFFLENBQUM7WUFDM0MsTUFBTSxRQUFRLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQjtRQUczQixNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFMUQsT0FBTztZQUNMLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtTQUMvQyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0I7UUFDM0IsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLDJDQUEyQyxDQUFDLEVBQUUsQ0FBQztRQUMzRixPQUFPLGFBQWEsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50SGFybmVzcywgTG9jYXRvckZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBNYXRJbnB1dEhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dC90ZXN0aW5nJztcblxuZXhwb3J0IHR5cGUgU3RlcEZvcm0gPSB7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjb25kaXRpb24/OiBzdHJpbmc7XG4gIC8vIENhbGxiYWNrIHRvIGFsbG93IHRvIGZpbGwgdGhlIGZpZWxkcyBvZiB0aGUganNvblNjaGVtYUZvcm0gc3BlY2lmaWMgdG8gZWFjaCBwb2xpY3ksIGlmIG5lY2Vzc2FyeS4gVXNlZnVsIGlmIHNvbWUgYXJlIHJlcXVpcmVkLlxuICB3YWl0Rm9yUG9saWN5Rm9ybUNvbXBsZXRpb25DYj86IChsb2NhdG9yOiBMb2NhdG9yRmFjdG9yeSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgLy8gQ2FsbGJhY2sgdG8gYWxsb3cgdG8gZmlsbCBpbml0IGh0dHAgcmVxdWVzdCBmaWVsZHMuIFVzZWZ1bCBmb3IgaHR0cFRlc3RpbmdDb250cm9sbGVyLmV4cGVjdE9uZSgpIG9ubiBgL3NjaGVtYWAgJiBgYC9kb2N1bWVudGF0aW9uYCByZXF1ZXN0cy5cbiAgd2FpdEZvckluaXRIdHRwUmVxdWVzdENvbXBsZXRpb25DYj86ICgpID0+IHZvaWQ7XG59O1xuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb1N0ZXBGb3JtSGFybmVzcyBleHRlbmRzIENvbXBvbmVudEhhcm5lc3Mge1xuICBwdWJsaWMgc3RhdGljIGhvc3RTZWxlY3RvciA9ICdnaW8tcHMtc3RlcC1mb3JtJztcblxuICBwcml2YXRlIGdldERlc2NyaXB0aW9uSW5wdXQgPSB0aGlzLmxvY2F0b3JGb3IoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogJ1tmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXScgfSkpO1xuXG4gIHByaXZhdGUgZ2V0Q29uZGl0aW9uSW5wdXQgPSB0aGlzLmxvY2F0b3JGb3IoTWF0SW5wdXRIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogJ1tmb3JtQ29udHJvbE5hbWU9XCJjb25kaXRpb25cIl0nIH0pKTtcblxuICBwdWJsaWMgYXN5bmMgc2V0U3RlcEZvcm0oc3RlcEZvcm06IFN0ZXBGb3JtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHN0ZXBGb3JtLndhaXRGb3JJbml0SHR0cFJlcXVlc3RDb21wbGV0aW9uQ2IpIHtcbiAgICAgIHN0ZXBGb3JtLndhaXRGb3JJbml0SHR0cFJlcXVlc3RDb21wbGV0aW9uQ2IoKTtcbiAgICB9XG5cbiAgICBpZiAoc3RlcEZvcm0uZGVzY3JpcHRpb24pIHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uSW5wdXQgPSBhd2FpdCB0aGlzLmdldERlc2NyaXB0aW9uSW5wdXQoKTtcbiAgICAgIGF3YWl0IGRlc2NyaXB0aW9uSW5wdXQuc2V0VmFsdWUoc3RlcEZvcm0uZGVzY3JpcHRpb24pO1xuICAgIH1cbiAgICBpZiAoc3RlcEZvcm0uY29uZGl0aW9uKSB7XG4gICAgICBjb25zdCBjb25kaXRpb25JbnB1dCA9IGF3YWl0IHRoaXMuZ2V0Q29uZGl0aW9uSW5wdXQoKTtcbiAgICAgIGF3YWl0IGNvbmRpdGlvbklucHV0LnNldFZhbHVlKHN0ZXBGb3JtLmNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHN0ZXBGb3JtLndhaXRGb3JQb2xpY3lGb3JtQ29tcGxldGlvbkNiKSB7XG4gICAgICBhd2FpdCBzdGVwRm9ybS53YWl0Rm9yUG9saWN5Rm9ybUNvbXBsZXRpb25DYih0aGlzLmxvY2F0b3JGYWN0b3J5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RlcEZvcm1WYWx1ZSgpOiBQcm9taXNlPHtcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uSW5wdXQgPSBhd2FpdCB0aGlzLmdldERlc2NyaXB0aW9uSW5wdXQoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogYXdhaXQgZGVzY3JpcHRpb25JbnB1dC5nZXRWYWx1ZSgpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RG9jdW1lbnRhdGlvbigpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBjb25zdCBkb2N1bWVudGF0aW9uID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKCcuZG9jdW1lbnRhdGlvbl9fY29udGVudCA+IGdpby1hc2NpaWRvY3RvcicpKCk7XG4gICAgcmV0dXJuIGRvY3VtZW50YXRpb24uZ2V0QXR0cmlidXRlKCduZy1yZWZsZWN0LWNvbnRlbnQnKTtcbiAgfVxufVxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZm9ybS5oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zdGVwLWZvcm0vZ2lvLXBzLXN0ZXAtZm9ybS5oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFrQixNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQVdsRSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsZ0JBQWdCO0lBQXBFOztRQUdVLHdCQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQ0FBaUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3RyxzQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUF1Q25ILENBQUM7YUEzQ2UsaUJBQVksR0FBRyxrQkFBa0IsQUFBckIsQ0FBc0I7SUFNekMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFrQjtRQUN6QyxJQUFJLFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1lBQ2hELFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1FBQ2hELENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QixNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDMUQsTUFBTSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RELE1BQU0sY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxzQ0FBc0MsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xJLE1BQU0scUJBQXFCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQzNDLE1BQU0sUUFBUSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0I7UUFHM0IsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTFELE9BQU87WUFDTCxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUU7U0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQywyQ0FBMkMsQ0FBQyxFQUFFLENBQUM7UUFDM0YsT0FBTyxhQUFhLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudEhhcm5lc3MsIExvY2F0b3JGYWN0b3J5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgTWF0SW5wdXRIYXJuZXNzIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQvdGVzdGluZyc7XG5cbmV4cG9ydCB0eXBlIFN0ZXBGb3JtID0ge1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY29uZGl0aW9uPzogc3RyaW5nO1xuICBtZXNzYWdlQ29uZGl0aW9uPzogc3RyaW5nO1xuICAvLyBDYWxsYmFjayB0byBhbGxvdyB0byBmaWxsIHRoZSBmaWVsZHMgb2YgdGhlIGpzb25TY2hlbWFGb3JtIHNwZWNpZmljIHRvIGVhY2ggcG9saWN5LCBpZiBuZWNlc3NhcnkuIFVzZWZ1bCBpZiBzb21lIGFyZSByZXF1aXJlZC5cbiAgd2FpdEZvclBvbGljeUZvcm1Db21wbGV0aW9uQ2I/OiAobG9jYXRvcjogTG9jYXRvckZhY3RvcnkpID0+IFByb21pc2U8dm9pZD47XG4gIC8vIENhbGxiYWNrIHRvIGFsbG93IHRvIGZpbGwgaW5pdCBodHRwIHJlcXVlc3QgZmllbGRzLiBVc2VmdWwgZm9yIGh0dHBUZXN0aW5nQ29udHJvbGxlci5leHBlY3RPbmUoKSBvbm4gYC9zY2hlbWFgICYgYGAvZG9jdW1lbnRhdGlvbmAgcmVxdWVzdHMuXG4gIHdhaXRGb3JJbml0SHR0cFJlcXVlc3RDb21wbGV0aW9uQ2I/OiAoKSA9PiB2b2lkO1xufTtcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9TdGVwRm9ybUhhcm5lc3MgZXh0ZW5kcyBDb21wb25lbnRIYXJuZXNzIHtcbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnZ2lvLXBzLXN0ZXAtZm9ybSc7XG5cbiAgcHJpdmF0ZSBnZXREZXNjcmlwdGlvbklucHV0ID0gdGhpcy5sb2NhdG9yRm9yKE1hdElucHV0SGFybmVzcy53aXRoKHsgc2VsZWN0b3I6ICdbZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIl0nIH0pKTtcblxuICBwcml2YXRlIGdldENvbmRpdGlvbklucHV0ID0gdGhpcy5sb2NhdG9yRm9yKE1hdElucHV0SGFybmVzcy53aXRoKHsgc2VsZWN0b3I6ICdbZm9ybUNvbnRyb2xOYW1lPVwiY29uZGl0aW9uXCJdJyB9KSk7XG5cbiAgcHVibGljIGFzeW5jIHNldFN0ZXBGb3JtKHN0ZXBGb3JtOiBTdGVwRm9ybSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChzdGVwRm9ybS53YWl0Rm9ySW5pdEh0dHBSZXF1ZXN0Q29tcGxldGlvbkNiKSB7XG4gICAgICBzdGVwRm9ybS53YWl0Rm9ySW5pdEh0dHBSZXF1ZXN0Q29tcGxldGlvbkNiKCk7XG4gICAgfVxuXG4gICAgaWYgKHN0ZXBGb3JtLmRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBkZXNjcmlwdGlvbklucHV0ID0gYXdhaXQgdGhpcy5nZXREZXNjcmlwdGlvbklucHV0KCk7XG4gICAgICBhd2FpdCBkZXNjcmlwdGlvbklucHV0LnNldFZhbHVlKHN0ZXBGb3JtLmRlc2NyaXB0aW9uKTtcbiAgICB9XG4gICAgaWYgKHN0ZXBGb3JtLmNvbmRpdGlvbikge1xuICAgICAgY29uc3QgY29uZGl0aW9uSW5wdXQgPSBhd2FpdCB0aGlzLmdldENvbmRpdGlvbklucHV0KCk7XG4gICAgICBhd2FpdCBjb25kaXRpb25JbnB1dC5zZXRWYWx1ZShzdGVwRm9ybS5jb25kaXRpb24pO1xuICAgIH1cbiAgICBpZiAoc3RlcEZvcm0ubWVzc2FnZUNvbmRpdGlvbikge1xuICAgICAgY29uc3QgbWVzc2FnZUNvbmRpdGlvbklucHV0ID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKE1hdElucHV0SGFybmVzcy53aXRoKHsgc2VsZWN0b3I6ICdbZm9ybUNvbnRyb2xOYW1lPVwibWVzc2FnZUNvbmRpdGlvblwiXScgfSkpKCk7XG4gICAgICBhd2FpdCBtZXNzYWdlQ29uZGl0aW9uSW5wdXQuc2V0VmFsdWUoc3RlcEZvcm0ubWVzc2FnZUNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHN0ZXBGb3JtLndhaXRGb3JQb2xpY3lGb3JtQ29tcGxldGlvbkNiKSB7XG4gICAgICBhd2FpdCBzdGVwRm9ybS53YWl0Rm9yUG9saWN5Rm9ybUNvbXBsZXRpb25DYih0aGlzLmxvY2F0b3JGYWN0b3J5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3RlcEZvcm1WYWx1ZSgpOiBQcm9taXNlPHtcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgfT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uSW5wdXQgPSBhd2FpdCB0aGlzLmdldERlc2NyaXB0aW9uSW5wdXQoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogYXdhaXQgZGVzY3JpcHRpb25JbnB1dC5nZXRWYWx1ZSgpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0RG9jdW1lbnRhdGlvbigpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBjb25zdCBkb2N1bWVudGF0aW9uID0gYXdhaXQgdGhpcy5sb2NhdG9yRm9yKCcuZG9jdW1lbnRhdGlvbl9fY29udGVudCA+IGdpby1hc2NpaWRvY3RvcicpKCk7XG4gICAgcmV0dXJuIGRvY3VtZW50YXRpb24uZ2V0QXR0cmlidXRlKCduZy1yZWZsZWN0LWNvbnRlbnQnKTtcbiAgfVxufVxuIl19
@@ -1162,6 +1162,10 @@ class GioPolicyStudioStepFormHarness extends ComponentHarness {
1162
1162
  const conditionInput = await this.getConditionInput();
1163
1163
  await conditionInput.setValue(stepForm.condition);
1164
1164
  }
1165
+ if (stepForm.messageCondition) {
1166
+ const messageConditionInput = await this.locatorFor(MatInputHarness.with({ selector: '[formControlName="messageCondition"]' }))();
1167
+ await messageConditionInput.setValue(stepForm.messageCondition);
1168
+ }
1165
1169
  if (stepForm.waitForPolicyFormCompletionCb) {
1166
1170
  await stepForm.waitForPolicyFormCompletionCb(this.locatorFactory);
1167
1171
  }