ng-configcat-publicapi-ui 2.13.2 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/_directives/input-display-normalizer.directive.mjs +4 -4
- package/esm2020/lib/_models/deleteSettingModel.mjs +2 -0
- package/esm2020/lib/_models/index.mjs +2 -1
- package/esm2020/lib/_services/public-api.service.mjs +4 -4
- package/esm2020/lib/_services/setting-list-form-helper.mjs +4 -4
- package/esm2020/lib/authorization/authorization.component.mjs +5 -5
- package/esm2020/lib/base/base.component.mjs +4 -4
- package/esm2020/lib/configuration.mjs +4 -4
- package/esm2020/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.mjs +27 -0
- package/esm2020/lib/dialogs/expand-dialog/expand-dialog.component.mjs +6 -5
- package/esm2020/lib/dialogs/reason-dialog/reason-dialog.component.mjs +5 -5
- package/esm2020/lib/dialogs/save-snackbar/save-snackbar.component.mjs +4 -4
- package/esm2020/lib/ng-configcat-publicapi-ui.module.mjs +9 -9
- package/esm2020/lib/selects/config-select/config-select.component.mjs +6 -6
- package/esm2020/lib/selects/environment-select/environment-select.component.mjs +5 -5
- package/esm2020/lib/selects/product-select/product-select.component.mjs +4 -4
- package/esm2020/lib/selects/setting-select/setting-select.component.mjs +5 -5
- package/esm2020/lib/setting-item/setting-item.component.mjs +5 -18
- package/esm2020/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.mjs +9 -9
- package/esm2020/lib/setting-list/setting/rollout-rules/rollout-rules.component.mjs +5 -5
- package/esm2020/lib/setting-list/setting/setting.component.mjs +7 -17
- package/esm2020/lib/setting-list/setting/value/value.component.mjs +4 -4
- package/esm2020/lib/setting-list/setting-list.component.mjs +6 -38
- package/fesm2015/ng-configcat-publicapi-ui.mjs +111 -162
- package/fesm2015/ng-configcat-publicapi-ui.mjs.map +1 -1
- package/fesm2020/ng-configcat-publicapi-ui.mjs +109 -162
- package/fesm2020/ng-configcat-publicapi-ui.mjs.map +1 -1
- package/lib/_directives/input-display-normalizer.directive.d.ts +1 -1
- package/lib/_models/deleteSettingModel.d.ts +6 -0
- package/lib/_models/index.d.ts +1 -0
- package/lib/authorization/authorization.component.d.ts +1 -1
- package/lib/base/base.component.d.ts +1 -1
- package/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.d.ts +17 -0
- package/lib/dialogs/expand-dialog/expand-dialog.component.d.ts +1 -1
- package/lib/dialogs/reason-dialog/reason-dialog.component.d.ts +1 -1
- package/lib/dialogs/save-snackbar/save-snackbar.component.d.ts +1 -1
- package/lib/ng-configcat-publicapi-ui.module.d.ts +4 -4
- package/lib/selects/config-select/config-select.component.d.ts +1 -1
- package/lib/selects/environment-select/environment-select.component.d.ts +1 -1
- package/lib/selects/product-select/product-select.component.d.ts +1 -1
- package/lib/selects/setting-select/setting-select.component.d.ts +1 -1
- package/lib/setting-item/setting-item.component.d.ts +1 -4
- package/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.d.ts +1 -1
- package/lib/setting-list/setting/rollout-rules/rollout-rules.component.d.ts +1 -1
- package/lib/setting-list/setting/setting.component.d.ts +5 -9
- package/lib/setting-list/setting/value/value.component.d.ts +1 -1
- package/lib/setting-list/setting-list.component.d.ts +5 -6
- package/package.json +4 -4
- package/esm2020/lib/dialogs/concurrent-dialog/concurrent-dialog.component.mjs +0 -25
- package/lib/dialogs/concurrent-dialog/concurrent-dialog.component.d.ts +0 -12
|
@@ -11,16 +11,13 @@ import * as i7 from "./rollout-percentage-items/rollout-percentage-items.compone
|
|
|
11
11
|
import * as i8 from "./rollout-rules/rollout-rules.component";
|
|
12
12
|
import * as i9 from "./value/value.component";
|
|
13
13
|
export class SettingComponent {
|
|
14
|
-
constructor(formHelper
|
|
14
|
+
constructor(formHelper) {
|
|
15
15
|
this.formHelper = formHelper;
|
|
16
|
-
this.cdRef = cdRef;
|
|
17
16
|
this.dashboardBasePath = 'https://app.configcat.com';
|
|
18
17
|
this.readOnly = false;
|
|
19
|
-
this.canEditSetting = false;
|
|
20
18
|
this.canDeleteSetting = false;
|
|
21
19
|
this.deleteSettingText = 'Delete setting';
|
|
22
20
|
this.showEnvironmentName = false;
|
|
23
|
-
this.editSettingRequested = new EventEmitter();
|
|
24
21
|
this.deleteSettingRequested = new EventEmitter();
|
|
25
22
|
this.rulesBeingRendered = false;
|
|
26
23
|
this.SettingType = SettingType;
|
|
@@ -101,9 +98,6 @@ export class SettingComponent {
|
|
|
101
98
|
this.rolloutPercentageItems().clear();
|
|
102
99
|
this.rolloutPercentageItems().markAsDirty();
|
|
103
100
|
}
|
|
104
|
-
editSetting() {
|
|
105
|
-
this.editSettingRequested.emit({ setting: this.setting() });
|
|
106
|
-
}
|
|
107
101
|
deleteSetting() {
|
|
108
102
|
this.deleteSettingRequested.emit({ setting: this.setting() });
|
|
109
103
|
}
|
|
@@ -111,12 +105,12 @@ export class SettingComponent {
|
|
|
111
105
|
return this.dashboardBasePath + '/' + this.productId + '/' + this.configId + '/' + this.environmentId + '?settingId=' + this.setting().settingId;
|
|
112
106
|
}
|
|
113
107
|
}
|
|
114
|
-
SettingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
115
|
-
SettingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
116
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
108
|
+
SettingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SettingComponent, deps: [{ token: i1.SettingListFormHelper }], target: i0.ɵɵFactoryTarget.Component });
|
|
109
|
+
SettingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SettingComponent, selector: "setting", inputs: { dashboardBasePath: "dashboardBasePath", productId: "productId", environmentId: "environmentId", configId: "configId", formGroup: "formGroup", readOnly: "readOnly", canDeleteSetting: "canDeleteSetting", deleteSettingText: "deleteSettingText", showEnvironmentName: "showEnvironmentName", segments: "segments" }, outputs: { deleteSettingRequested: "deleteSettingRequested" }, ngImport: i0, template: "<div class=\"setting-full\" [formGroup]=\"formGroup\">\n <div class=\"delete\" (click)=\"deleteSetting()\" *ngIf=\"canDeleteSetting\" [matTooltip]=\"deleteSettingText\"\n data-robot=\"deleteSetting\">\n <mat-icon>cancel</mat-icon>\n </div>\n <div class=\"setting-header flex\">\n <div class=\"setting-name flex\">\n <div class=\"name\" data-robot=\"settingName\">\n {{setting().name}}\n <span *ngIf=\"showEnvironmentName\"> ({{environment().name}})</span>\n </div>\n </div>\n </div>\n <div class=\"setting-content\">\n <div class=\"setting-details\">\n <div class=\"setting-key\"><code data-robot=\"settingKey\">{{setting().key}}</code></div>\n <span *ngIf=\"setting().hint\" class=\"description\">{{setting().hint}}</span>\n <div class=\"open\"><a [href]=\"getDashboardUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">Open in ConfigCat</a>\n </div>\n </div>\n\n <div class=\"rules-list\">\n <div>\n <configcat-rollout-rules *ngIf=\"rolloutRules().controls.length !== 0\" [formGroup]=\"formGroup\"\n [segments]=\"segments\">\n </configcat-rollout-rules>\n </div>\n\n <configcat-rollout-percentage-items *ngIf=\"rolloutPercentageItems().controls.length !== 0\"\n [formGroup]=\"formGroup\">\n </configcat-rollout-percentage-items>\n\n <div class=\"all-other flex\">\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length !== 0\"\n matTooltip=\"This value will be served to all users who the above rules don't apply.\"\n matTooltipPosition=\"above\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To all other users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length !== 0\"\n matTooltip=\"This fallback value will be served in case the user can't be identified.\"\n matTooltipPosition=\"above\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To unidentified users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length === 0\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To all users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value()\" [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"buttons\">\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target specific users' : 'Add new targeting rule'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addSegmentRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target segment' : 'Target new segment'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutPercentageItem()\"\n *ngIf=\"!readOnly\"\n [disabled]=\"setting().settingType === SettingType.Boolean && rolloutPercentageItems().length !== 0\">\n {{rolloutPercentageItems().length === 0 ? 'Target % of users' : 'Add new % option'}}\n </button>\n </div>\n </div>\n </div>\n</div>", styles: [".setting-full{position:relative;display:flex;flex-wrap:nowrap;flex-direction:column}.setting-full .delete{position:absolute;right:-10px;top:-10px;color:#ed5251;background-color:#fff;border-radius:50%;height:20px;width:20px;cursor:pointer}.setting-full .delete mat-icon{font-size:20px;height:20px;width:20px;opacity:.5}.setting-full .delete:hover mat-icon{opacity:1}.setting-full .setting-header{padding:1.5em .8em 0 1em}.setting-full .setting-header .setting-name{flex-direction:row}.setting-full .setting-header .setting-name:hover>.edit{visibility:visible}.setting-full .setting-header .setting-name .name{font-weight:700;word-wrap:break-word;max-width:100%}.setting-full .setting-header .setting-name .edit{margin:5px 0 0 5px;cursor:pointer;visibility:hidden;color:gray}.setting-full .setting-header .setting-name .edit:hover{visibility:visible}.setting-full .setting-header .setting-name .edit mat-icon{font-size:18px}.setting-full .setting-header .setting-meta{margin-left:auto;margin-right:14px;font-size:.7em;color:gray}.setting-full .setting-content{display:flex}.setting-full .setting-content .setting-details{display:flex;flex-direction:column;width:400px;padding:0 0 .5em .5em}.setting-full .setting-content .setting-details>*{margin:.5em}.setting-full .setting-content .setting-details .open{font-size:14px}.setting-full .setting-content .setting-details .integrations{font-size:.8rem}.setting-full .setting-content .setting-details .integrations>div{margin:3px}.setting-full .setting-content .setting-details .integrations>div>a:hover{text-decoration:underline}.setting-full .setting-content .setting-details .setting-key{word-wrap:break-word}.setting-full .setting-content .setting-details .description{font-size:.8em;white-space:pre-wrap;word-wrap:break-word;max-width:300px}.setting-full .setting-content .setting-details code{background-color:#d3d3d3;padding:3px 6px}.setting-full .setting-content .rules-list{width:100%;padding:0 .3em .3em 1em}.setting-full .setting-content .targeting-button{margin-left:.5rem;margin-right:.5rem;margin-bottom:1.5em;text-transform:uppercase}.all-other{min-height:40px;justify-content:flex-start;border:1px solid #d5d5d5;background-color:#fff;margin:.5em 1em;padding:4px 0 4px .5em}.all-other .chip{font-size:12px;background-color:#67b1fc3d}.all-other .served-value{margin-left:auto;margin-top:3px;margin-bottom:3px}.end{margin-left:auto}.buttons{display:flex;margin-left:.5rem;margin-right:.5rem}.buttons .updated-date{font-size:.7em;margin-left:auto;margin-right:22px;color:gray}.flex{display:flex;flex-wrap:wrap;align-items:center}.show-hide-toggle{margin-left:1em;cursor:pointer}.show-hide-toggle a{font-size:.8rem}.sige-button{background-color:#d9eadc;color:#363636;cursor:pointer;justify-content:center;padding:.375em .75em;text-align:center;white-space:nowrap;font-size:.75rem;border:1px solid #dbdbdb;box-shadow:none;display:inline-flex;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif}.sige-button:hover{background-color:#bad0be}.sige-button:disabled{background-color:#fff;color:#b3b3b3}@media (max-width: 1200px){.setting-details{width:300px!important}}@media (max-width: 920px){.setting-full .setting-content{flex-wrap:wrap}.setting-full .setting-content .rules-list{padding:0}.setting-full .setting-content .targeting-button{margin-bottom:.5em;margin-top:.5em;padding:.6em 0}.colorbar{min-width:5px}.buttons{flex-direction:column;margin-bottom:.5em;margin-left:.4em;margin-right:.4em}.created-date,.updated-date{display:none}.setting-details{width:100%!important;padding:.2em 0 .2em .2em}.setting-details .description{max-width:none!important}.rollout-rules{margin-bottom:1em}.all-other{margin:1em;padding:7px 0 7px .5em}.all-other .served-value{margin:7px 7px 4px auto}}@media (max-width: 380px){.mat-mdc-standard-chip{min-height:auto!important;height:auto!important}.mat-chip-list-wrapper{padding-right:7px}.sige-button{font-size:.65rem}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i6.MatChip, selector: "mat-basic-chip, mat-chip", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i6.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "component", type: i7.RolloutPercentageItemsComponent, selector: "configcat-rollout-percentage-items", inputs: ["formGroup", "readOnly"] }, { kind: "component", type: i8.RolloutRulesComponent, selector: "configcat-rollout-rules", inputs: ["formGroup", "readOnly", "segments"] }, { kind: "component", type: i9.ValueComponent, selector: "configcat-value", inputs: ["valueFormControl", "setting"] }] });
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SettingComponent, decorators: [{
|
|
117
111
|
type: Component,
|
|
118
|
-
args: [{ selector: 'setting', template: "<div class=\"setting-full\" [formGroup]=\"formGroup\">\n <div class=\"delete\" (click)=\"deleteSetting()\" *ngIf=\"canDeleteSetting\" [matTooltip]=\"deleteSettingText\"\n data-robot=\"deleteSetting\">\n <mat-icon>cancel</mat-icon>\n </div>\n <div class=\"setting-header flex\">\n <div class=\"setting-name flex\">\n <div class=\"name\" data-robot=\"settingName\">\n {{setting().name}}\n <span *ngIf=\"showEnvironmentName\"> ({{environment().name}})</span>\n </div>\n
|
|
119
|
-
}], ctorParameters: function () { return [{ type: i1.SettingListFormHelper }
|
|
112
|
+
args: [{ selector: 'setting', template: "<div class=\"setting-full\" [formGroup]=\"formGroup\">\n <div class=\"delete\" (click)=\"deleteSetting()\" *ngIf=\"canDeleteSetting\" [matTooltip]=\"deleteSettingText\"\n data-robot=\"deleteSetting\">\n <mat-icon>cancel</mat-icon>\n </div>\n <div class=\"setting-header flex\">\n <div class=\"setting-name flex\">\n <div class=\"name\" data-robot=\"settingName\">\n {{setting().name}}\n <span *ngIf=\"showEnvironmentName\"> ({{environment().name}})</span>\n </div>\n </div>\n </div>\n <div class=\"setting-content\">\n <div class=\"setting-details\">\n <div class=\"setting-key\"><code data-robot=\"settingKey\">{{setting().key}}</code></div>\n <span *ngIf=\"setting().hint\" class=\"description\">{{setting().hint}}</span>\n <div class=\"open\"><a [href]=\"getDashboardUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">Open in ConfigCat</a>\n </div>\n </div>\n\n <div class=\"rules-list\">\n <div>\n <configcat-rollout-rules *ngIf=\"rolloutRules().controls.length !== 0\" [formGroup]=\"formGroup\"\n [segments]=\"segments\">\n </configcat-rollout-rules>\n </div>\n\n <configcat-rollout-percentage-items *ngIf=\"rolloutPercentageItems().controls.length !== 0\"\n [formGroup]=\"formGroup\">\n </configcat-rollout-percentage-items>\n\n <div class=\"all-other flex\">\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length !== 0\"\n matTooltip=\"This value will be served to all users who the above rules don't apply.\"\n matTooltipPosition=\"above\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To all other users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length !== 0\"\n matTooltip=\"This fallback value will be served in case the user can't be identified.\"\n matTooltipPosition=\"above\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To unidentified users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length === 0\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To all users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value()\" [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"buttons\">\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target specific users' : 'Add new targeting rule'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addSegmentRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target segment' : 'Target new segment'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutPercentageItem()\"\n *ngIf=\"!readOnly\"\n [disabled]=\"setting().settingType === SettingType.Boolean && rolloutPercentageItems().length !== 0\">\n {{rolloutPercentageItems().length === 0 ? 'Target % of users' : 'Add new % option'}}\n </button>\n </div>\n </div>\n </div>\n</div>", styles: [".setting-full{position:relative;display:flex;flex-wrap:nowrap;flex-direction:column}.setting-full .delete{position:absolute;right:-10px;top:-10px;color:#ed5251;background-color:#fff;border-radius:50%;height:20px;width:20px;cursor:pointer}.setting-full .delete mat-icon{font-size:20px;height:20px;width:20px;opacity:.5}.setting-full .delete:hover mat-icon{opacity:1}.setting-full .setting-header{padding:1.5em .8em 0 1em}.setting-full .setting-header .setting-name{flex-direction:row}.setting-full .setting-header .setting-name:hover>.edit{visibility:visible}.setting-full .setting-header .setting-name .name{font-weight:700;word-wrap:break-word;max-width:100%}.setting-full .setting-header .setting-name .edit{margin:5px 0 0 5px;cursor:pointer;visibility:hidden;color:gray}.setting-full .setting-header .setting-name .edit:hover{visibility:visible}.setting-full .setting-header .setting-name .edit mat-icon{font-size:18px}.setting-full .setting-header .setting-meta{margin-left:auto;margin-right:14px;font-size:.7em;color:gray}.setting-full .setting-content{display:flex}.setting-full .setting-content .setting-details{display:flex;flex-direction:column;width:400px;padding:0 0 .5em .5em}.setting-full .setting-content .setting-details>*{margin:.5em}.setting-full .setting-content .setting-details .open{font-size:14px}.setting-full .setting-content .setting-details .integrations{font-size:.8rem}.setting-full .setting-content .setting-details .integrations>div{margin:3px}.setting-full .setting-content .setting-details .integrations>div>a:hover{text-decoration:underline}.setting-full .setting-content .setting-details .setting-key{word-wrap:break-word}.setting-full .setting-content .setting-details .description{font-size:.8em;white-space:pre-wrap;word-wrap:break-word;max-width:300px}.setting-full .setting-content .setting-details code{background-color:#d3d3d3;padding:3px 6px}.setting-full .setting-content .rules-list{width:100%;padding:0 .3em .3em 1em}.setting-full .setting-content .targeting-button{margin-left:.5rem;margin-right:.5rem;margin-bottom:1.5em;text-transform:uppercase}.all-other{min-height:40px;justify-content:flex-start;border:1px solid #d5d5d5;background-color:#fff;margin:.5em 1em;padding:4px 0 4px .5em}.all-other .chip{font-size:12px;background-color:#67b1fc3d}.all-other .served-value{margin-left:auto;margin-top:3px;margin-bottom:3px}.end{margin-left:auto}.buttons{display:flex;margin-left:.5rem;margin-right:.5rem}.buttons .updated-date{font-size:.7em;margin-left:auto;margin-right:22px;color:gray}.flex{display:flex;flex-wrap:wrap;align-items:center}.show-hide-toggle{margin-left:1em;cursor:pointer}.show-hide-toggle a{font-size:.8rem}.sige-button{background-color:#d9eadc;color:#363636;cursor:pointer;justify-content:center;padding:.375em .75em;text-align:center;white-space:nowrap;font-size:.75rem;border:1px solid #dbdbdb;box-shadow:none;display:inline-flex;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif}.sige-button:hover{background-color:#bad0be}.sige-button:disabled{background-color:#fff;color:#b3b3b3}@media (max-width: 1200px){.setting-details{width:300px!important}}@media (max-width: 920px){.setting-full .setting-content{flex-wrap:wrap}.setting-full .setting-content .rules-list{padding:0}.setting-full .setting-content .targeting-button{margin-bottom:.5em;margin-top:.5em;padding:.6em 0}.colorbar{min-width:5px}.buttons{flex-direction:column;margin-bottom:.5em;margin-left:.4em;margin-right:.4em}.created-date,.updated-date{display:none}.setting-details{width:100%!important;padding:.2em 0 .2em .2em}.setting-details .description{max-width:none!important}.rollout-rules{margin-bottom:1em}.all-other{margin:1em;padding:7px 0 7px .5em}.all-other .served-value{margin:7px 7px 4px auto}}@media (max-width: 380px){.mat-mdc-standard-chip{min-height:auto!important;height:auto!important}.mat-chip-list-wrapper{padding-right:7px}.sige-button{font-size:.65rem}}\n"] }]
|
|
113
|
+
}], ctorParameters: function () { return [{ type: i1.SettingListFormHelper }]; }, propDecorators: { dashboardBasePath: [{
|
|
120
114
|
type: Input
|
|
121
115
|
}], productId: [{
|
|
122
116
|
type: Input
|
|
@@ -128,8 +122,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
128
122
|
type: Input
|
|
129
123
|
}], readOnly: [{
|
|
130
124
|
type: Input
|
|
131
|
-
}], canEditSetting: [{
|
|
132
|
-
type: Input
|
|
133
125
|
}], canDeleteSetting: [{
|
|
134
126
|
type: Input
|
|
135
127
|
}], deleteSettingText: [{
|
|
@@ -138,9 +130,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
138
130
|
type: Input
|
|
139
131
|
}], segments: [{
|
|
140
132
|
type: Input
|
|
141
|
-
}], editSettingRequested: [{
|
|
142
|
-
type: Output
|
|
143
133
|
}], deleteSettingRequested: [{
|
|
144
134
|
type: Output
|
|
145
135
|
}] } });
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvc2V0dGluZy1saXN0L3NldHRpbmcvc2V0dGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvc2V0dGluZy1saXN0L3NldHRpbmcvc2V0dGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQThCLHFCQUFxQixFQUFvQixpQkFBaUIsRUFBb0IsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7O0FBUS9KLE1BQU0sT0FBTyxnQkFBZ0I7SUFzQjNCLFlBQW9CLFVBQWlDLEVBQzNDLEtBQXdCO1FBRGQsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7UUFDM0MsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFyQnpCLHNCQUFpQixHQUFHLDJCQUEyQixDQUFDO1FBTWhELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLHNCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQ3JDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUczQix5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFDLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEQsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRTNCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBR1ksQ0FBQztJQUV2QyxRQUFRLEtBQUssQ0FBQztJQUVk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LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvbGxvdXRQZXJjZW50YWdlSXRlbU1vZGVsLCBSb2xsb3V0UnVsZUNvbXBhcmF0b3IsIFJvbGxvdXRSdWxlTW9kZWwsIFNlZ21lbnRDb21wYXJhdG9yLCBTZWdtZW50TGlzdE1vZGVsLCBTZXR0aW5nVHlwZSB9IGZyb20gJ25nLWNvbmZpZ2NhdC1wdWJsaWNhcGknO1xuaW1wb3J0IHsgU2V0dGluZ0xpc3RGb3JtSGVscGVyIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL3NldHRpbmctbGlzdC1mb3JtLWhlbHBlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NldHRpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NldHRpbmcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBkYXNoYm9hcmRCYXNlUGF0aCA9ICdodHRwczovL2FwcC5jb25maWdjYXQuY29tJztcbiAgQElucHV0KCkgcHJvZHVjdElkITogc3RyaW5nO1xuICBASW5wdXQoKSBlbnZpcm9ubWVudElkITogc3RyaW5nO1xuICBASW5wdXQoKSBjb25maWdJZCE6IHN0cmluZztcblxuICBASW5wdXQoKSBmb3JtR3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5FZGl0U2V0dGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5EZWxldGVTZXR0aW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRlbGV0ZVNldHRpbmdUZXh0ID0gJ0RlbGV0ZSBzZXR0aW5nJztcbiAgQElucHV0KCkgc2hvd0Vudmlyb25tZW50TmFtZSA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWdtZW50cyE6IFNlZ21lbnRMaXN0TW9kZWxbXTtcblxuICBAT3V0cHV0KCkgZWRpdFNldHRpbmdSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkZWxldGVTZXR0aW5nUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHJ1bGVzQmVpbmdSZW5kZXJlZCA9IGZhbHNlO1xuXG4gIFNldHRpbmdUeXBlID0gU2V0dGluZ1R5cGU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtSGVscGVyOiBTZXR0aW5nTGlzdEZvcm1IZWxwZXIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gIG5nT25Jbml0KCkgeyB9XG5cbiAgZW52aXJvbm1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLnJvb3QuZ2V0KCdlbnZpcm9ubWVudCcpPy52YWx1ZTtcbiAgfVxuXG4gIHNldHRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgnc2V0dGluZycpPy52YWx1ZTtcbiAgfVxuXG4gIGludGVncmF0aW9uTGlua3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgnaW50ZWdyYXRpb25MaW5rcycpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cblxuICByb2xsb3V0UnVsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgncm9sbG91dFJ1bGVzJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuXG4gIHJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgncm9sbG91dFBlcmNlbnRhZ2VJdGVtcycpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cblxuICB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCd2YWx1ZScpIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGFkZFJvbGxvdXRSdWxlKCkge1xuICAgIHRoaXMucm9sbG91dFJ1bGVzKCkucHVzaCh0aGlzLmZvcm1IZWxwZXIuY3JlYXRlUm9sbG91dFJ1bGVGb3JtR3JvdXAoXG4gICAgICA8Um9sbG91dFJ1bGVNb2RlbD57XG4gICAgICAgIGNvbXBhcmlzb25BdHRyaWJ1dGU6ICdJZGVudGlmaWVyJyxcbiAgICAgICAgY29tcGFyYXRvcjogUm9sbG91dFJ1bGVDb21wYXJhdG9yLlNlbnNpdGl2ZUlzT25lT2YsXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZTogJycsXG4gICAgICAgIHZhbHVlOiB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSA9PT0gU2V0dGluZ1R5cGUuQm9vbGVhbiA/IGZhbHNlIGFzIHVua25vd24gOiBudWxsXG4gICAgICB9LFxuICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICB0aGlzLnJvbGxvdXRSdWxlcygpLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICBhZGRTZWdtZW50Um9sbG91dFJ1bGUoKSB7XG4gICAgdGhpcy5yb2xsb3V0UnVsZXMoKS5wdXNoKHRoaXMuZm9ybUhlbHBlci5jcmVhdGVSb2xsb3V0UnVsZUZvcm1Hcm91cChcbiAgICAgIDxSb2xsb3V0UnVsZU1vZGVsPntcbiAgICAgICAgc2VnbWVudENvbXBhcmF0b3I6IFNlZ21lbnRDb21wYXJhdG9yLklzSW4sXG4gICAgICAgIHZhbHVlOiB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSA9PT0gU2V0dGluZ1R5cGUuQm9vbGVhbiA/IGZhbHNlIGFzIHVua25vd24gOiBudWxsXG4gICAgICB9LFxuICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICB0aGlzLnJvbGxvdXRSdWxlcygpLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICByZW1vdmVSb2xsb3V0UnVsZXMoKSB7XG4gICAgdGhpcy5yb2xsb3V0UnVsZXMoKS5jbGVhcigpO1xuICAgIHRoaXMucm9sbG91dFJ1bGVzKCkubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIGFkZFJvbGxvdXRQZXJjZW50YWdlSXRlbSgpIHtcblxuICAgIGlmICh0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpIHtcbiAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5Cb29sZWFuOlxuICAgICAgICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLnB1c2godGhpcy5mb3JtSGVscGVyLmNyZWF0ZVJvbGxvdXRQZXJjZW50YWdlSXRlbUZvcm1Hcm91cChcbiAgICAgICAgICAgIDxSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbD57XG4gICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICAgICAgICAgIHZhbHVlOiB0cnVlIGFzIHVua25vd25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLnJlYWRPbmx5LCB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSkpO1xuICAgICAgICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLnB1c2godGhpcy5mb3JtSGVscGVyLmNyZWF0ZVJvbGxvdXRQZXJjZW50YWdlSXRlbUZvcm1Hcm91cChcbiAgICAgICAgICAgIDxSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbD57XG4gICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IDEwMCxcbiAgICAgICAgICAgICAgdmFsdWU6IGZhbHNlIGFzIHVua25vd25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLnJlYWRPbmx5LCB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSkpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuU3RyaW5nOlxuICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkludDpcbiAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5Eb3VibGU6XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLnB1c2godGhpcy5mb3JtSGVscGVyLmNyZWF0ZVJvbGxvdXRQZXJjZW50YWdlSXRlbUZvcm1Hcm91cChcbiAgICAgICAgICAgICAgPFJvbGxvdXRQZXJjZW50YWdlSXRlbU1vZGVsPntcbiAgICAgICAgICAgICAgICBwZXJjZW50YWdlOiAyNSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5LCB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUgIT09IFNldHRpbmdUeXBlLkJvb2xlYW4pIHtcbiAgICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLnB1c2godGhpcy5mb3JtSGVscGVyLmNyZWF0ZVJvbGxvdXRQZXJjZW50YWdlSXRlbUZvcm1Hcm91cChcbiAgICAgICAgPFJvbGxvdXRQZXJjZW50YWdlSXRlbU1vZGVsPntcbiAgICAgICAgICBwZXJjZW50YWdlOiAwLFxuICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMucmVhZE9ubHksIHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHJlbW92ZVJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKSB7XG4gICAgdGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY2xlYXIoKTtcbiAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgZWRpdFNldHRpbmcoKSB7XG4gICAgdGhpcy5lZGl0U2V0dGluZ1JlcXVlc3RlZC5lbWl0KHsgc2V0dGluZzogdGhpcy5zZXR0aW5nKCkgfSk7XG4gIH1cblxuICBkZWxldGVTZXR0aW5nKCkge1xuICAgIHRoaXMuZGVsZXRlU2V0dGluZ1JlcXVlc3RlZC5lbWl0KHsgc2V0dGluZzogdGhpcy5zZXR0aW5nKCkgfSk7XG4gIH1cblxuICBnZXREYXNoYm9hcmRVcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkQmFzZVBhdGggKyAnLycgKyB0aGlzLnByb2R1Y3RJZCArICcvJyArIHRoaXMuY29uZmlnSWQgKyAnLycgKyB0aGlzLmVudmlyb25tZW50SWQgKyAnP3NldHRpbmdJZD0nICsgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ0lkO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2V0dGluZy1mdWxsXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImRlbGV0ZVwiIChjbGljayk9XCJkZWxldGVTZXR0aW5nKClcIiAqbmdJZj1cImNhbkRlbGV0ZVNldHRpbmdcIiBbbWF0VG9vbHRpcF09XCJkZWxldGVTZXR0aW5nVGV4dFwiXG4gICAgZGF0YS1yb2JvdD1cImRlbGV0ZVNldHRpbmdcIj5cbiAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzZXR0aW5nLWhlYWRlciBmbGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cInNldHRpbmctbmFtZSBmbGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiIGRhdGEtcm9ib3Q9XCJzZXR0aW5nTmFtZVwiPlxuICAgICAgICB7e3NldHRpbmcoKS5uYW1lfX1cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93RW52aXJvbm1lbnROYW1lXCI+ICh7e2Vudmlyb25tZW50KCkubmFtZX19KTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImVkaXRcIiBtYXRUb29sdGlwPVwiRWRpdCBuYW1lIGFuZCBkZXNjcmlwdGlvblwiIChjbGljayk9XCJlZGl0U2V0dGluZygpXCIgKm5nSWY9XCJjYW5FZGl0U2V0dGluZ1wiXG4gICAgICAgIGRhdGEtcm9ib3Q9XCJyZW5hbWVTZXR0aW5nXCI+XG4gICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmctY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5nLWRldGFpbHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5nLWtleVwiPjxjb2RlIGRhdGEtcm9ib3Q9XCJzZXR0aW5nS2V5XCI+e3tzZXR0aW5nKCkua2V5fX08L2NvZGU+PC9kaXY+XG4gICAgICA8c3BhbiAqbmdJZj1cInNldHRpbmcoKS5oaW50XCIgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7c2V0dGluZygpLmhpbnR9fTwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvcGVuXCI+PGEgW2hyZWZdPVwiZ2V0RGFzaGJvYXJkVXJsKClcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+T3BlbiBpbiBDb25maWdDYXQ8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJydWxlcy1saXN0XCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8Y29uZmlnY2F0LXJvbGxvdXQtcnVsZXMgKm5nSWY9XCJyb2xsb3V0UnVsZXMoKS5jb250cm9scy5sZW5ndGggIT09IDBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgICAgICAgW3NlZ21lbnRzXT1cInNlZ21lbnRzXCI+XG4gICAgICAgIDwvY29uZmlnY2F0LXJvbGxvdXQtcnVsZXM+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGNvbmZpZ2NhdC1yb2xsb3V0LXBlcmNlbnRhZ2UtaXRlbXMgKm5nSWY9XCJyb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY29udHJvbHMubGVuZ3RoICE9PSAwXCJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgIDwvY29uZmlnY2F0LXJvbGxvdXQtcGVyY2VudGFnZS1pdGVtcz5cblxuICAgICAgPGRpdiBjbGFzcz1cImFsbC1vdGhlciBmbGV4XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubGVuZ3RoID09PSAwICYmIHJvbGxvdXRSdWxlcygpLmxlbmd0aCAhPT0gMFwiXG4gICAgICAgICAgbWF0VG9vbHRpcD1cIlRoaXMgdmFsdWUgd2lsbCBiZSBzZXJ2ZWQgdG8gYWxsIHVzZXJzIHdobyB0aGUgYWJvdmUgcnVsZXMgZG9uJ3QgYXBwbHkuXCJcbiAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxuICAgICAgICAgIDxtYXQtY2hpcC1saXN0PlxuICAgICAgICAgICAgPG1hdC1jaGlwIGNsYXNzPVwiY2hpcFwiPlRvIGFsbCBvdGhlciB1c2Vycywgc2VydmU6PC9tYXQtY2hpcD5cbiAgICAgICAgICA8L21hdC1jaGlwLWxpc3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmxlbmd0aCAhPT0gMFwiXG4gICAgICAgICAgbWF0VG9vbHRpcD1cIlRoaXMgZmFsbGJhY2sgdmFsdWUgd2lsbCBiZSBzZXJ2ZWQgaW4gY2FzZSB0aGUgdXNlciBjYW4ndCBiZSBpZGVudGlmaWVkLlwiXG4gICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj5cbiAgICAgICAgICA8bWF0LWNoaXAtbGlzdD5cbiAgICAgICAgICAgIDxtYXQtY2hpcCBjbGFzcz1cImNoaXBcIj5UbyB1bmlkZW50aWZpZWQgdXNlcnMsIHNlcnZlOjwvbWF0LWNoaXA+XG4gICAgICAgICAgPC9tYXQtY2hpcC1saXN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5sZW5ndGggPT09IDAgJiYgcm9sbG91dFJ1bGVzKCkubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgPG1hdC1jaGlwLWxpc3Q+XG4gICAgICAgICAgICA8bWF0LWNoaXAgY2xhc3M9XCJjaGlwXCI+VG8gYWxsIHVzZXJzLCBzZXJ2ZTo8L21hdC1jaGlwPlxuICAgICAgICAgIDwvbWF0LWNoaXAtbGlzdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxjb25maWdjYXQtdmFsdWUgY2xhc3M9XCJzZXJ2ZWQtdmFsdWVcIiBbdmFsdWVGb3JtQ29udHJvbF09XCJ2YWx1ZSgpXCIgW3NldHRpbmddPVwic2V0dGluZygpXCI+XG4gICAgICAgIDwvY29uZmlnY2F0LXZhbHVlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNpZ2UtYnV0dG9uIHRhcmdldGluZy1idXR0b25cIiAoY2xpY2spPVwiYWRkUm9sbG91dFJ1bGUoKVwiICpuZ0lmPVwiIXJlYWRPbmx5XCI+XG4gICAgICAgICAge3tyb2xsb3V0UnVsZXMoKS5sZW5ndGggPT09IDAgPyAnVGFyZ2V0IHNwZWNpZmljIHVzZXJzJyA6ICdBZGQgbmV3IHRhcmdldGluZyBydWxlJ319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNpZ2UtYnV0dG9uIHRhcmdldGluZy1idXR0b25cIiAoY2xpY2spPVwiYWRkU2VnbWVudFJvbGxvdXRSdWxlKClcIiAqbmdJZj1cIiFyZWFkT25seVwiPlxuICAgICAgICAgIHt7cm9sbG91dFJ1bGVzKCkubGVuZ3RoID09PSAwID8gJ1RhcmdldCBzZWdtZW50JyA6ICdUYXJnZXQgbmV3IHNlZ21lbnQnfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2lnZS1idXR0b24gdGFyZ2V0aW5nLWJ1dHRvblwiIChjbGljayk9XCJhZGRSb2xsb3V0UGVyY2VudGFnZUl0ZW0oKVwiXG4gICAgICAgICAgKm5nSWY9XCIhcmVhZE9ubHlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzZXR0aW5nKCkuc2V0dGluZ1R5cGUgPT09IFNldHRpbmdUeXBlLkJvb2xlYW4gJiYgcm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICAgIHt7cm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmxlbmd0aCA9PT0gMCA/ICdUYXJnZXQgJSBvZiB1c2VycycgOiAnQWRkIG5ldyAlIG9wdGlvbid9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvc2V0dGluZy1saXN0L3NldHRpbmcvc2V0dGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvc2V0dGluZy1saXN0L3NldHRpbmcvc2V0dGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBOEIscUJBQXFCLEVBQW9CLGlCQUFpQixFQUFrQyxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFRN0ssTUFBTSxPQUFPLGdCQUFnQjtJQW9CM0IsWUFBb0IsVUFBaUM7UUFBakMsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7UUFsQjVDLHNCQUFpQixHQUFHLDJCQUEyQixDQUFDO1FBTWhELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLHNCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQ3JDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUczQiwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXRELHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUUzQixnQkFBVyxHQUFHLFdBQVcsQ0FBQztJQUUrQixDQUFDO0lBRTFELFFBQVEsS0FBSyxDQUFDO0lBRWQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN2RCxDQUFDO0lBRUQsT0FBTztR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LE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDbkosQ0FBQzs7NkdBbklVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLDhhQ1Y3QiwwMUdBc0VNOzJGRDVETyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsU0FBUzs0R0FNVixpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWwsIFJvbGxvdXRSdWxlQ29tcGFyYXRvciwgUm9sbG91dFJ1bGVNb2RlbCwgU2VnbWVudENvbXBhcmF0b3IsIFNlZ21lbnRMaXN0TW9kZWwsIFNldHRpbmdNb2RlbCwgU2V0dGluZ1R5cGUgfSBmcm9tICduZy1jb25maWdjYXQtcHVibGljYXBpJztcbmltcG9ydCB7IFNldHRpbmdMaXN0Rm9ybUhlbHBlciB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9zZXR0aW5nLWxpc3QtZm9ybS1oZWxwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZXR0aW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXR0aW5nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2V0dGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgZGFzaGJvYXJkQmFzZVBhdGggPSAnaHR0cHM6Ly9hcHAuY29uZmlnY2F0LmNvbSc7XG4gIEBJbnB1dCgpIHByb2R1Y3RJZCE6IHN0cmluZztcbiAgQElucHV0KCkgZW52aXJvbm1lbnRJZCE6IHN0cmluZztcbiAgQElucHV0KCkgY29uZmlnSWQhOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgZm9ybUdyb3VwITogVW50eXBlZEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcmVhZE9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuRGVsZXRlU2V0dGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBkZWxldGVTZXR0aW5nVGV4dCA9ICdEZWxldGUgc2V0dGluZyc7XG4gIEBJbnB1dCgpIHNob3dFbnZpcm9ubWVudE5hbWUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2VnbWVudHMhOiBTZWdtZW50TGlzdE1vZGVsW107XG5cbiAgQE91dHB1dCgpIGRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcnVsZXNCZWluZ1JlbmRlcmVkID0gZmFsc2U7XG5cbiAgU2V0dGluZ1R5cGUgPSBTZXR0aW5nVHlwZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1IZWxwZXI6IFNldHRpbmdMaXN0Rm9ybUhlbHBlcikgeyB9XG5cbiAgbmdPbkluaXQoKSB7IH1cblxuICBlbnZpcm9ubWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAucm9vdC5nZXQoJ2Vudmlyb25tZW50Jyk/LnZhbHVlO1xuICB9XG5cbiAgc2V0dGluZygpIHtcbiAgICByZXR1cm4gPFNldHRpbmdNb2RlbD50aGlzLmZvcm1Hcm91cC5nZXQoJ3NldHRpbmcnKT8udmFsdWU7XG4gIH1cblxuICBpbnRlZ3JhdGlvbkxpbmtzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2ludGVncmF0aW9uTGlua3MnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICB9XG5cbiAgcm9sbG91dFJ1bGVzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3JvbGxvdXRSdWxlcycpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cblxuICByb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3JvbGxvdXRQZXJjZW50YWdlSXRlbXMnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICB9XG5cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgndmFsdWUnKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBhZGRSb2xsb3V0UnVsZSgpIHtcbiAgICB0aGlzLnJvbGxvdXRSdWxlcygpLnB1c2godGhpcy5mb3JtSGVscGVyLmNyZWF0ZVJvbGxvdXRSdWxlRm9ybUdyb3VwKFxuICAgICAgPFJvbGxvdXRSdWxlTW9kZWw+e1xuICAgICAgICBjb21wYXJpc29uQXR0cmlidXRlOiAnSWRlbnRpZmllcicsXG4gICAgICAgIGNvbXBhcmF0b3I6IFJvbGxvdXRSdWxlQ29tcGFyYXRvci5TZW5zaXRpdmVJc09uZU9mLFxuICAgICAgICBjb21wYXJpc29uVmFsdWU6ICcnLFxuICAgICAgICB2YWx1ZTogdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUgPT09IFNldHRpbmdUeXBlLkJvb2xlYW4gPyBmYWxzZSBhcyB1bmtub3duIDogbnVsbFxuICAgICAgfSxcbiAgICAgIHRoaXMucmVhZE9ubHksIHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlKSk7XG4gICAgdGhpcy5yb2xsb3V0UnVsZXMoKS5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgYWRkU2VnbWVudFJvbGxvdXRSdWxlKCkge1xuICAgIHRoaXMucm9sbG91dFJ1bGVzKCkucHVzaCh0aGlzLmZvcm1IZWxwZXIuY3JlYXRlUm9sbG91dFJ1bGVGb3JtR3JvdXAoXG4gICAgICA8Um9sbG91dFJ1bGVNb2RlbD57XG4gICAgICAgIHNlZ21lbnRDb21wYXJhdG9yOiBTZWdtZW50Q29tcGFyYXRvci5Jc0luLFxuICAgICAgICB2YWx1ZTogdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUgPT09IFNldHRpbmdUeXBlLkJvb2xlYW4gPyBmYWxzZSBhcyB1bmtub3duIDogbnVsbFxuICAgICAgfSxcbiAgICAgIHRoaXMucmVhZE9ubHksIHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlKSk7XG4gICAgdGhpcy5yb2xsb3V0UnVsZXMoKS5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcmVtb3ZlUm9sbG91dFJ1bGVzKCkge1xuICAgIHRoaXMucm9sbG91dFJ1bGVzKCkuY2xlYXIoKTtcbiAgICB0aGlzLnJvbGxvdXRSdWxlcygpLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICBhZGRSb2xsb3V0UGVyY2VudGFnZUl0ZW0oKSB7XG5cbiAgICBpZiAodGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlKSB7XG4gICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuQm9vbGVhbjpcbiAgICAgICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5wdXNoKHRoaXMuZm9ybUhlbHBlci5jcmVhdGVSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXAoXG4gICAgICAgICAgICA8Um9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWw+e1xuICAgICAgICAgICAgICBwZXJjZW50YWdlOiAwLFxuICAgICAgICAgICAgICB2YWx1ZTogdHJ1ZSBhcyB1bmtub3duXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICAgICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5wdXNoKHRoaXMuZm9ybUhlbHBlci5jcmVhdGVSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXAoXG4gICAgICAgICAgICA8Um9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWw+e1xuICAgICAgICAgICAgICBwZXJjZW50YWdlOiAxMDAsXG4gICAgICAgICAgICAgIHZhbHVlOiBmYWxzZSBhcyB1bmtub3duXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNldHRpbmdUeXBlLlN0cmluZzpcbiAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5JbnQ6XG4gICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuRG91YmxlOlxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5wdXNoKHRoaXMuZm9ybUhlbHBlci5jcmVhdGVSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXAoXG4gICAgICAgICAgICAgIDxSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbD57XG4gICAgICAgICAgICAgICAgcGVyY2VudGFnZTogMjUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlICE9PSBTZXR0aW5nVHlwZS5Cb29sZWFuKSB7XG4gICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5wdXNoKHRoaXMuZm9ybUhlbHBlci5jcmVhdGVSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXAoXG4gICAgICAgIDxSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbD57XG4gICAgICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnJlYWRPbmx5LCB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSkpO1xuICAgIH1cblxuICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICByZW1vdmVSb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkge1xuICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmNsZWFyKCk7XG4gICAgdGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIGRlbGV0ZVNldHRpbmcoKSB7XG4gICAgdGhpcy5kZWxldGVTZXR0aW5nUmVxdWVzdGVkLmVtaXQoeyBzZXR0aW5nOiB0aGlzLnNldHRpbmcoKSB9KTtcbiAgfVxuXG4gIGdldERhc2hib2FyZFVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXNoYm9hcmRCYXNlUGF0aCArICcvJyArIHRoaXMucHJvZHVjdElkICsgJy8nICsgdGhpcy5jb25maWdJZCArICcvJyArIHRoaXMuZW52aXJvbm1lbnRJZCArICc/c2V0dGluZ0lkPScgKyB0aGlzLnNldHRpbmcoKS5zZXR0aW5nSWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzZXR0aW5nLWZ1bGxcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCIgKGNsaWNrKT1cImRlbGV0ZVNldHRpbmcoKVwiICpuZ0lmPVwiY2FuRGVsZXRlU2V0dGluZ1wiIFttYXRUb29sdGlwXT1cImRlbGV0ZVNldHRpbmdUZXh0XCJcbiAgICBkYXRhLXJvYm90PVwiZGVsZXRlU2V0dGluZ1wiPlxuICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmctaGVhZGVyIGZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZy1uYW1lIGZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCIgZGF0YS1yb2JvdD1cInNldHRpbmdOYW1lXCI+XG4gICAgICAgIHt7c2V0dGluZygpLm5hbWV9fVxuICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dFbnZpcm9ubWVudE5hbWVcIj4gKHt7ZW52aXJvbm1lbnQoKS5uYW1lfX0pPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2V0dGluZy1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInNldHRpbmctZGV0YWlsc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmcta2V5XCI+PGNvZGUgZGF0YS1yb2JvdD1cInNldHRpbmdLZXlcIj57e3NldHRpbmcoKS5rZXl9fTwvY29kZT48L2Rpdj5cbiAgICAgIDxzcGFuICpuZ0lmPVwic2V0dGluZygpLmhpbnRcIiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+e3tzZXR0aW5nKCkuaGludH19PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cIm9wZW5cIj48YSBbaHJlZl09XCJnZXREYXNoYm9hcmRVcmwoKVwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5PcGVuIGluIENvbmZpZ0NhdDwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInJ1bGVzLWxpc3RcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxjb25maWdjYXQtcm9sbG91dC1ydWxlcyAqbmdJZj1cInJvbGxvdXRSdWxlcygpLmNvbnRyb2xzLmxlbmd0aCAhPT0gMFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgICBbc2VnbWVudHNdPVwic2VnbWVudHNcIj5cbiAgICAgICAgPC9jb25maWdjYXQtcm9sbG91dC1ydWxlcz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Y29uZmlnY2F0LXJvbGxvdXQtcGVyY2VudGFnZS1pdGVtcyAqbmdJZj1cInJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9scy5sZW5ndGggIT09IDBcIlxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgPC9jb25maWdjYXQtcm9sbG91dC1wZXJjZW50YWdlLWl0ZW1zPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWxsLW90aGVyIGZsZXhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5sZW5ndGggPT09IDAgJiYgcm9sbG91dFJ1bGVzKCkubGVuZ3RoICE9PSAwXCJcbiAgICAgICAgICBtYXRUb29sdGlwPVwiVGhpcyB2YWx1ZSB3aWxsIGJlIHNlcnZlZCB0byBhbGwgdXNlcnMgd2hvIHRoZSBhYm92ZSBydWxlcyBkb24ndCBhcHBseS5cIlxuICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XG4gICAgICAgICAgPG1hdC1jaGlwLXNldD5cbiAgICAgICAgICAgIDxtYXQtY2hpcCBjbGFzcz1cImNoaXBcIj5UbyBhbGwgb3RoZXIgdXNlcnMsIHNlcnZlOjwvbWF0LWNoaXA+XG4gICAgICAgICAgPC9tYXQtY2hpcC1zZXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmxlbmd0aCAhPT0gMFwiXG4gICAgICAgICAgbWF0VG9vbHRpcD1cIlRoaXMgZmFsbGJhY2sgdmFsdWUgd2lsbCBiZSBzZXJ2ZWQgaW4gY2FzZSB0aGUgdXNlciBjYW4ndCBiZSBpZGVudGlmaWVkLlwiXG4gICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj5cbiAgICAgICAgICA8bWF0LWNoaXAtc2V0PlxuICAgICAgICAgICAgPG1hdC1jaGlwIGNsYXNzPVwiY2hpcFwiPlRvIHVuaWRlbnRpZmllZCB1c2Vycywgc2VydmU6PC9tYXQtY2hpcD5cbiAgICAgICAgICA8L21hdC1jaGlwLXNldD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubGVuZ3RoID09PSAwICYmIHJvbGxvdXRSdWxlcygpLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgIDxtYXQtY2hpcC1zZXQ+XG4gICAgICAgICAgICA8bWF0LWNoaXAgY2xhc3M9XCJjaGlwXCI+VG8gYWxsIHVzZXJzLCBzZXJ2ZTo8L21hdC1jaGlwPlxuICAgICAgICAgIDwvbWF0LWNoaXAtc2V0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGNvbmZpZ2NhdC12YWx1ZSBjbGFzcz1cInNlcnZlZC12YWx1ZVwiIFt2YWx1ZUZvcm1Db250cm9sXT1cInZhbHVlKClcIiBbc2V0dGluZ109XCJzZXR0aW5nKClcIj5cbiAgICAgICAgPC9jb25maWdjYXQtdmFsdWU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2lnZS1idXR0b24gdGFyZ2V0aW5nLWJ1dHRvblwiIChjbGljayk9XCJhZGRSb2xsb3V0UnVsZSgpXCIgKm5nSWY9XCIhcmVhZE9ubHlcIj5cbiAgICAgICAgICB7e3JvbGxvdXRSdWxlcygpLmxlbmd0aCA9PT0gMCA/ICdUYXJnZXQgc3BlY2lmaWMgdXNlcnMnIDogJ0FkZCBuZXcgdGFyZ2V0aW5nIHJ1bGUnfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2lnZS1idXR0b24gdGFyZ2V0aW5nLWJ1dHRvblwiIChjbGljayk9XCJhZGRTZWdtZW50Um9sbG91dFJ1bGUoKVwiICpuZ0lmPVwiIXJlYWRPbmx5XCI+XG4gICAgICAgICAge3tyb2xsb3V0UnVsZXMoKS5sZW5ndGggPT09IDAgPyAnVGFyZ2V0IHNlZ21lbnQnIDogJ1RhcmdldCBuZXcgc2VnbWVudCd9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzaWdlLWJ1dHRvbiB0YXJnZXRpbmctYnV0dG9uXCIgKGNsaWNrKT1cImFkZFJvbGxvdXRQZXJjZW50YWdlSXRlbSgpXCJcbiAgICAgICAgICAqbmdJZj1cIiFyZWFkT25seVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInNldHRpbmcoKS5zZXR0aW5nVHlwZSA9PT0gU2V0dGluZ1R5cGUuQm9vbGVhbiAmJiByb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubGVuZ3RoICE9PSAwXCI+XG4gICAgICAgICAge3tyb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubGVuZ3RoID09PSAwID8gJ1RhcmdldCAlIG9mIHVzZXJzJyA6ICdBZGQgbmV3ICUgb3B0aW9uJ319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -24,9 +24,9 @@ export class ValueComponent {
|
|
|
24
24
|
return FormHelper.formatNumberForDisplay(value);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
ValueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
ValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
27
|
+
ValueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ValueComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
+
ValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: ValueComponent, selector: "configcat-value", inputs: { valueFormControl: "valueFormControl", setting: "setting" }, ngImport: i0, template: "<div class=\"flex\">\n <div class=\"container\" [ngSwitch]=\"setting.settingType\">\n <div *ngSwitchCase=\"SettingType.String\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"text\"\n [formControl]=\"valueFormControl\" placeholder=\"my value\" name=\"value\">\n <div class=\"expand\" (click)=\"popOut()\" matTooltip=\"Pop-out Editor\">\n <mat-icon>height</mat-icon>\n </div>\n </div>\n <div *ngSwitchCase=\"SettingType.Int\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"42\" name=\"value\" />\n </div>\n <div *ngSwitchCase=\"SettingType.Double\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"{{ formatDecimalNumber(3.14) }}\" name=\"value\" inputDisplayNormalizer>\n </div>\n <div *ngSwitchCase=\"SettingType.Boolean\" class=\"toggle\">\n <label class=\"switch\">\n <input type=\"checkbox\" [formControl]=\"valueFormControl\" name=\"value\" />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n <div *ngIf=\"setting.settingType === SettingType.Boolean\" class=\"spacer\"></div>\n\n</div>\n", styles: [".switch{position:relative;width:66px;height:30px;margin-left:4px;margin-top:0;margin-bottom:0}.switch input{display:none}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ff5252;transition:.4s;width:66px;height:30px}.slider:before{position:absolute;content:\"\";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;transition:.4s}input:checked+.slider{background-color:#9acd32}input:focus+.slider{box-shadow:0 0 1px #9acd32}input:checked+.slider:before{transform:translate(36px)}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}.slider:after{content:\"Off\";color:#fff;display:block;position:absolute;transform:translate(-14%,-50%);top:50%;left:50%;font-size:10px;font-family:Verdana,sans-serif}input:checked+.slider:after{content:\"On\";transform:translate(-91%,-50%)}\n", ".flex{display:flex;margin-right:10px;align-items:center}.flex .spacer{min-width:15px}.flex .container .with-validation{display:flex;flex-wrap:nowrap}.flex .container .toggle{width:66px;height:30px}.flex .container input{background-color:#fff;border:1px solid #e5e5e5;min-height:28px;padding:0 30px 0 5px;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;font-weight:300;min-width:150px;margin:0 3px}.flex .container input[type=number]{padding:0 2px 0 5px}.flex .container .invalid{border:1px solid #ff5252}.flex .container .error{color:#ff5252;margin-right:5px}.flex .variationId{margin:0 4px 0 5px;cursor:pointer;color:#888;display:flex;align-items:center}.flex .expand{position:relative;top:2px;height:24px;cursor:pointer;margin-left:-28px;z-index:1;color:#b3b3b3;background-color:#fff}.flex .expand mat-icon{transform:rotate(45deg)}@media (max-width: 920px){.flex{margin-right:0!important}.flex .spacer{min-width:5px}}@media (max-width: 510px){.flex .container .error{display:none}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i6.InputDisplayNormalizerDirective, selector: "input[inputDisplayNormalizer]" }] });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ValueComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
31
|
args: [{ selector: 'configcat-value', template: "<div class=\"flex\">\n <div class=\"container\" [ngSwitch]=\"setting.settingType\">\n <div *ngSwitchCase=\"SettingType.String\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"text\"\n [formControl]=\"valueFormControl\" placeholder=\"my value\" name=\"value\">\n <div class=\"expand\" (click)=\"popOut()\" matTooltip=\"Pop-out Editor\">\n <mat-icon>height</mat-icon>\n </div>\n </div>\n <div *ngSwitchCase=\"SettingType.Int\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"42\" name=\"value\" />\n </div>\n <div *ngSwitchCase=\"SettingType.Double\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"{{ formatDecimalNumber(3.14) }}\" name=\"value\" inputDisplayNormalizer>\n </div>\n <div *ngSwitchCase=\"SettingType.Boolean\" class=\"toggle\">\n <label class=\"switch\">\n <input type=\"checkbox\" [formControl]=\"valueFormControl\" name=\"value\" />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n <div *ngIf=\"setting.settingType === SettingType.Boolean\" class=\"spacer\"></div>\n\n</div>\n", styles: [".switch{position:relative;width:66px;height:30px;margin-left:4px;margin-top:0;margin-bottom:0}.switch input{display:none}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ff5252;transition:.4s;width:66px;height:30px}.slider:before{position:absolute;content:\"\";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;transition:.4s}input:checked+.slider{background-color:#9acd32}input:focus+.slider{box-shadow:0 0 1px #9acd32}input:checked+.slider:before{transform:translate(36px)}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}.slider:after{content:\"Off\";color:#fff;display:block;position:absolute;transform:translate(-14%,-50%);top:50%;left:50%;font-size:10px;font-family:Verdana,sans-serif}input:checked+.slider:after{content:\"On\";transform:translate(-91%,-50%)}\n", ".flex{display:flex;margin-right:10px;align-items:center}.flex .spacer{min-width:15px}.flex .container .with-validation{display:flex;flex-wrap:nowrap}.flex .container .toggle{width:66px;height:30px}.flex .container input{background-color:#fff;border:1px solid #e5e5e5;min-height:28px;padding:0 30px 0 5px;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;font-weight:300;min-width:150px;margin:0 3px}.flex .container input[type=number]{padding:0 2px 0 5px}.flex .container .invalid{border:1px solid #ff5252}.flex .container .error{color:#ff5252;margin-right:5px}.flex .variationId{margin:0 4px 0 5px;cursor:pointer;color:#888;display:flex;align-items:center}.flex .expand{position:relative;top:2px;height:24px;cursor:pointer;margin-left:-28px;z-index:1;color:#b3b3b3;background-color:#fff}.flex .expand mat-icon{transform:rotate(45deg)}@media (max-width: 920px){.flex{margin-right:0!important}.flex .spacer{min-width:5px}}@media (max-width: 510px){.flex .container .error{display:none}}\n"] }]
|
|
32
32
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { valueFormControl: [{
|
|
@@ -34,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
34
34
|
}], setting: [{
|
|
35
35
|
type: Input
|
|
36
36
|
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL3NldHRpbmctbGlzdC9zZXR0aW5nL3ZhbHVlL3ZhbHVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy92YWx1ZS92YWx1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMvRixPQUFPLEVBQWdCLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7QUFVNUQsTUFBTSxPQUFPLGNBQWM7SUFRekIsWUFBb0IsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUZyQyxnQkFBVyxHQUFHLFdBQVcsQ0FBQztJQUcxQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3RDLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYTtRQUMvQixPQUFPLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDOzsyR0FwQlUsY0FBYzsrRkFBZCxjQUFjLDZIQ2YzQiwra0RBOEJBOzJGRGZhLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UsaUJBQWlCO2dHQVNsQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEV4cGFuZERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2RpYWxvZ3MvZXhwYW5kLWRpYWxvZy9leHBhbmQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXR0aW5nTW9kZWwsIFNldHRpbmdUeXBlIH0gZnJvbSAnbmctY29uZmlnY2F0LXB1YmxpY2FwaSc7XG5pbXBvcnQgeyBGb3JtSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL2Zvcm0taGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29uZmlnY2F0LXZhbHVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZhbHVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vc2xpZGVyLnNjc3MnLFxuICAgICcuL3ZhbHVlLmNvbXBvbmVudC5zY3NzJ1xuICBdXG59KVxuZXhwb3J0IGNsYXNzIFZhbHVlQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSB2YWx1ZUZvcm1Db250cm9sITogVW50eXBlZEZvcm1Db250cm9sO1xuXG4gIEBJbnB1dCgpIHNldHRpbmchOiBTZXR0aW5nTW9kZWw7XG5cbiAgU2V0dGluZ1R5cGUgPSBTZXR0aW5nVHlwZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7XG4gIH1cblxuICBwb3BPdXQoKSB7XG4gICAgdGhpcy5kaWFsb2cub3BlbihFeHBhbmREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNjQwcHgnLFxuICAgICAgZGF0YTogeyBjb250cm9sOiB0aGlzLnZhbHVlRm9ybUNvbnRyb2wgfVxuICAgIH0pO1xuICB9XG5cbiAgZm9ybWF0RGVjaW1hbE51bWJlcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIEZvcm1IZWxwZXIuZm9ybWF0TnVtYmVyRm9yRGlzcGxheSh2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBbbmdTd2l0Y2hdPVwic2V0dGluZy5zZXR0aW5nVHlwZVwiPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIlNldHRpbmdUeXBlLlN0cmluZ1wiIGNsYXNzPVwid2l0aC12YWxpZGF0aW9uXCI+XG4gICAgICA8c3BhbiAqbmdJZj1cInZhbHVlRm9ybUNvbnRyb2wuaW52YWxpZFwiIGNsYXNzPVwiZXJyb3JcIj4qPC9zcGFuPlxuICAgICAgPGlucHV0IFtuZ0NsYXNzXT1cInsnaW52YWxpZCc6IHZhbHVlRm9ybUNvbnRyb2wuaW52YWxpZH1cIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInZhbHVlRm9ybUNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIm15IHZhbHVlXCIgbmFtZT1cInZhbHVlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5kXCIgKGNsaWNrKT1cInBvcE91dCgpXCIgbWF0VG9vbHRpcD1cIlBvcC1vdXQgRWRpdG9yXCI+XG4gICAgICAgIDxtYXQtaWNvbj5oZWlnaHQ8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiU2V0dGluZ1R5cGUuSW50XCIgY2xhc3M9XCJ3aXRoLXZhbGlkYXRpb25cIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwidmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkXCIgY2xhc3M9XCJlcnJvclwiPio8L3NwYW4+XG4gICAgICA8aW5wdXQgW25nQ2xhc3NdPVwieydpbnZhbGlkJzogdmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkfVwiIHR5cGU9XCJudW1iZXJcIiBbZm9ybUNvbnRyb2xdPVwidmFsdWVGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCI0MlwiIG5hbWU9XCJ2YWx1ZVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiU2V0dGluZ1R5cGUuRG91YmxlXCIgY2xhc3M9XCJ3aXRoLXZhbGlkYXRpb25cIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwidmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkXCIgY2xhc3M9XCJlcnJvclwiPio8L3NwYW4+XG4gICAgICA8aW5wdXQgW25nQ2xhc3NdPVwieydpbnZhbGlkJzogdmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkfVwiIHR5cGU9XCJudW1iZXJcIiBbZm9ybUNvbnRyb2xdPVwidmFsdWVGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBmb3JtYXREZWNpbWFsTnVtYmVyKDMuMTQpIH19XCIgbmFtZT1cInZhbHVlXCIgaW5wdXREaXNwbGF5Tm9ybWFsaXplcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJTZXR0aW5nVHlwZS5Cb29sZWFuXCIgY2xhc3M9XCJ0b2dnbGVcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2Zvcm1Db250cm9sXT1cInZhbHVlRm9ybUNvbnRyb2xcIiBuYW1lPVwidmFsdWVcIiAvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNsaWRlciByb3VuZFwiPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2V0dGluZy5zZXR0aW5nVHlwZSA9PT0gU2V0dGluZ1R5cGUuQm9vbGVhblwiIGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG5cbjwvZGl2PlxuIl19
|
|
@@ -2,7 +2,6 @@ import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
|
2
2
|
import { forkJoin } from 'rxjs';
|
|
3
3
|
import { ReasonDialogComponent } from '../dialogs/reason-dialog/reason-dialog.component';
|
|
4
4
|
import { SaveSnackbarComponent } from '../dialogs/save-snackbar/save-snackbar.component';
|
|
5
|
-
import { ConcurrentDialogComponent } from '../dialogs/concurrent-dialog/concurrent-dialog.component';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
import * as i1 from "../_services/setting-list-form-helper";
|
|
8
7
|
import * as i2 from "@angular/material/snack-bar";
|
|
@@ -18,11 +17,9 @@ export class SettingListComponent {
|
|
|
18
17
|
this.snackBar = snackBar;
|
|
19
18
|
this.dialog = dialog;
|
|
20
19
|
this.dashboardBasePath = 'https://app.configcat.com';
|
|
21
|
-
this.canEditSetting = false;
|
|
22
20
|
this.canDeleteSetting = false;
|
|
23
21
|
this.deleteSettingText = 'Delete setting';
|
|
24
22
|
this.showEnvironmentName = false;
|
|
25
|
-
this.editSettingRequested = new EventEmitter();
|
|
26
23
|
this.deleteSettingRequested = new EventEmitter();
|
|
27
24
|
this.formValuesChanged = new EventEmitter();
|
|
28
25
|
this.loading = true;
|
|
@@ -55,7 +52,7 @@ export class SettingListComponent {
|
|
|
55
52
|
this.segments = result.segments;
|
|
56
53
|
this.createFormGroup();
|
|
57
54
|
this.loading = false;
|
|
58
|
-
},
|
|
55
|
+
}, () => {
|
|
59
56
|
this.snackBar.open('Ooops. We could not load your Feature Flags and Settings. Please try again or contact us.', 'Dismiss', { duration: 60000, panelClass: 'red-snackbar' });
|
|
60
57
|
});
|
|
61
58
|
}
|
|
@@ -128,24 +125,6 @@ export class SettingListComponent {
|
|
|
128
125
|
this.submitting = false;
|
|
129
126
|
this.snackBar.openFromComponent(SaveSnackbarComponent, { duration: 5000, panelClass: 'green-snackbar' });
|
|
130
127
|
}, (error) => {
|
|
131
|
-
if (error.status === 400 && error.error
|
|
132
|
-
&& error.error.KnownLastUpdatedAt && error.error.KnownLastUpdatedAt[0] === 'Concurrent update') {
|
|
133
|
-
const dialogRef = this.dialog.open(ConcurrentDialogComponent, {
|
|
134
|
-
width: '560px'
|
|
135
|
-
});
|
|
136
|
-
dialogRef.afterClosed()
|
|
137
|
-
.subscribe(result => {
|
|
138
|
-
if (result && result.button === 'save') {
|
|
139
|
-
updateSettingValuesModel.forced = true;
|
|
140
|
-
this.updateSettingValues(updateSettingValuesModel);
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
this.reloadSettingValues();
|
|
144
|
-
this.submitting = false;
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
128
|
if (error.status === 400 && error.error && error.error.Reason && error.error.Reason[0] === 'Reason required') {
|
|
150
129
|
const dialogRef = this.dialog.open(ReasonDialogComponent, {
|
|
151
130
|
width: '450px'
|
|
@@ -173,13 +152,6 @@ export class SettingListComponent {
|
|
|
173
152
|
handleRevertCancel() {
|
|
174
153
|
this.showRevertQuestion = false;
|
|
175
154
|
}
|
|
176
|
-
onEditSettingRequested(setting) {
|
|
177
|
-
this.editSettingRequested.emit({
|
|
178
|
-
setting: setting.setting,
|
|
179
|
-
environment: this.settingValues.environment,
|
|
180
|
-
config: this.settingValues.config
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
155
|
onDeleteSettingRequested(setting) {
|
|
184
156
|
this.deleteSettingRequested.emit({
|
|
185
157
|
setting: setting.setting,
|
|
@@ -188,11 +160,11 @@ export class SettingListComponent {
|
|
|
188
160
|
});
|
|
189
161
|
}
|
|
190
162
|
}
|
|
191
|
-
SettingListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
192
|
-
SettingListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
163
|
+
SettingListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SettingListComponent, deps: [{ token: i1.SettingListFormHelper }, { token: i2.MatSnackBar }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
+
SettingListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SettingListComponent, selector: "configcat-setting-list", inputs: { productId: "productId", environmentId: "environmentId", configId: "configId", dashboardBasePath: "dashboardBasePath", canDeleteSetting: "canDeleteSetting", onSave: "onSave", loadSettingValues: "loadSettingValues", loadSegments: "loadSegments", deleteSettingText: "deleteSettingText", showEnvironmentName: "showEnvironmentName" }, outputs: { deleteSettingRequested: "deleteSettingRequested", formValuesChanged: "formValuesChanged" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"submit()\" *ngIf=\"!loading\">\n <div class=\"wrapper\" *ngFor=\"let settingValueFromGroup of getSettingValueFormGroups(); let i = index\">\n <setting [formGroup]=\"settingValueFromGroup\" [readOnly]=\"readOnly\" [canDeleteSetting]=\"canDeleteSetting\"\n (deleteSettingRequested)=\"onDeleteSettingRequested($event)\" [deleteSettingText]=\"deleteSettingText\"\n [showEnvironmentName]=\"showEnvironmentName\" [segments]=\"segments\" [productId]=\"productId\" [configId]=\"configId\"\n [environmentId]=\"environmentId\" [dashboardBasePath]=\"dashboardBasePath\">\n </setting>\n </div>\n\n <div class=\"save\" *ngIf=\"!readOnly && !submitting && formGroup.dirty\">\n <div class=\"feedback\" *ngIf=\"formGroup.touched && formGroup.invalid && showFeedBackMessage\">\n <div class=\"error\" *ngIf=\"formGroup.errors && formGroup.errors.internalServerError\">\n <span>Something went wrong and we could not save your settings. You can try again or <a\n href=\"https://configcat.com/support\" target=\"_blank\" rel=\"noopener noreferrer\">contact us.</a></span>\n </div>\n <div class=\"error\" *ngIf=\"!formGroup.errors || !formGroup.errors.internalServerError\">\n <span>Oh no! A feature flag has invalid or missing data.</span>\n </div>\n </div>\n <button type=\"button\" mat-stroked-button *ngIf=\"!showRevertQuestion\" (click)=\"showRevertQuestion = true\">\n <mat-icon>history</mat-icon><span>Revert changes</span>\n </button>\n <div *ngIf=\"showRevertQuestion\">\n <span class=\"revert\">Revert to last saved state?</span>\n <button type=\"button\" class=\"yes\" mat-stroked-button (click)=\"handleRevertYes()\">Yes</button>\n <button type=\"button\" mat-stroked-button (click)=\"handleRevertCancel()\">No</button>\n </div>\n <button class=\"save-button\" mat-flat-button color=\"warn\" type=\"submit\" [disabled]=\"submitting\">\n <mat-icon>backup</mat-icon> <span> Save & publish changes</span>\n </button>\n </div>\n</form>", styles: [".wrapper{background-color:#f3f3f3;border:1px solid rgba(0,0,0,.12);margin:1em 0}.show-hide a{cursor:pointer;font-size:.8rem}.save{position:sticky;bottom:0;min-height:38px;padding:.5rem .5rem .5rem 0;background-color:#fff;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end;z-index:1000}.save .save-button{animation:shadow-pulse 1s 3;margin-left:1rem}.save>*{margin:.3em}.save .revert{margin:0 16px;font-size:14px}.save .yes{margin:0 5px}.error{background-color:#a32b2d;color:#fff;padding:5px;font-size:.9em}.error a{color:#fff;text-decoration:underline}@media (max-width: 700px){.save{padding:.5rem 0}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.SettingComponent, selector: "setting", inputs: ["dashboardBasePath", "productId", "environmentId", "configId", "formGroup", "readOnly", "canDeleteSetting", "deleteSettingText", "showEnvironmentName", "segments"], outputs: ["deleteSettingRequested"] }] });
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SettingListComponent, decorators: [{
|
|
194
166
|
type: Component,
|
|
195
|
-
args: [{ selector: 'configcat-setting-list', template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"submit()\" *ngIf=\"!loading\">\n <div class=\"wrapper\" *ngFor=\"let settingValueFromGroup of getSettingValueFormGroups(); let i = index\">\n <setting [formGroup]=\"settingValueFromGroup\" [readOnly]=\"readOnly\" [
|
|
167
|
+
args: [{ selector: 'configcat-setting-list', template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"submit()\" *ngIf=\"!loading\">\n <div class=\"wrapper\" *ngFor=\"let settingValueFromGroup of getSettingValueFormGroups(); let i = index\">\n <setting [formGroup]=\"settingValueFromGroup\" [readOnly]=\"readOnly\" [canDeleteSetting]=\"canDeleteSetting\"\n (deleteSettingRequested)=\"onDeleteSettingRequested($event)\" [deleteSettingText]=\"deleteSettingText\"\n [showEnvironmentName]=\"showEnvironmentName\" [segments]=\"segments\" [productId]=\"productId\" [configId]=\"configId\"\n [environmentId]=\"environmentId\" [dashboardBasePath]=\"dashboardBasePath\">\n </setting>\n </div>\n\n <div class=\"save\" *ngIf=\"!readOnly && !submitting && formGroup.dirty\">\n <div class=\"feedback\" *ngIf=\"formGroup.touched && formGroup.invalid && showFeedBackMessage\">\n <div class=\"error\" *ngIf=\"formGroup.errors && formGroup.errors.internalServerError\">\n <span>Something went wrong and we could not save your settings. You can try again or <a\n href=\"https://configcat.com/support\" target=\"_blank\" rel=\"noopener noreferrer\">contact us.</a></span>\n </div>\n <div class=\"error\" *ngIf=\"!formGroup.errors || !formGroup.errors.internalServerError\">\n <span>Oh no! A feature flag has invalid or missing data.</span>\n </div>\n </div>\n <button type=\"button\" mat-stroked-button *ngIf=\"!showRevertQuestion\" (click)=\"showRevertQuestion = true\">\n <mat-icon>history</mat-icon><span>Revert changes</span>\n </button>\n <div *ngIf=\"showRevertQuestion\">\n <span class=\"revert\">Revert to last saved state?</span>\n <button type=\"button\" class=\"yes\" mat-stroked-button (click)=\"handleRevertYes()\">Yes</button>\n <button type=\"button\" mat-stroked-button (click)=\"handleRevertCancel()\">No</button>\n </div>\n <button class=\"save-button\" mat-flat-button color=\"warn\" type=\"submit\" [disabled]=\"submitting\">\n <mat-icon>backup</mat-icon> <span> Save & publish changes</span>\n </button>\n </div>\n</form>", styles: [".wrapper{background-color:#f3f3f3;border:1px solid rgba(0,0,0,.12);margin:1em 0}.show-hide a{cursor:pointer;font-size:.8rem}.save{position:sticky;bottom:0;min-height:38px;padding:.5rem .5rem .5rem 0;background-color:#fff;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end;z-index:1000}.save .save-button{animation:shadow-pulse 1s 3;margin-left:1rem}.save>*{margin:.3em}.save .revert{margin:0 16px;font-size:14px}.save .yes{margin:0 5px}.error{background-color:#a32b2d;color:#fff;padding:5px;font-size:.9em}.error a{color:#fff;text-decoration:underline}@media (max-width: 700px){.save{padding:.5rem 0}}\n"] }]
|
|
196
168
|
}], ctorParameters: function () { return [{ type: i1.SettingListFormHelper }, { type: i2.MatSnackBar }, { type: i3.MatDialog }]; }, propDecorators: { productId: [{
|
|
197
169
|
type: Input
|
|
198
170
|
}], environmentId: [{
|
|
@@ -201,8 +173,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
201
173
|
type: Input
|
|
202
174
|
}], dashboardBasePath: [{
|
|
203
175
|
type: Input
|
|
204
|
-
}], canEditSetting: [{
|
|
205
|
-
type: Input
|
|
206
176
|
}], canDeleteSetting: [{
|
|
207
177
|
type: Input
|
|
208
178
|
}], onSave: [{
|
|
@@ -215,11 +185,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
215
185
|
type: Input
|
|
216
186
|
}], showEnvironmentName: [{
|
|
217
187
|
type: Input
|
|
218
|
-
}], editSettingRequested: [{
|
|
219
|
-
type: Output
|
|
220
188
|
}], deleteSettingRequested: [{
|
|
221
189
|
type: Output
|
|
222
190
|
}], formValuesChanged: [{
|
|
223
191
|
type: Output
|
|
224
192
|
}] } });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBR3JHLE9BQU8sRUFBRSxRQUFRLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBRzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDOzs7Ozs7Ozs7O0FBVXJHLE1BQU0sT0FBTyxvQkFBb0I7SUFpQy9CLFlBQW9CLFVBQWlDLEVBQzNDLFFBQXFCLEVBQ3JCLE1BQWlCO1FBRlAsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7UUFDM0MsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBOUJsQixzQkFBaUIsR0FBRywyQkFBMkIsQ0FBQztRQUVoRCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFLekIsc0JBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFDckMsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTNCLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUMsMkJBQXNCLEdBQUcs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QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNldHRpbmdWYWx1ZXNNb2RlbCwgVXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsIH0gZnJvbSAnLi4vX21vZGVscyc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFJlYXNvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZ3MvcmVhc29uLWRpYWxvZy9yZWFzb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYXZlU25hY2tiYXJDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2dzL3NhdmUtc25hY2tiYXIvc2F2ZS1zbmFja2Jhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uY3VycmVudERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZ3MvY29uY3VycmVudC1kaWFsb2cvY29uY3VycmVudC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFNldHRpbmdMaXN0Rm9ybUhlbHBlciB9IGZyb20gJy4uL19zZXJ2aWNlcy9zZXR0aW5nLWxpc3QtZm9ybS1oZWxwZXInO1xuaW1wb3J0IHsgUm9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWwsIFJvbGxvdXRSdWxlTW9kZWwsIFNlZ21lbnRMaXN0TW9kZWwsIFVwZGF0ZVNldHRpbmdWYWx1ZU1vZGVsIH0gZnJvbSAnbmctY29uZmlnY2F0LXB1YmxpY2FwaSc7XG5pbXBvcnQgeyBGb3JtSGVscGVyIH0gZnJvbSAnLi4vX3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29uZmlnY2F0LXNldHRpbmctbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXR0aW5nLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXR0aW5nLWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHByb2R1Y3RJZCE6IHN0cmluZztcbiAgQElucHV0KCkgZW52aXJvbm1lbnRJZCE6IHN0cmluZztcbiAgQElucHV0KCkgY29uZmlnSWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhc2hib2FyZEJhc2VQYXRoID0gJ2h0dHBzOi8vYXBwLmNvbmZpZ2NhdC5jb20nO1xuXG4gIEBJbnB1dCgpIGNhbkVkaXRTZXR0aW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkRlbGV0ZVNldHRpbmcgPSBmYWxzZTtcblxuICBASW5wdXQoKSBvblNhdmUhOiAodmFsdWU6IFVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbCkgPT4gT2JzZXJ2YWJsZTxTZXR0aW5nVmFsdWVzTW9kZWw+O1xuICBASW5wdXQoKSBsb2FkU2V0dGluZ1ZhbHVlcyE6ICgpID0+IE9ic2VydmFibGU8U2V0dGluZ1ZhbHVlc01vZGVsPjtcbiAgQElucHV0KCkgbG9hZFNlZ21lbnRzITogKCkgPT4gT2JzZXJ2YWJsZTxTZWdtZW50TGlzdE1vZGVsW10+O1xuICBASW5wdXQoKSBkZWxldGVTZXR0aW5nVGV4dCA9ICdEZWxldGUgc2V0dGluZyc7XG4gIEBJbnB1dCgpIHNob3dFbnZpcm9ubWVudE5hbWUgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgZWRpdFNldHRpbmdSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkZWxldGVTZXR0aW5nUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZm9ybVZhbHVlc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gIGxvYWRpbmcgPSB0cnVlO1xuXG4gIHNldHRpbmdWYWx1ZXMhOiBTZXR0aW5nVmFsdWVzTW9kZWw7XG4gIHNlZ21lbnRzITogU2VnbWVudExpc3RNb2RlbFtdO1xuICBmb3JtR3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgc2hvd1JldmVydFF1ZXN0aW9uID0gZmFsc2U7XG4gIHNob3dGZWVkQmFja01lc3NhZ2UgPSBmYWxzZTtcbiAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1IZWxwZXI6IFNldHRpbmdMaXN0Rm9ybUhlbHBlcixcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZFNldHRpbmdWYWx1ZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkU2V0dGluZ1ZhbHVlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbG9hZFNldHRpbmdWYWx1ZXMoKSB7XG4gICAgdGhpcy5zaG93RmVlZEJhY2tNZXNzYWdlID0gZmFsc2U7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBmb3JrSm9pbih7XG4gICAgICBzZWdtZW50czogdGhpcy5sb2FkU2VnbWVudHMoKSxcbiAgICAgIHNldHRpbmdWYWx1ZXM6IHRoaXMubG9hZFNldHRpbmdWYWx1ZXMoKVxuICAgIH0pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5yZWFkT25seSA9IHJlc3VsdC5zZXR0aW5nVmFsdWVzLnJlYWRPbmx5O1xuICAgICAgdGhpcy5zZXR0aW5nVmFsdWVzID0gcmVzdWx0LnNldHRpbmdWYWx1ZXM7XG4gICAgICB0aGlzLnNlZ21lbnRzID0gcmVzdWx0LnNlZ21lbnRzO1xuICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignT29vcHMuIFdlIGNvdWxkIG5vdCBsb2FkIHlvdXIgRmVhdHVyZSBGbGFncyBhbmQgU2V0dGluZ3MuIFBsZWFzZSB0cnkgYWdhaW4gb3IgY29udGFjdCB1cy4nLFxuICAgICAgICAgICdEaXNtaXNzJywgeyBkdXJhdGlvbjogNjAwMDAsIHBhbmVsQ2xhc3M6ICdyZWQtc25hY2tiYXInIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBjcmVhdGVGb3JtR3JvdXAoKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1IZWxwZXIuY3JlYXRlU2V0dGluZ1ZhbHVlc0Zvcm1Hcm91cCh0aGlzLnNldHRpbmdWYWx1ZXMpO1xuICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWQuZW1pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0dGluZ1ZhbHVlc0Zvcm1BcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdzZXR0aW5nVmFsdWVzJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuXG4gIGdldFNldHRpbmdWYWx1ZUZvcm1Hcm91cHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ1ZhbHVlc0Zvcm1BcnJheSgpLmNvbnRyb2xzLm1hcChjID0+IGMgYXMgVW50eXBlZEZvcm1Hcm91cCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKHNldHRpbmdWYWx1ZXNWTTogVXBkYXRlU2V0dGluZ1ZhbHVlTW9kZWxbXSkge1xuICAgIHJldHVybiBzZXR0aW5nVmFsdWVzVk0ubWFwKHNldHRpbmdWYWx1ZVZNID0+IHtcbiAgICAgIHJldHVybiA8VXBkYXRlU2V0dGluZ1ZhbHVlTW9kZWw+XG4gICAgICB7XG4gICAgICAgIHJvbGxvdXRSdWxlczogc2V0dGluZ1ZhbHVlVk0ucm9sbG91dFJ1bGVzPy5tYXAocm9sbG91dFJ1bGVWTSA9PlxuICAgICAgICAgIDxSb2xsb3V0UnVsZU1vZGVsPntcbiAgICAgICAgICAgIGNvbXBhcmlzb25BdHRyaWJ1dGU6IHJvbGxvdXRSdWxlVk0uY29tcGFyaXNvbkF0dHJpYnV0ZSxcbiAgICAgICAgICAgIGNvbXBhcmF0b3I6IHJvbGxvdXRSdWxlVk0uY29tcGFyYXRvcixcbiAgICAgICAgICAgIGNvbXBhcmlzb25WYWx1ZTogdGhpcy5mb3JtSGVscGVyLm5vcm1hbGl6ZUNvbXBhcmlzb25WYWx1ZShyb2xsb3V0UnVsZVZNLmNvbXBhcmF0b3IsIHJvbGxvdXRSdWxlVk0uY29tcGFyaXNvblZhbHVlKSxcbiAgICAgICAgICAgIHNlZ21lbnRDb21wYXJhdG9yOiByb2xsb3V0UnVsZVZNLnNlZ21lbnRDb21wYXJhdG9yLFxuICAgICAgICAgICAgc2VnbWVudElkOiByb2xsb3V0UnVsZVZNLnNlZ21lbnRJZCxcbiAgICAgICAgICAgIHZhbHVlOiByb2xsb3V0UnVsZVZNLnZhbHVlXG4gICAgICAgICAgfSksXG4gICAgICAgIHJvbGxvdXRQZXJjZW50YWdlSXRlbXM6IHNldHRpbmdWYWx1ZVZNLnJvbGxvdXRQZXJjZW50YWdlSXRlbXM/Lm1hcChyb2xsb3V0UGVyY2VudGFnZUl0ZW1WTSA9PlxuICAgICAgICAgIDxSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbD57XG4gICAgICAgICAgICBwZXJjZW50YWdlOiByb2xsb3V0UGVyY2VudGFnZUl0ZW1WTS5wZXJjZW50YWdlLFxuICAgICAgICAgICAgdmFsdWU6IHJvbGxvdXRQZXJjZW50YWdlSXRlbVZNLnZhbHVlXG4gICAgICAgICAgfSksXG4gICAgICAgIHZhbHVlOiBzZXR0aW5nVmFsdWVWTS52YWx1ZVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwIHx8ICF0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgdGhpcy5zaG93RmVlZEJhY2tNZXNzYWdlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dGZWVkQmFja01lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnN1Ym1pdHRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgdXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsID0gPFVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbD57XG4gICAgICBzZXR0aW5nVmFsdWVzOiB0aGlzLmJ1aWxkVXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLnNldHRpbmdWYWx1ZXMudmFsdWUpLFxuICAgICAga25vd25MYXN0VXBkYXRlZEF0OiB0aGlzLnNldHRpbmdWYWx1ZXMubGFzdFVwZGF0ZWRBdCxcbiAgICAgIGZvcmNlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuc2V0dGluZ1ZhbHVlcy5yZWFzb25SZXF1aXJlZCkge1xuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihSZWFzb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgd2lkdGg6ICc0NTBweCdcbiAgICAgIH0pO1xuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmJ1dHRvbiA9PT0gJ3NhdmUnICYmIHJlc3VsdC5yZWFzb24pIHtcblxuICAgICAgICAgICAgdXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsLnJlYXNvbiA9IHJlc3VsdC5yZWFzb247XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgfVxuXG4gIHVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsOiBhbnkpIHtcbiAgICB0aGlzLm9uU2F2ZSh1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwpLnN1YnNjcmliZShzZXR0aW5nVmFsdWVzID0+IHtcbiAgICAgIHRoaXMuc2V0dGluZ1ZhbHVlcyA9IHNldHRpbmdWYWx1ZXM7XG4gICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xuICAgICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW5Gcm9tQ29tcG9uZW50KFNhdmVTbmFja2JhckNvbXBvbmVudCwgeyBkdXJhdGlvbjogNTAwMCwgcGFuZWxDbGFzczogJ2dyZWVuLXNuYWNrYmFyJyB9KTtcbiAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMCAmJiBlcnJvci5lcnJvclxuICAgICAgICAmJiBlcnJvci5lcnJvci5Lbm93bkxhc3RVcGRhdGVkQXQgJiYgZXJyb3IuZXJyb3IuS25vd25MYXN0VXBkYXRlZEF0WzBdID09PSAnQ29uY3VycmVudCB1cGRhdGUnKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uY3VycmVudERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgIHdpZHRoOiAnNTYwcHgnXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmJ1dHRvbiA9PT0gJ3NhdmUnKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbC5mb3JjZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMucmVsb2FkU2V0dGluZ1ZhbHVlcygpO1xuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDAgJiYgZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IuUmVhc29uICYmIGVycm9yLmVycm9yLlJlYXNvblswXSA9PT0gJ1JlYXNvbiByZXF1aXJlZCcpIHtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihSZWFzb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICB3aWR0aDogJzQ1MHB4J1xuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5idXR0b24gPT09ICdzYXZlJyAmJiByZXN1bHQucmVhc29uKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbC5yZWFzb24gPSByZXN1bHQucmVhc29uO1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLnNldEVycm9ycyh7IGludGVybmFsU2VydmVyRXJyb3I6ICdJbnRlcm5hbCBzZXJ2ZXIgZXJyb3InIH0pO1xuICAgICAgdGhpcy5zaG93RmVlZEJhY2tNZXNzYWdlID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVJldmVydFllcygpIHtcbiAgICB0aGlzLnNob3dSZXZlcnRRdWVzdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMucmVsb2FkU2V0dGluZ1ZhbHVlcygpO1xuICB9XG5cbiAgaGFuZGxlUmV2ZXJ0Q2FuY2VsKCkge1xuICAgIHRoaXMuc2hvd1JldmVydFF1ZXN0aW9uID0gZmFsc2U7XG4gIH1cblxuICBvbkVkaXRTZXR0aW5nUmVxdWVzdGVkKHNldHRpbmc6IGFueSkge1xuICAgIHRoaXMuZWRpdFNldHRpbmdSZXF1ZXN0ZWQuZW1pdCh7XG4gICAgICBzZXR0aW5nOiBzZXR0aW5nLnNldHRpbmcsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5zZXR0aW5nVmFsdWVzLmVudmlyb25tZW50LFxuICAgICAgY29uZmlnOiB0aGlzLnNldHRpbmdWYWx1ZXMuY29uZmlnXG4gICAgfSk7XG4gIH1cblxuICBvbkRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQoc2V0dGluZzogYW55KSB7XG4gICAgdGhpcy5kZWxldGVTZXR0aW5nUmVxdWVzdGVkLmVtaXQoe1xuICAgICAgc2V0dGluZzogc2V0dGluZy5zZXR0aW5nLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuc2V0dGluZ1ZhbHVlcy5lbnZpcm9ubWVudCxcbiAgICAgIGNvbmZpZzogdGhpcy5zZXR0aW5nVmFsdWVzLmNvbmZpZ1xuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIChuZ1N1Ym1pdCk9XCJzdWJtaXQoKVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIiAqbmdGb3I9XCJsZXQgc2V0dGluZ1ZhbHVlRnJvbUdyb3VwIG9mIGdldFNldHRpbmdWYWx1ZUZvcm1Hcm91cHMoKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxzZXR0aW5nIFtmb3JtR3JvdXBdPVwic2V0dGluZ1ZhbHVlRnJvbUdyb3VwXCIgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgW2NhbkVkaXRTZXR0aW5nXT1cImNhbkVkaXRTZXR0aW5nXCJcbiAgICAgIFtjYW5EZWxldGVTZXR0aW5nXT1cImNhbkRlbGV0ZVNldHRpbmdcIiAoZWRpdFNldHRpbmdSZXF1ZXN0ZWQpPVwib25FZGl0U2V0dGluZ1JlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICAgIChkZWxldGVTZXR0aW5nUmVxdWVzdGVkKT1cIm9uRGVsZXRlU2V0dGluZ1JlcXVlc3RlZCgkZXZlbnQpXCIgW2RlbGV0ZVNldHRpbmdUZXh0XT1cImRlbGV0ZVNldHRpbmdUZXh0XCJcbiAgICAgIFtzaG93RW52aXJvbm1lbnROYW1lXT1cInNob3dFbnZpcm9ubWVudE5hbWVcIiBbc2VnbWVudHNdPVwic2VnbWVudHNcIiBbcHJvZHVjdElkXT1cInByb2R1Y3RJZFwiIFtjb25maWdJZF09XCJjb25maWdJZFwiXG4gICAgICBbZW52aXJvbm1lbnRJZF09XCJlbnZpcm9ubWVudElkXCIgW2Rhc2hib2FyZEJhc2VQYXRoXT1cImRhc2hib2FyZEJhc2VQYXRoXCI+XG4gICAgPC9zZXR0aW5nPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2F2ZVwiICpuZ0lmPVwiIXJlYWRPbmx5ICYmICFzdWJtaXR0aW5nICYmIGZvcm1Hcm91cC5kaXJ0eVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmZWVkYmFja1wiICpuZ0lmPVwiZm9ybUdyb3VwLnRvdWNoZWQgJiYgZm9ybUdyb3VwLmludmFsaWQgJiYgc2hvd0ZlZWRCYWNrTWVzc2FnZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCIgKm5nSWY9XCJmb3JtR3JvdXAuZXJyb3JzICYmIGZvcm1Hcm91cC5lcnJvcnMuaW50ZXJuYWxTZXJ2ZXJFcnJvclwiPlxuICAgICAgICA8c3Bhbj5Tb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgd2UgY291bGQgbm90IHNhdmUgeW91ciBzZXR0aW5ncy4gWW91IGNhbiB0cnkgYWdhaW4gb3IgPGFcbiAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2NvbmZpZ2NhdC5jb20vc3VwcG9ydFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5jb250YWN0IHVzLjwvYT48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiIWZvcm1Hcm91cC5lcnJvcnMgfHwgIWZvcm1Hcm91cC5lcnJvcnMuaW50ZXJuYWxTZXJ2ZXJFcnJvclwiPlxuICAgICAgICA8c3Bhbj5PaCBubyEgQSBmZWF0dXJlIGZsYWcgaGFzIGludmFsaWQgb3IgbWlzc2luZyBkYXRhLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiAqbmdJZj1cIiFzaG93UmV2ZXJ0UXVlc3Rpb25cIiAoY2xpY2spPVwic2hvd1JldmVydFF1ZXN0aW9uID0gdHJ1ZVwiPlxuICAgICAgPG1hdC1pY29uPmhpc3Rvcnk8L21hdC1pY29uPjxzcGFuPlJldmVydCBjaGFuZ2VzPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93UmV2ZXJ0UXVlc3Rpb25cIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicmV2ZXJ0XCI+UmV2ZXJ0IHRvIGxhc3Qgc2F2ZWQgc3RhdGU/PC9zcGFuPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ5ZXNcIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cImhhbmRsZVJldmVydFllcygpXCI+WWVzPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cImhhbmRsZVJldmVydENhbmNlbCgpXCI+Tm88L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwic2F2ZS1idXR0b25cIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJ3YXJuXCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJzdWJtaXR0aW5nXCI+XG4gICAgICA8bWF0LWljb24+YmFja3VwPC9tYXQtaWNvbj4gPHNwYW4+IFNhdmUgJiBwdWJsaXNoIGNoYW5nZXM8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPiJdfQ==
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBR3JHLE9BQU8sRUFBRSxRQUFRLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBRzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7Ozs7O0FBU3pGLE1BQU0sT0FBTyxvQkFBb0I7SUErQi9CLFlBQW9CLFVBQWlDLEVBQzNDLFFBQXFCLEVBQ3JCLE1BQWlCO1FBRlAsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7UUFDM0MsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBNUJsQixzQkFBaUIsR0FBRywyQkFBMkIsQ0FBQztRQUVoRCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFLekIsc0JBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFDckMsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTNCLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUlqRCxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBTWYsZUFBVSxHQUFHLEtBQUssQ0FBQztR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YUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUksc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZXR0aW5nVmFsdWVzTW9kZWwsIFVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbCB9IGZyb20gJy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBSZWFzb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2dzL3JlYXNvbi1kaWFsb2cvcmVhc29uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2F2ZVNuYWNrYmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9ncy9zYXZlLXNuYWNrYmFyL3NhdmUtc25hY2tiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNldHRpbmdMaXN0Rm9ybUhlbHBlciB9IGZyb20gJy4uL19zZXJ2aWNlcy9zZXR0aW5nLWxpc3QtZm9ybS1oZWxwZXInO1xuaW1wb3J0IHsgUm9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWwsIFJvbGxvdXRSdWxlTW9kZWwsIFNlZ21lbnRMaXN0TW9kZWwsIFNldHRpbmdNb2RlbCwgVXBkYXRlU2V0dGluZ1ZhbHVlTW9kZWwgfSBmcm9tICduZy1jb25maWdjYXQtcHVibGljYXBpJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29uZmlnY2F0LXNldHRpbmctbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXR0aW5nLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXR0aW5nLWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHByb2R1Y3RJZCE6IHN0cmluZztcbiAgQElucHV0KCkgZW52aXJvbm1lbnRJZCE6IHN0cmluZztcbiAgQElucHV0KCkgY29uZmlnSWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhc2hib2FyZEJhc2VQYXRoID0gJ2h0dHBzOi8vYXBwLmNvbmZpZ2NhdC5jb20nO1xuXG4gIEBJbnB1dCgpIGNhbkRlbGV0ZVNldHRpbmcgPSBmYWxzZTtcblxuICBASW5wdXQoKSBvblNhdmUhOiAodmFsdWU6IFVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbCkgPT4gT2JzZXJ2YWJsZTxTZXR0aW5nVmFsdWVzTW9kZWw+O1xuICBASW5wdXQoKSBsb2FkU2V0dGluZ1ZhbHVlcyE6ICgpID0+IE9ic2VydmFibGU8U2V0dGluZ1ZhbHVlc01vZGVsPjtcbiAgQElucHV0KCkgbG9hZFNlZ21lbnRzITogKCkgPT4gT2JzZXJ2YWJsZTxTZWdtZW50TGlzdE1vZGVsW10+O1xuICBASW5wdXQoKSBkZWxldGVTZXR0aW5nVGV4dCA9ICdEZWxldGUgc2V0dGluZyc7XG4gIEBJbnB1dCgpIHNob3dFbnZpcm9ubWVudE5hbWUgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgZGVsZXRlU2V0dGluZ1JlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGZvcm1WYWx1ZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGZvcm1WYWx1ZXNDaGFuZ2VkU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uIHwgbnVsbDtcblxuICBsb2FkaW5nID0gdHJ1ZTtcblxuICBzZXR0aW5nVmFsdWVzITogU2V0dGluZ1ZhbHVlc01vZGVsO1xuICBzZWdtZW50cyE6IFNlZ21lbnRMaXN0TW9kZWxbXTtcbiAgZm9ybUdyb3VwITogVW50eXBlZEZvcm1Hcm91cDtcblxuICBzdWJtaXR0aW5nID0gZmFsc2U7XG4gIHNob3dSZXZlcnRRdWVzdGlvbiA9IGZhbHNlO1xuICBzaG93RmVlZEJhY2tNZXNzYWdlID0gZmFsc2U7XG4gIHJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtSGVscGVyOiBTZXR0aW5nTGlzdEZvcm1IZWxwZXIsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWxvYWRTZXR0aW5nVmFsdWVzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZFNldHRpbmdWYWx1ZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZWxvYWRTZXR0aW5nVmFsdWVzKCkge1xuICAgIHRoaXMuc2hvd0ZlZWRCYWNrTWVzc2FnZSA9IGZhbHNlO1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgZm9ya0pvaW4oe1xuICAgICAgc2VnbWVudHM6IHRoaXMubG9hZFNlZ21lbnRzKCksXG4gICAgICBzZXR0aW5nVmFsdWVzOiB0aGlzLmxvYWRTZXR0aW5nVmFsdWVzKClcbiAgICB9KS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIHRoaXMucmVhZE9ubHkgPSByZXN1bHQuc2V0dGluZ1ZhbHVlcy5yZWFkT25seTtcbiAgICAgIHRoaXMuc2V0dGluZ1ZhbHVlcyA9IHJlc3VsdC5zZXR0aW5nVmFsdWVzO1xuICAgICAgdGhpcy5zZWdtZW50cyA9IHJlc3VsdC5zZWdtZW50cztcbiAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ09vb3BzLiBXZSBjb3VsZCBub3QgbG9hZCB5b3VyIEZlYXR1cmUgRmxhZ3MgYW5kIFNldHRpbmdzLiBQbGVhc2UgdHJ5IGFnYWluIG9yIGNvbnRhY3QgdXMuJyxcbiAgICAgICAgICAnRGlzbWlzcycsIHsgZHVyYXRpb246IDYwMDAwLCBwYW5lbENsYXNzOiAncmVkLXNuYWNrYmFyJyB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlRm9ybUdyb3VwKCkge1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mb3JtSGVscGVyLmNyZWF0ZVNldHRpbmdWYWx1ZXNGb3JtR3JvdXAodGhpcy5zZXR0aW5nVmFsdWVzKTtcbiAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkU3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkLmVtaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldHRpbmdWYWx1ZXNGb3JtQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgnc2V0dGluZ1ZhbHVlcycpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cblxuICBnZXRTZXR0aW5nVmFsdWVGb3JtR3JvdXBzKCkge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdWYWx1ZXNGb3JtQXJyYXkoKS5jb250cm9scy5tYXAoYyA9PiBjIGFzIFVudHlwZWRGb3JtR3JvdXApO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbChzZXR0aW5nVmFsdWVzVk06IFVwZGF0ZVNldHRpbmdWYWx1ZU1vZGVsW10pIHtcbiAgICByZXR1cm4gc2V0dGluZ1ZhbHVlc1ZNLm1hcChzZXR0aW5nVmFsdWVWTSA9PiB7XG4gICAgICByZXR1cm4gPFVwZGF0ZVNldHRpbmdWYWx1ZU1vZGVsPlxuICAgICAgICB7XG4gICAgICAgICAgcm9sbG91dFJ1bGVzOiBzZXR0aW5nVmFsdWVWTS5yb2xsb3V0UnVsZXM/Lm1hcChyb2xsb3V0UnVsZVZNID0+XG4gICAgICAgICAgICA8Um9sbG91dFJ1bGVNb2RlbD57XG4gICAgICAgICAgICAgIGNvbXBhcmlzb25BdHRyaWJ1dGU6IHJvbGxvdXRSdWxlVk0uY29tcGFyaXNvbkF0dHJpYnV0ZSxcbiAgICAgICAgICAgICAgY29tcGFyYXRvcjogcm9sbG91dFJ1bGVWTS5jb21wYXJhdG9yLFxuICAgICAgICAgICAgICBjb21wYXJpc29uVmFsdWU6IHRoaXMuZm9ybUhlbHBlci5ub3JtYWxpemVDb21wYXJpc29uVmFsdWUocm9sbG91dFJ1bGVWTS5jb21wYXJhdG9yLCByb2xsb3V0UnVsZVZNLmNvbXBhcmlzb25WYWx1ZSksXG4gICAgICAgICAgICAgIHNlZ21lbnRDb21wYXJhdG9yOiByb2xsb3V0UnVsZVZNLnNlZ21lbnRDb21wYXJhdG9yLFxuICAgICAgICAgICAgICBzZWdtZW50SWQ6IHJvbGxvdXRSdWxlVk0uc2VnbWVudElkLFxuICAgICAgICAgICAgICB2YWx1ZTogcm9sbG91dFJ1bGVWTS52YWx1ZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgcm9sbG91dFBlcmNlbnRhZ2VJdGVtczogc2V0dGluZ1ZhbHVlVk0ucm9sbG91dFBlcmNlbnRhZ2VJdGVtcz8ubWFwKHJvbGxvdXRQZXJjZW50YWdlSXRlbVZNID0+XG4gICAgICAgICAgICA8Um9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWw+e1xuICAgICAgICAgICAgICBwZXJjZW50YWdlOiByb2xsb3V0UGVyY2VudGFnZUl0ZW1WTS5wZXJjZW50YWdlLFxuICAgICAgICAgICAgICB2YWx1ZTogcm9sbG91dFBlcmNlbnRhZ2VJdGVtVk0udmFsdWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIHZhbHVlOiBzZXR0aW5nVmFsdWVWTS52YWx1ZVxuICAgICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIGlmICghdGhpcy5mb3JtR3JvdXAgfHwgIXRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XG4gICAgICB0aGlzLnNob3dGZWVkQmFja01lc3NhZ2UgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtR3JvdXAubWFya0FzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd0ZlZWRCYWNrTWVzc2FnZSA9IGZhbHNlO1xuICAgIHRoaXMuc3VibWl0dGluZyA9IHRydWU7XG5cbiAgICBjb25zdCB1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwgPSA8VXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsPntcbiAgICAgIHNldHRpbmdWYWx1ZXM6IHRoaXMuYnVpbGRVcGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwodGhpcy5mb3JtR3JvdXAuY29udHJvbHMuc2V0dGluZ1ZhbHVlcy52YWx1ZSksXG4gICAgICBrbm93bkxhc3RVcGRhdGVkQXQ6IHRoaXMuc2V0dGluZ1ZhbHVlcy5sYXN0VXBkYXRlZEF0LFxuICAgICAgZm9yY2VkOiBmYWxzZVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zZXR0aW5nVmFsdWVzLnJlYXNvblJlcXVpcmVkKSB7XG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFJlYXNvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICB3aWR0aDogJzQ1MHB4J1xuICAgICAgfSk7XG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuYnV0dG9uID09PSAnc2F2ZScgJiYgcmVzdWx0LnJlYXNvbikge1xuXG4gICAgICAgICAgICB1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwucmVhc29uID0gcmVzdWx0LnJlYXNvbjtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2V0dGluZ1ZhbHVlcyh1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2V0dGluZ1ZhbHVlcyh1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwpO1xuICB9XG5cbiAgdXBkYXRlU2V0dGluZ1ZhbHVlcyh1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWw6IGFueSkge1xuICAgIHRoaXMub25TYXZlKHVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbCkuc3Vic2NyaWJlKHNldHRpbmdWYWx1ZXMgPT4ge1xuICAgICAgdGhpcy5zZXR0aW5nVmFsdWVzID0gc2V0dGluZ1ZhbHVlcztcbiAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XG4gICAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbkZyb21Db21wb25lbnQoU2F2ZVNuYWNrYmFyQ29tcG9uZW50LCB7IGR1cmF0aW9uOiA1MDAwLCBwYW5lbENsYXNzOiAnZ3JlZW4tc25hY2tiYXInIH0pO1xuICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAwICYmIGVycm9yLmVycm9yICYmIGVycm9yLmVycm9yLlJlYXNvbiAmJiBlcnJvci5lcnJvci5SZWFzb25bMF0gPT09ICdSZWFzb24gcmVxdWlyZWQnKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUmVhc29uRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgd2lkdGg6ICc0NTBweCdcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuYnV0dG9uID09PSAnc2F2ZScgJiYgcmVzdWx0LnJlYXNvbikge1xuICAgICAgICAgICAgICB1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwucmVhc29uID0gcmVzdWx0LnJlYXNvbjtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZXR0aW5nVmFsdWVzKHVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZvcm1Hcm91cC5zZXRFcnJvcnMoeyBpbnRlcm5hbFNlcnZlckVycm9yOiAnSW50ZXJuYWwgc2VydmVyIGVycm9yJyB9KTtcbiAgICAgIHRoaXMuc2hvd0ZlZWRCYWNrTWVzc2FnZSA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVSZXZlcnRZZXMoKSB7XG4gICAgdGhpcy5zaG93UmV2ZXJ0UXVlc3Rpb24gPSBmYWxzZTtcbiAgICB0aGlzLnJlbG9hZFNldHRpbmdWYWx1ZXMoKTtcbiAgfVxuXG4gIGhhbmRsZVJldmVydENhbmNlbCgpIHtcbiAgICB0aGlzLnNob3dSZXZlcnRRdWVzdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgb25EZWxldGVTZXR0aW5nUmVxdWVzdGVkKHNldHRpbmc6IHsgc2V0dGluZzogU2V0dGluZ01vZGVsIH0pIHtcbiAgICB0aGlzLmRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQuZW1pdCh7XG4gICAgICBzZXR0aW5nOiBzZXR0aW5nLnNldHRpbmcsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5zZXR0aW5nVmFsdWVzLmVudmlyb25tZW50LFxuICAgICAgY29uZmlnOiB0aGlzLnNldHRpbmdWYWx1ZXMuY29uZmlnXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgKG5nU3VibWl0KT1cInN1Ym1pdCgpXCIgKm5nSWY9XCIhbG9hZGluZ1wiPlxuICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiICpuZ0Zvcj1cImxldCBzZXR0aW5nVmFsdWVGcm9tR3JvdXAgb2YgZ2V0U2V0dGluZ1ZhbHVlRm9ybUdyb3VwcygpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPHNldHRpbmcgW2Zvcm1Hcm91cF09XCJzZXR0aW5nVmFsdWVGcm9tR3JvdXBcIiBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiBbY2FuRGVsZXRlU2V0dGluZ109XCJjYW5EZWxldGVTZXR0aW5nXCJcbiAgICAgIChkZWxldGVTZXR0aW5nUmVxdWVzdGVkKT1cIm9uRGVsZXRlU2V0dGluZ1JlcXVlc3RlZCgkZXZlbnQpXCIgW2RlbGV0ZVNldHRpbmdUZXh0XT1cImRlbGV0ZVNldHRpbmdUZXh0XCJcbiAgICAgIFtzaG93RW52aXJvbm1lbnROYW1lXT1cInNob3dFbnZpcm9ubWVudE5hbWVcIiBbc2VnbWVudHNdPVwic2VnbWVudHNcIiBbcHJvZHVjdElkXT1cInByb2R1Y3RJZFwiIFtjb25maWdJZF09XCJjb25maWdJZFwiXG4gICAgICBbZW52aXJvbm1lbnRJZF09XCJlbnZpcm9ubWVudElkXCIgW2Rhc2hib2FyZEJhc2VQYXRoXT1cImRhc2hib2FyZEJhc2VQYXRoXCI+XG4gICAgPC9zZXR0aW5nPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2F2ZVwiICpuZ0lmPVwiIXJlYWRPbmx5ICYmICFzdWJtaXR0aW5nICYmIGZvcm1Hcm91cC5kaXJ0eVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmZWVkYmFja1wiICpuZ0lmPVwiZm9ybUdyb3VwLnRvdWNoZWQgJiYgZm9ybUdyb3VwLmludmFsaWQgJiYgc2hvd0ZlZWRCYWNrTWVzc2FnZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCIgKm5nSWY9XCJmb3JtR3JvdXAuZXJyb3JzICYmIGZvcm1Hcm91cC5lcnJvcnMuaW50ZXJuYWxTZXJ2ZXJFcnJvclwiPlxuICAgICAgICA8c3Bhbj5Tb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgd2UgY291bGQgbm90IHNhdmUgeW91ciBzZXR0aW5ncy4gWW91IGNhbiB0cnkgYWdhaW4gb3IgPGFcbiAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2NvbmZpZ2NhdC5jb20vc3VwcG9ydFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5jb250YWN0IHVzLjwvYT48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiIWZvcm1Hcm91cC5lcnJvcnMgfHwgIWZvcm1Hcm91cC5lcnJvcnMuaW50ZXJuYWxTZXJ2ZXJFcnJvclwiPlxuICAgICAgICA8c3Bhbj5PaCBubyEgQSBmZWF0dXJlIGZsYWcgaGFzIGludmFsaWQgb3IgbWlzc2luZyBkYXRhLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiAqbmdJZj1cIiFzaG93UmV2ZXJ0UXVlc3Rpb25cIiAoY2xpY2spPVwic2hvd1JldmVydFF1ZXN0aW9uID0gdHJ1ZVwiPlxuICAgICAgPG1hdC1pY29uPmhpc3Rvcnk8L21hdC1pY29uPjxzcGFuPlJldmVydCBjaGFuZ2VzPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93UmV2ZXJ0UXVlc3Rpb25cIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicmV2ZXJ0XCI+UmV2ZXJ0IHRvIGxhc3Qgc2F2ZWQgc3RhdGU/PC9zcGFuPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ5ZXNcIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cImhhbmRsZVJldmVydFllcygpXCI+WWVzPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cImhhbmRsZVJldmVydENhbmNlbCgpXCI+Tm88L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwic2F2ZS1idXR0b25cIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJ3YXJuXCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJzdWJtaXR0aW5nXCI+XG4gICAgICA8bWF0LWljb24+YmFja3VwPC9tYXQtaWNvbj4gPHNwYW4+IFNhdmUgJiBwdWJsaXNoIGNoYW5nZXM8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPiJdfQ==
|