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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-configcat-publicapi-ui.mjs","sources":["../../../projects/ng-configcat-publicapi-ui/src/lib/configuration.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/_services/public-api.service.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/base/base.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/_services/platform-helper.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/_services/form-helper.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/reason-dialog/reason-dialog.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/reason-dialog/reason-dialog.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/save-snackbar/save-snackbar.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/save-snackbar/save-snackbar.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/concurrent-dialog/concurrent-dialog.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/concurrent-dialog/concurrent-dialog.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/_services/setting-list-form-helper.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/expand-dialog/expand-dialog.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/expand-dialog/expand-dialog.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/_directives/input-display-normalizer.directive.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/value/value.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/value/value.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/rollout-rules/rollout-rules.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/rollout-rules/rollout-rules.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/setting.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/setting.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting-list.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting-list.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-item/setting-item.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-item/setting-item.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/setting-select/setting-select.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/setting-select/setting-select.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/product-select/product-select.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/product-select/product-select.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/config-select/config-select.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/config-select/config-select.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/environment-select/environment-select.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/environment-select/environment-select.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/authorization/authorization.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/authorization/authorization.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/ng-configcat-publicapi-ui.module.ts","../../../projects/ng-configcat-publicapi-ui/src/public-api.ts","../../../projects/ng-configcat-publicapi-ui/src/ng-configcat-publicapi-ui.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class Configuration {\n basicAuthUsername?: string;\n basicAuthPassword?: string;\n basePath = 'https://api.configcat.com';\n dashboardBasePath = 'https://app.configcat.com';\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Configuration as PublicApiConfiguration,\n ProductsService, EnvironmentsService, ConfigsService,\n FeatureFlagsSettingsService, FeatureFlagSettingValuesService, MeService,\n IntegrationLinksService,\n SegmentsService\n} from 'ng-configcat-publicapi';\nimport { Configuration } from '../configuration';\n\n@Injectable({ providedIn: 'root' })\nexport class PublicApiService {\n\n constructor(\n private httpClient: HttpClient,\n @Optional() private configuration: Configuration) {\n }\n\n createMeService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new MeService(this.httpClient, basePath ?? this.configuration?.basePath,\n new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createProductsService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new ProductsService(this.httpClient, basePath ?? this.configuration?.basePath,\n new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createConfigsService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new ConfigsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createEnvironmentsService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new EnvironmentsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createSettingsService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new FeatureFlagsSettingsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createSettingValuesService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new FeatureFlagSettingValuesService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createIntegrationLinksService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new IntegrationLinksService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createSegmentsService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new SegmentsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n getDashboardBasePath() {\n return this.configuration?.dashboardBasePath ?? 'https://app.configcat.com';\n }\n}\n","import { Component, Input, Optional } from '@angular/core';\nimport { Configuration } from '../configuration';\nimport { PublicApiService } from '../_services/public-api.service';\n\n@Component({\n selector: 'base',\n template: '<div></div>'\n})\nexport class BaseComponent {\n\n @Input() basePath: string | null = null;\n @Input() basicAuthUsername: string | null = null;\n @Input() basicAuthPassword: string | null = null;\n\n constructor(private publicApiService: PublicApiService) {\n }\n\n protected createProductsService() {\n return this.publicApiService.createProductsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n\n protected createConfigsService() {\n return this.publicApiService.createConfigsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n\n protected createEnvironmentsService() {\n return this.publicApiService.createEnvironmentsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n\n protected createSettingsService() {\n return this.publicApiService.createSettingsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n\n protected createSettingValuesService() {\n return this.publicApiService.createSettingValuesService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n\n protected createSegmentsService() {\n return this.publicApiService.createSegmentsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n}\n","export class PlatformHelper {\n public static isChromium() {\n // https://stackoverflow.com/a/62797156/8656352\n return !!(window as any).chrome;\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { PlatformHelper } from './platform-helper';\n\nexport class FormHelper {\n\n public static getErrorMessage(control: AbstractControl, hint: string = '') {\n if (!control || control.valid) {\n return;\n }\n\n if (control.hasError('required')) {\n return `${hint} The field is required.`;\n }\n\n if (control.hasError('pattern')) {\n return 'Not a valid e-mail address.';\n }\n\n if (control.hasError('minlength')) {\n return 'The field must be at least ' + control.getError('minlength').requiredLength + ' characters long';\n }\n\n if (control.hasError('maxlength')) {\n return 'The field must be at max ' + control.getError('maxlength').requiredLength + ' characters long';\n }\n\n return;\n }\n\n\n public static handleErrors(formGroup: FormGroup, error: any) {\n if (error instanceof HttpErrorResponse) {\n const response = error as HttpErrorResponse;\n switch (response.status) {\n case 400:\n let unknownFieldName = false;\n for (const fieldName in error.error) {\n if (error.error.hasOwnProperty(fieldName) && error.error[fieldName] &&\n (error.error[fieldName]?.length > 0 || error.error[fieldName]?.Errors?.length > 0)) {\n let jsonFieldName = fieldName;\n if (jsonFieldName.length > 0) {\n jsonFieldName = jsonFieldName[0].toLowerCase() + jsonFieldName.slice(1);\n }\n\n const errorMessage = error.error[fieldName]?.Errors?.length > 0 ?\n (error.error[fieldName]?.Errors.map((e: any) => e.ErrorMessage)).join(', ')\n : error.error[fieldName];\n\n if (formGroup.controls.hasOwnProperty(jsonFieldName)) {\n formGroup.controls[jsonFieldName].setErrors({ serverSide: errorMessage });\n } else {\n unknownFieldName = true;\n }\n }\n }\n if (unknownFieldName) {\n formGroup.setErrors({ serverSide: 'Something went wrong.' });\n }\n break;\n // in these cases we do not show errors on the form, they're handled by the http\n // interceptor in src\\app\\_interceptors\\httpstatuscode.interceptor.ts\n case 402:\n case 429:\n return;\n }\n } else {\n formGroup.setErrors({ serverSide: 'Something went wrong on our side. This is not your fault. Please try again.' });\n }\n }\n\n /**\n * Converts a value representing a number to a `number` value.\n * Returns `NaN` in the case of non-numerical values.\n */\n public static normalizeNumber(value: any): number {\n switch (typeof value) {\n case \"number\":\n return value;\n case \"string\":\n // NOTE: `Number()` converts whitespace strings to 0.\n return value.trim() === '' ? NaN : Number(value);\n case \"bigint\":\n return Number(value);\n default:\n return NaN;\n }\n }\n\n /**\n * Converts a value representing a number to the normalized `string`\n * representation of the number. (e.g. `.1` --> `'0.1'`, `3.14e2` --> `'314'`).\n * Returns `''` in the case of non-numerical values or non-finite numerical values.\n */\n public static normalizeNumberStoredAsString(value: any): string {\n value = FormHelper.normalizeNumber(value);\n // NOTE: `NaN` is not considered finite.\n return isFinite(value) ? value + '' : '';\n }\n\n \n public static formatNumberForDisplay(value: number) {\n if (!isFinite(value)) {\n return '';\n }\n\n // Chromium-based browsers don't respect the `lang` attribute,\n // they use a display format corresponding to the browser's language setting.\n if (PlatformHelper.isChromium()) {\n return value.toLocaleString();\n }\n\n // Firefox (and probably other browsers) respect the `lang` attribute,\n // which is currently set to the fixed value of \"en\" (see index.html),\n // so in these cases dot should be used as the decimal separator.\n // (In case localization is implemented in the application, this logic should be revised!)\n return value + '';\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { UntypedFormGroup, UntypedFormBuilder, Validators } from '@angular/forms';\n\n@Component({\n selector: 'configcat-reason-dialog',\n templateUrl: './reason-dialog.component.html',\n styleUrls: ['./reason-dialog.component.scss']\n})\nexport class ReasonDialogComponent implements OnInit {\n\n formGroup!: UntypedFormGroup;\n\n constructor(\n public dialogRef: MatDialogRef<ReasonDialogComponent>,\n private formBuilder: UntypedFormBuilder\n ) { }\n\n ngOnInit() {\n this.formGroup = this.formBuilder.group({\n reason: ['', [Validators.required, Validators.maxLength(1000)]]\n });\n }\n\n handleSaveButton() {\n if (!this.formGroup.valid) {\n return;\n }\n\n this.dialogRef.close({ button: 'save', reason: this.formGroup.controls.reason.value });\n }\n\n cancel() {\n this.dialogRef.close({ button: 'cancel' });\n }\n}\n","<h3 mat-dialog-title>Add notes</h3>\n<p>This will appear in the Why column of the Audit Log.</p>\n<form [formGroup]=\"formGroup\" (ngSubmit)=\"handleSaveButton()\">\n <div mat-dialog-content class=\"container\">\n <mat-form-field appearance=\"outline\">\n <mat-label></mat-label>\n <textarea matInput formControlName=\"reason\" name=\"reason\" placeholder=\"I'm changing settings because...\"\n rows=\"3\"></textarea>\n <mat-error *ngIf=\"formGroup.controls.reason.invalid\">The field is required.</mat-error>\n </mat-form-field>\n </div>\n <br>\n <div mat-dialog-actions>\n <button type=\"submit\" style=\"margin-right: 10px;\" mat-flat-button color=\"primary\">Add notes & Save</button>\n <button type=\"button\" mat-stroked-button (click)=\"cancel()\">Cancel</button>\n </div>\n</form>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'configcat-save-snackbar',\n templateUrl: './save-snackbar.component.html',\n styleUrls: ['./save-snackbar.component.scss']\n})\nexport class SaveSnackbarComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<p class=\"header\">Settings saved successfully.</p>","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'configcat-concurrent-dialog',\n templateUrl: './concurrent-dialog.component.html',\n styleUrls: ['./concurrent-dialog.component.scss']\n})\nexport class ConcurrentDialogComponent implements OnInit {\n\n constructor(\n public dialogRef: MatDialogRef<ConcurrentDialogComponent>\n ) { }\n\n ngOnInit() {\n }\n\n save() {\n this.dialogRef.close({ button: 'save' });\n }\n\n discard() {\n this.dialogRef.close({ button: 'discard' });\n }\n\n}\n","<h3 mat-dialog-title>Concurrent update detected</h3>\n<p>\n Somebody updated the feature flags & settings while you were editing them.\n</p>\n<ul>\n <li>\n To discard your local changes and reload the updated values, click <strong>Discard my changes & reload</strong>\n </li>\n <li>\n To save you local values and overwrite the remote changes, click <strong>Save anyway</strong>\n </li>\n</ul>\n<p>For more info about the changes check the <a [routerLink]=\"['/auditlog']\" target=\"_blank\" rel=\"noopener noreferrer\" >audit logs</a> in a new tab.</p>\n<div mat-dialog-actions>\n <button type=\"button\" style=\"margin-right: 10px;\" mat-flat-button color=\"primary\" (click)=\"discard()\">Discard\n local changes & reload</button>\n <button type=\"button\" mat-stroked-button (click)=\"save()\">Save anyway</button>\n</div>","import { Injectable } from '@angular/core';\nimport { SettingValuesModel } from '../_models/settingValuesModel';\nimport { UntypedFormBuilder, Validators, UntypedFormGroup, UntypedFormArray } from '@angular/forms';\nimport { RolloutPercentageItemModel, RolloutRuleComparator, RolloutRuleModel, SettingType, SettingValueModel } from 'ng-configcat-publicapi';\nimport { FormHelper } from './form-helper';\n\n@Injectable({ providedIn: 'root' })\nexport class SettingListFormHelper {\n\n constructor(private formBuilder: UntypedFormBuilder) { }\n\n createSettingValuesFormGroup(settingValuesModel: SettingValuesModel) {\n const formGroup = this.formBuilder.group({\n settingValues: this.formBuilder.array(\n settingValuesModel.settingValues.map(sv => {\n return this.createSettingValueFormGroup(sv, settingValuesModel.readOnly);\n })),\n\n // Decorator\n environment: this.formBuilder.group({\n environmentId: [{ value: settingValuesModel.environment.environmentId, disabled: true }],\n name: [{ value: settingValuesModel.environment.name, disabled: true }],\n }),\n\n comparisonAttributes: [[]]\n });\n\n const rolloutRules = this.getAllRolloutRules(formGroup);\n const comparisonAttributes = this.getComparisonAttributes(rolloutRules);\n formGroup.patchValue({ comparisonAttributes: comparisonAttributes });\n return formGroup;\n }\n\n\n createSettingValueFormGroup(settingValueModel: SettingValueModel, readOnly: boolean) {\n if (!settingValueModel.setting) {\n return this.formBuilder.group({});\n }\n return this.formBuilder.group({\n settingId: [settingValueModel.setting.settingId],\n value: [\n { value: settingValueModel.value, disabled: readOnly },\n this.getValidatorsForSettingType(settingValueModel.setting.settingType)\n ],\n rolloutPercentageItems: settingValueModel.rolloutPercentageItems\n ? this.formBuilder.array(settingValueModel.rolloutPercentageItems.map(p => {\n // @ts-ignore()\n return this.createRolloutPercentageItemFormGroup(p, readOnly, settingValueModel.setting.settingType);\n }))\n : this.formBuilder.array([]), rolloutRules: settingValueModel.rolloutRules\n ? this.formBuilder.array(settingValueModel.rolloutRules.map(r => {\n // @ts-ignore()\n return this.createRolloutRuleFormGroup(r, readOnly, settingValueModel.setting.settingType);\n }))\n : this.formBuilder.array([]),\n\n updatedAt: [{ value: settingValueModel.updatedAt, disabled: true }],\n lastUpdaterUserEmail: [{ value: settingValueModel.lastUpdaterUserEmail, disabled: true }],\n lastUpdaterUserFullName: [{ value: settingValueModel.lastUpdaterUserFullName, disabled: true }],\n\n rolloutPercentageItemsSum: [{ value: 100, disabled: false }, [Validators.min(100), Validators.max(100)]],\n // Decoration\n setting: this.formBuilder.group({\n settingId: [{ value: settingValueModel.setting.settingId, disabled: true }],\n key: [{ value: settingValueModel.setting.key, disabled: true }],\n name: [{ value: settingValueModel.setting.name, disabled: true }],\n hint: [{ value: settingValueModel.setting.hint, disabled: true }],\n settingType: [{ value: settingValueModel.setting.settingType, disabled: true }],\n creatorEmail: [{ value: settingValueModel.setting.creatorEmail, disabled: true }],\n creatorFullName: [{ value: settingValueModel.setting.creatorFullName, disabled: true }],\n createdAt: [{ value: settingValueModel.setting.createdAt, disabled: true }]\n }),\n\n integrationLinks: settingValueModel.integrationLinks ? this.formBuilder.array(settingValueModel.integrationLinks.map(il => {\n return this.formBuilder.group({\n key: [{ value: il.key, disabled: true }],\n description: [{ value: il.description, disabled: true }],\n integrationLinkType: [{ value: il.integrationLinkType, disabled: true }],\n url: [{ value: il.url, disabled: true }],\n });\n })) : this.formBuilder.array([])\n });\n }\n\n createRolloutPercentageItemFormGroup(p: RolloutPercentageItemModel, readOnly: boolean, settingType: SettingType | undefined) {\n return this.formBuilder.group({\n percentage: [{ value: p.percentage, disabled: readOnly }, [Validators.required, Validators.min(0), Validators.max(100)]],\n value: [\n { value: p.value, disabled: readOnly },\n this.getValidatorsForSettingType(settingType)\n ],\n valueDisabled: [\n { value: p.value, disabled: true }, // For percentage item value\n ]\n });\n }\n\n createRolloutRuleFormGroup(r: RolloutRuleModel, readOnly: boolean, settingType: SettingType | undefined) {\n if (r.comparator) {\n return this.formBuilder.group({\n type: [{ value: 0, disabled: true }],\n comparisonAttribute: [{ value: r.comparisonAttribute, disabled: readOnly }, [Validators.required]],\n comparator: [{ value: r.comparator, disabled: readOnly }, [Validators.required]],\n comparisonValue: [{ value: r.comparisonValue, disabled: readOnly }, [Validators.required]],\n value: [\n { value: r.value, disabled: readOnly },\n this.getValidatorsForSettingType(settingType)\n ],\n });\n } else if (r.segmentComparator) {\n return this.formBuilder.group({\n type: [{ value: 1, disabled: true }],\n segmentComparator: [{ value: r.segmentComparator, disabled: readOnly }, [Validators.required]],\n segmentId: [{ value: r.segmentId, disabled: readOnly }, [Validators.required]],\n value: [\n { value: r.value, disabled: readOnly },\n this.getValidatorsForSettingType(settingType)\n ],\n });\n } else {\n throw new Error('Invalid rollout rule');\n }\n }\n\n private getValidatorsForSettingType(settingType: SettingType | undefined) {\n switch (settingType) {\n case SettingType.Int:\n return [Validators.required,\n Validators.min(-2147483648), Validators.max(2147483647), Validators.pattern('^[-+]?[0-9]\\\\d*$')];\n case SettingType.Double:\n return [Validators.required, Validators.min(-1.79769313486232E+308), Validators.max(1.79769313486232E+308)];\n case SettingType.String:\n case SettingType.Boolean:\n return [Validators.required];\n default:\n return [];\n }\n }\n\n private getAllRolloutRules(formGroup: UntypedFormGroup) {\n const settingValues = formGroup.get('settingValues') as UntypedFormArray;\n const rolloutRules = settingValues.controls.map(cv => (cv.get('rolloutRules') as UntypedFormArray).value);\n return rolloutRules.length === 0 ? rolloutRules : rolloutRules.reduce((a, b) => a.concat(b));\n }\n\n private getComparisonAttributes(rolloutRules: any[]) {\n if (rolloutRules.length > 0) {\n const currentComparisonAttributes = rolloutRules.map(r => r.comparisonAttribute);\n\n const defaultComparisonAttributes = ['Identifier', 'Email', 'Country'];\n const comparisonAttributes = currentComparisonAttributes.filter(c => defaultComparisonAttributes.indexOf(c) === -1);\n return Array.from(new Set(comparisonAttributes));\n } else {\n return [];\n }\n }\n\n getComparisonValueType(comparator: RolloutRuleComparator) {\n switch (comparator) {\n case RolloutRuleComparator.NumberEquals:\n case RolloutRuleComparator.NumberDoesNotEqual:\n case RolloutRuleComparator.NumberLess:\n case RolloutRuleComparator.NumberLessOrEquals:\n case RolloutRuleComparator.NumberGreater:\n case RolloutRuleComparator.NumberGreaterOrEquals:\n return 'number';\n default:\n return 'text';\n }\n }\n\n normalizeComparisonValue(comparator: RolloutRuleComparator | undefined, comparisonValue: any) {\n // In the case of number inputs value is a number but API expects\n // a string, so we need to make sure that it's converted to string.\n return comparator && this.getComparisonValueType(comparator) === \"number\"\n ? FormHelper.normalizeNumberStoredAsString(comparisonValue)\n : comparisonValue;\n }\n}\n","import { Component, OnInit, Inject, OnDestroy } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { UntypedFormBuilder, UntypedFormGroup, UntypedFormArray, UntypedFormControl } from '@angular/forms';\n\n@Component({\n selector: 'configcat-expand-dialog',\n templateUrl: './expand-dialog.component.html',\n styleUrls: ['./expand-dialog.component.scss']\n})\nexport class ExpandDialogComponent implements OnInit, OnDestroy {\n\n formControlSubscription!: Subscription | null;\n formGroupSubscription!: Subscription | null;\n\n formGroup!: UntypedFormGroup;\n\n constructor(public dialogRef: MatDialogRef<ExpandDialogComponent>,\n private formBuilder: UntypedFormBuilder,\n @Inject(MAT_DIALOG_DATA) public data: any) {\n }\n\n ngOnInit(): void {\n if (this.data.multiline) {\n this.buildFormGroup();\n } else {\n this.formControlSubscription = this.data.control.valueChanges.subscribe((value: any) => {\n this.data.control.setValue(value, { onlySelf: true, emitEvent: false, emitModelToViewChange: true });\n this.data.control.markAsDirty();\n }, () => { }, () => { });\n }\n }\n\n values() {\n return this.formGroup.get('values') as UntypedFormArray;\n }\n\n getValueControls() {\n return this.values().controls.map(c => c as UntypedFormControl);\n }\n\n buildFormGroup() {\n const value = this.data.control.value ? this.data.control.value : '';\n const list = value.split(',').map((v: any) => v.trim()).filter((v: any) => !!v);\n this.formGroup = this.formBuilder.group({\n values: this.formBuilder.array(list.map((v: any) => this.formBuilder.control(v)))\n });\n this.formGroupSubscription = this.formGroup.valueChanges.subscribe((formGroupValue) => {\n this.data.control.setValue(formGroupValue.values\n .filter((v: any) => !!v)\n .join(','), { onlySelf: true, emitEvent: false, emitModelToViewChange: true });\n this.data.control.updateValueAndValidity();\n this.data.control.markAsDirty();\n });\n }\n\n add() {\n (this.formGroup.controls.values as UntypedFormArray).push(this.formBuilder.control(''));\n }\n\n remove(index: any) {\n (this.formGroup.controls.values as UntypedFormArray).removeAt(index);\n }\n\n ngOnDestroy() {\n if (this.formControlSubscription) {\n this.formControlSubscription.unsubscribe();\n this.formControlSubscription = null;\n }\n\n if (this.formGroupSubscription) {\n this.formGroupSubscription.unsubscribe();\n this.formGroupSubscription = null;\n }\n }\n\n close() {\n this.dialogRef.close();\n }\n}\n","<div mat-dialog-content class=\"container\">\n\n <mat-form-field appearance=\"outline\" *ngIf=\"!data.multiline\">\n <mat-label></mat-label>\n <textarea matInput [formControl]=\"data.control\" rows=\"15\"></textarea>\n </mat-form-field>\n <div [formGroup]=\"formGroup\" *ngIf=\"data.multiline\">\n <div *ngFor=\"let valueControl of getValueControls(); let i = index;\"\n class=\"value-field\">\n <mat-form-field appearance=\"outline\">\n <input matInput [formControl]=\"valueControl\" rows=\"15\" />\n </mat-form-field>\n <button (click)=\"remove(i)\" mat-icon-button type=\"button\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n </div>\n <button (click)=\"add()\" mat-icon-button type=\"button\">\n <mat-icon>add</mat-icon>\n </button>\n </div>\n</div>\n<div mat-dialog-actions>\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"close()\">Done</button>\n</div>","import { Directive, HostListener } from '@angular/core';\n\n/**\n * Makes sure that values entered into HTML input fields are displayed in the correct format,\n * where correct means normalized (e.g. `'.10'` --> `'0.1'`) and corresponding to the locale setting.\n * \n * The format is adjusted on the blur event. Only the format of number inputs is adjusted currently.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[inputDisplayNormalizer]'\n})\nexport class InputDisplayNormalizerDirective {\n constructor() { }\n\n @HostListener('blur', ['$event'])\n onChange($event: any) {\n const target = $event.target;\n if (target.type === 'number') {\n let value = target.value;\n value = value.trim() !== '' ? Number(value) : NaN;\n if (isFinite(value)) {\n // The string returned by the `value` property and the string displayed in the input field are not necessarily equal.\n // HACK: When the returned and the displayed value differs only in the decimal separator,\n // Chrome won't update the displayed value unless the value is changed first...\n target.value = '';\n target.value = value;\n }\n }\n }\n}","import { Component, Input, forwardRef } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ExpandDialogComponent } from '../../../dialogs/expand-dialog/expand-dialog.component';\nimport { SettingModel, SettingType } from 'ng-configcat-publicapi';\nimport { FormHelper } from '../../../_services/form-helper';\n\n@Component({\n selector: 'configcat-value',\n templateUrl: './value.component.html',\n styleUrls: [\n './slider.scss',\n './value.component.scss'\n ]\n})\nexport class ValueComponent {\n\n @Input() valueFormControl!: UntypedFormControl;\n\n @Input() setting!: SettingModel;\n\n SettingType = SettingType;\n\n constructor(private dialog: MatDialog) {\n }\n\n popOut() {\n this.dialog.open(ExpandDialogComponent, {\n width: '640px',\n data: { control: this.valueFormControl }\n });\n }\n\n formatDecimalNumber(value: number) {\n return FormHelper.formatNumberForDisplay(value);\n }\n}\n","<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","import { Component, Input } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormArray, UntypedFormControl } from '@angular/forms';\nimport { SettingType } from 'ng-configcat-publicapi';\n\n@Component({\n selector: 'configcat-rollout-percentage-items',\n templateUrl: './rollout-percentage-items.component.html',\n styleUrls: ['./rollout-percentage-items.component.scss']\n})\nexport class RolloutPercentageItemsComponent {\n\n @Input() formGroup!: UntypedFormGroup;\n @Input() readOnly = false;\n SettingType = SettingType;\n\n\n setting() {\n return this.formGroup.get('setting')?.value;\n }\n\n rolloutRules() {\n return this.formGroup.get('rolloutRules') as UntypedFormArray;\n }\n\n rolloutPercentageItems() {\n return this.formGroup.get('rolloutPercentageItems') as UntypedFormArray;\n }\n\n rolloutPercentageItemsSum() {\n return this.formGroup.get('rolloutPercentageItemsSum') as UntypedFormControl;\n }\n\n value(rolloutPercentageItem: UntypedFormGroup): UntypedFormControl {\n return this.setting().settingType === SettingType.Boolean ?\n rolloutPercentageItem.get('valueDisabled') as UntypedFormControl :\n rolloutPercentageItem.get('value') as UntypedFormControl;\n }\n\n constructor() { }\n\n percentageChanged(index: number) {\n if (this.rolloutPercentageItems().controls[index].value.percentage < 0) {\n (this.rolloutPercentageItems().controls[index] as UntypedFormGroup).controls.percentage.setValue(0);\n }\n if (this.rolloutPercentageItems().controls[index].value.percentage > 100) {\n (this.rolloutPercentageItems().controls[index] as UntypedFormGroup).controls.percentage.setValue(100);\n }\n\n if (this.rolloutPercentageItems().controls.length === 2) {\n (this.rolloutPercentageItems().controls[1 - index] as UntypedFormGroup).controls.percentage\n .setValue(100 - this.rolloutPercentageItems().controls[index].value.percentage);\n }\n\n this.updateSum();\n }\n\n updateSum() {\n if (this.rolloutPercentageItems().controls.length === 0) {\n this.rolloutPercentageItemsSum().setValue(100);\n } else {\n this.rolloutPercentageItemsSum().setValue(\n this.rolloutPercentageItems().controls.map(v => v.value.percentage)\n .reduce((a, b) => a + b)\n );\n }\n }\n\n removeRolloutPercentageItem(index: number) {\n this.rolloutPercentageItems().removeAt(index);\n this.rolloutPercentageItems().markAsDirty();\n this.updateSum();\n }\n\n removeAll() {\n this.rolloutPercentageItems().clear();\n this.rolloutPercentageItems().markAsDirty();\n this.updateSum();\n }\n\n getRolloutPercentageItemFormGroups() {\n return this.rolloutPercentageItems()?.controls?.map(c => c as UntypedFormGroup);\n }\n\n getPercentageFormControl(rolloutPercentageItem: any) {\n return rolloutPercentageItem.controls.percentage as UntypedFormControl;\n }\n}\n","<div class=\"percentage-wrapper\" [formGroup]=\"formGroup\">\n\n <div class=\"if\" *ngIf=\"rolloutRules().controls.length > 0\">\n <mat-chip-list>\n <mat-chip class=\"chip\">ELSE IF</mat-chip>\n </mat-chip-list>\n </div>\n <div class=\"grow\">\n <div class=\"percentage-row flex\"\n *ngFor=\"let rolloutPercentageItem of getRolloutPercentageItemFormGroups(); let i = index\">\n <div class=\"flex\">\n <input type=\"number\" [formControl]=\"getPercentageFormControl(rolloutPercentageItem)\"\n (input)=\"percentageChanged(i)\">%\n <span class=\"users\">of <a href=\"https://configcat.com/docs/advanced/user-object\" target=\"_blank\"\n rel=\"noopener noreferrer\">users</a>\n </span>\n </div>\n\n <div class=\"delete-option\" matTooltip=\"Remove this % option\"\n *ngIf=\"!readOnly && rolloutPercentageItems().controls.length > 2\"\n (click)=\"removeRolloutPercentageItem(i)\">\n <mat-icon>cancel</mat-icon>\n </div>\n\n <span matTooltip=\"The sum of percentages must be equal to 100.\" matTooltipPosition=\"above\"\n *ngIf=\"(i === rolloutPercentageItems().controls.length -1) && (rolloutPercentageItemsSum().invalid)\">\n <mat-icon color=\"warn\">\n error_outline\n </mat-icon>\n </span>\n\n <div class=\"value flex\">\n <span class=\"value-name\" *ngIf=\"setting().settingType !== SettingType.Boolean\">Served value:</span>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value(rolloutPercentageItem)\"\n [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"delete\" matTooltip=\"Remove % options\" (click)=\"removeAll()\" *ngIf=\"!readOnly\">\n <mat-icon>cancel</mat-icon>\n </div>\n </div>\n </div>\n</div>","import { Component, Input } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl, UntypedFormArray, Validators } from '@angular/forms';\nimport { moveItemInArray, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { valid } from 'semver';\nimport { ExpandDialogComponent } from '../../../dialogs/expand-dialog/expand-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SettingType, RolloutRuleComparator, SegmentListModel, SegmentComparator } from 'ng-configcat-publicapi';\nimport { SettingListFormHelper } from '../../../_services/setting-list-form-helper';\nimport { FormHelper } from '../../../_services/form-helper';\n\n@Component({\n selector: 'configcat-rollout-rules',\n templateUrl: './rollout-rules.component.html',\n styleUrls: ['./rollout-rules.component.scss']\n})\nexport class RolloutRulesComponent {\n\n @Input() formGroup!: UntypedFormGroup;\n @Input() readOnly = false;\n @Input() segments!: SegmentListModel[];\n\n SettingType = SettingType;\n\n defaultComparisonAttributes = ['Identifier', 'Email', 'Country'];\n\n rolloutRuleComparators = [\n { value: RolloutRuleComparator.IsOneOf, label: 'IS ONE OF (cleartext)' },\n { value: RolloutRuleComparator.IsNotOneOf, label: 'IS NOT ONE OF (cleartext)' },\n { value: RolloutRuleComparator.Contains, label: 'CONTAINS (cleartext)' },\n { value: RolloutRuleComparator.DoesNotContain, label: 'DOES NOT CONTAIN (cleartext)' },\n\n { value: RolloutRuleComparator.SemVerIsOneOf, label: 'IS ONE OF (SemVer)' },\n { value: RolloutRuleComparator.SemVerIsNotOneOf, label: 'IS NOT ONE OF (SemVer)' },\n { value: RolloutRuleComparator.SemVerLess, label: '< (SemVer)' },\n { value: RolloutRuleComparator.SemVerLessOrEquals, label: '<= (SemVer)' },\n { value: RolloutRuleComparator.SemVerGreater, label: '> (SemVer)' },\n { value: RolloutRuleComparator.SemVerGreaterOrEquals, label: '>= (SemVer)' },\n\n { value: RolloutRuleComparator.NumberEquals, label: '= (Number)' },\n { value: RolloutRuleComparator.NumberDoesNotEqual, label: '!= (Number)' },\n { value: RolloutRuleComparator.NumberLess, label: '< (Number)' },\n { value: RolloutRuleComparator.NumberLessOrEquals, label: '<= (Number)' },\n { value: RolloutRuleComparator.NumberGreater, label: '> (Number)' },\n { value: RolloutRuleComparator.NumberGreaterOrEquals, label: '>= (Number)' },\n\n { value: RolloutRuleComparator.SensitiveIsOneOf, label: 'IS ONE OF (hashed)' },\n { value: RolloutRuleComparator.SensitiveIsNotOneOf, label: 'IS NOT ONE OF (hashed)' },\n ];\n\n segmentComparators = [\n { value: SegmentComparator.IsIn, label: 'IS IN SEGMENT' },\n { value: SegmentComparator.IsNotIn, label: 'IS NOT IN SEGMENT' },\n ];\n\n constructor(\n private dialog: MatDialog,\n private settingListFormHelper: SettingListFormHelper) { }\n\n setting() {\n return this.formGroup.get('setting')?.value;\n }\n\n rolloutRules() {\n return this.formGroup.get('rolloutRules') as UntypedFormArray;\n }\n\n comparisonAttributes() {\n return this.formGroup.root.get('comparisonAttributes')?.value;\n }\n\n removeRule(index: any) {\n this.rolloutRules().removeAt(index);\n this.rolloutRules().markAsDirty();\n }\n\n onDrop(event: any) {\n const rolloutRules = this.rolloutRules().controls;\n moveItemInArray(rolloutRules, event.previousIndex, event.currentIndex);\n this.formGroup.markAsDirty();\n }\n\n attributeChanged(event: any, comparisonAttribute: UntypedFormControl) {\n if (this.defaultComparisonAttributes.indexOf(event.value) !== -1) {\n if (comparisonAttribute.value !== event.value) {\n comparisonAttribute.setValue(event.value);\n this.formGroup.markAsDirty();\n }\n } else {\n if (comparisonAttribute.value !== '') {\n comparisonAttribute.setValue('');\n this.formGroup.markAsDirty();\n }\n }\n }\n\n getPlaceHolder(rolloutRule: any) {\n if (!rolloutRule.controls.comparisonAttribute.value) {\n return '';\n }\n\n switch (rolloutRule.controls.comparator.value) {\n case RolloutRuleComparator.IsOneOf:\n case RolloutRuleComparator.IsNotOneOf:\n case RolloutRuleComparator.SensitiveIsOneOf:\n case RolloutRuleComparator.SensitiveIsNotOneOf:\n switch (rolloutRule.controls.comparisonAttribute.value.toLowerCase()) {\n case 'identifier':\n return 'e.g: user_id1, user_id2, user_id3';\n case 'email':\n return 'e.g: jane@example.com, john@example.com';\n case 'country':\n return 'e.g: France, Brazil';\n default:\n return 'e.g: value1, value2, value3';\n }\n case RolloutRuleComparator.Contains:\n case RolloutRuleComparator.DoesNotContain:\n switch (rolloutRule.controls.comparisonAttribute.value.toLowerCase()) {\n case 'identifier':\n return 'part-of-id';\n case 'email':\n return 'e.g: @example.com';\n case 'country':\n return 'e.g: United';\n default:\n return 'e.g: any-part-of-your-value-string';\n }\n case RolloutRuleComparator.SemVerIsOneOf:\n case RolloutRuleComparator.SemVerIsNotOneOf:\n return 'e.g: 1.0.0, 2.0.1';\n case RolloutRuleComparator.SemVerLessOrEquals:\n case RolloutRuleComparator.SemVerLess:\n case RolloutRuleComparator.SemVerGreater:\n case RolloutRuleComparator.SemVerGreaterOrEquals:\n return 'e.g: 1.0.0';\n case RolloutRuleComparator.NumberEquals:\n case RolloutRuleComparator.NumberDoesNotEqual:\n case RolloutRuleComparator.NumberLess:\n case RolloutRuleComparator.NumberLessOrEquals:\n case RolloutRuleComparator.NumberGreater:\n case RolloutRuleComparator.NumberGreaterOrEquals:\n return 'e.g: 42';\n }\n\n return '';\n }\n\n getComparisonValueType(rolloutRule: any) {\n return this.settingListFormHelper.getComparisonValueType(rolloutRule.controls.comparator.value);\n }\n\n getInfoClass(rolloutRule: any) {\n if (!rolloutRule.controls.comparisonAttribute.value) {\n return 'info';\n }\n\n switch (rolloutRule.controls.comparator.value) {\n case RolloutRuleComparator.IsOneOf:\n case RolloutRuleComparator.IsNotOneOf:\n case RolloutRuleComparator.Contains:\n case RolloutRuleComparator.DoesNotContain:\n return 'warn';\n default:\n return 'info';\n }\n }\n\n getInfoTooltip(rolloutRule: any) {\n if (!rolloutRule.controls.comparisonAttribute.value) {\n return 'Learn more about comparators';\n }\n\n switch (rolloutRule.controls.comparator.value) {\n case RolloutRuleComparator.IsOneOf:\n case RolloutRuleComparator.IsNotOneOf:\n case RolloutRuleComparator.Contains:\n case RolloutRuleComparator.DoesNotContain:\n return 'Consider using sensitive text comparators. Click to learn more.';\n default:\n return 'Click to learn more about comparators';\n }\n }\n\n comparatorChanged(rolloutRule: any) {\n let validators: any[] = [];\n\n switch (rolloutRule.controls.comparator.value) {\n case RolloutRuleComparator.IsOneOf:\n case RolloutRuleComparator.IsNotOneOf:\n case RolloutRuleComparator.SensitiveIsOneOf:\n case RolloutRuleComparator.SensitiveIsNotOneOf:\n case RolloutRuleComparator.Contains:\n case RolloutRuleComparator.DoesNotContain:\n validators = [Validators.required, Validators.maxLength(65535)];\n break;\n case RolloutRuleComparator.SemVerIsOneOf:\n case RolloutRuleComparator.SemVerIsNotOneOf:\n validators = [Validators.required, this.validateSemVerList];\n break;\n case RolloutRuleComparator.SemVerLessOrEquals:\n case RolloutRuleComparator.SemVerLess:\n case RolloutRuleComparator.SemVerGreater:\n case RolloutRuleComparator.SemVerGreaterOrEquals:\n validators = [Validators.required, this.validateSemVer];\n break;\n case RolloutRuleComparator.NumberEquals:\n case RolloutRuleComparator.NumberDoesNotEqual:\n case RolloutRuleComparator.NumberLess:\n case RolloutRuleComparator.NumberLessOrEquals:\n case RolloutRuleComparator.NumberGreater:\n case RolloutRuleComparator.NumberGreaterOrEquals:\n validators = [Validators.required, Validators.min(-1.79769313486232E+308), Validators.max(1.79769313486232E+308)];\n break;\n }\n\n rolloutRule.controls.comparisonValue.setValidators(validators);\n if (this.getComparisonValueType(rolloutRule) === \"number\") {\n const oldValue = rolloutRule.controls.comparisonValue.value;\n rolloutRule.controls.comparisonValue.setValue(FormHelper.normalizeNumberStoredAsString(rolloutRule.controls.comparisonValue.value));\n if (oldValue !== rolloutRule.controls.comparisonValue.value) {\n rolloutRule.controls.comparisonValue.markAsTouched();\n }\n }\n rolloutRule.controls.comparisonValue.updateValueAndValidity();\n }\n\n isListType(rolloutRule: any) {\n switch (rolloutRule.controls.comparator.value) {\n case RolloutRuleComparator.IsOneOf:\n case RolloutRuleComparator.IsNotOneOf:\n case RolloutRuleComparator.SensitiveIsOneOf:\n case RolloutRuleComparator.SensitiveIsNotOneOf:\n case RolloutRuleComparator.SemVerIsOneOf:\n case RolloutRuleComparator.SemVerIsNotOneOf:\n return true;\n default:\n return false;\n }\n }\n\n validateSemVer(c: UntypedFormControl) {\n\n if (valid(c.value) === null) {\n return {\n validateSemVer: {\n valid: false\n }\n };\n }\n\n return null;\n }\n\n validateSemVerList(c: UntypedFormControl) {\n if (!c.value) {\n return {\n validateSemVerList: {\n valid: false\n }\n };\n }\n\n const semvers = c.value.split(',').map((s: any) => s.trim());\n if (semvers.find((s: any) => s && s !== '' && valid(s) === null)) {\n return {\n validateSemVerList: {\n valid: false\n }\n };\n }\n\n return null;\n }\n\n popOut(rolloutRule: any) {\n this.dialog.open(ExpandDialogComponent, {\n width: '640px',\n data: {\n control: rolloutRule.controls.comparisonValue,\n multiline: this.isListType(rolloutRule)\n }\n });\n }\n\n\n trackByIndex(index: number): any {\n return index;\n }\n\n getRolloutRuleValueFormControl(rolloutRule: any) {\n return rolloutRule.controls.value as UntypedFormControl;\n }\n\n getRolloutRuleComparisonValueFormControl(rolloutRule: any) {\n return rolloutRule.controls.comparisonValue as UntypedFormControl;\n }\n\n getRolloutRuleComparisonAttributeFormControl(rolloutRule: any) {\n return rolloutRule.controls.comparisonAttribute as UntypedFormControl;\n }\n\n getRolloutRuleTypeFormControl(rolloutRule: any) {\n return rolloutRule.controls.type as UntypedFormControl;\n }\n\n getRolloutRuleComparatorFormControl(rolloutRule: any) {\n return rolloutRule.controls.comparator as UntypedFormControl;\n }\n\n getRolloutRuleSegmentComparatorFormControl(rolloutRule: any) {\n return rolloutRule.controls.segmentComparator as UntypedFormControl;\n }\n\n getRolloutRuleSegmentIdFormControl(rolloutRule: any) {\n return rolloutRule.controls.segmentId as UntypedFormControl;\n }\n}\n","<div [formGroup]=\"formGroup\">\n <div cdkDropList (cdkDropListDropped)=\"onDrop($event)\" [cdkDropListDisabled]=\"readOnly\"\n [cdkDropListData]=\"rolloutRules().controls\">\n <div *ngFor=\"let rolloutRule of rolloutRules().controls; trackBy: trackByIndex; let i = index\" cdkDrag>\n <div class=\"targeting-row\">\n <div class=\"fields flex\" *ngIf=\"getRolloutRuleTypeFormControl(rolloutRule).value === 0\">\n <div class=\"drag-handle\" cdkDragHandle matTooltip=\"Drag here to reorder\" matTooltipPosition=\"above\"\n *ngIf=\"!readOnly\">\n <mat-icon>drag_indicator</mat-icon>\n </div>\n <div class=\"if\">\n <mat-chip-list [class.spacing]=\"i === 0\">\n <mat-chip class=\"chip\">{{ i === 0 ? 'IF' : 'ELSE IF' }}</mat-chip>\n </mat-chip-list>\n <a href=\"https://configcat.com/docs/advanced/user-object\" target=\"_blank\"\n rel=\"noopener noreferrer\">user's</a>\n </div>\n\n <select class=\"custom-select attribute-select\" matTooltip=\"Comparison attribute\"\n matTooltipPosition=\"above\"\n (change)=\"attributeChanged($event.target, getRolloutRuleComparisonAttributeFormControl(rolloutRule))\">\n <option *ngFor=\"let comparisonAttribute of defaultComparisonAttributes\"\n [selected]=\"comparisonAttribute === getRolloutRuleComparisonAttributeFormControl(rolloutRule).value\">\n {{comparisonAttribute}}</option>\n <option\n [selected]=\"defaultComparisonAttributes.indexOf(getRolloutRuleComparisonAttributeFormControl(rolloutRule).value) === -1\">\n Custom\n </option>\n </select>\n\n\n <span class=\"attribute-span\" matTooltip=\"Custom user attribute\" matTooltipPosition=\"above\"\n [hidden]=\"defaultComparisonAttributes.indexOf(getRolloutRuleComparisonAttributeFormControl(rolloutRule).value) !== -1\">\n <span class=\"attribute-error\"\n *ngIf=\"getRolloutRuleComparisonAttributeFormControl(rolloutRule).invalid\">*</span>\n <input\n [ngClass]=\"{'invalid': getRolloutRuleComparisonAttributeFormControl(rolloutRule).invalid}\"\n type=\"text\" matInput [matAutocomplete]=\"auto\"\n [formControl]=\"getRolloutRuleComparisonAttributeFormControl(rolloutRule)\" class=\"attribute\"\n placeholder=\"e.g. Eye color\">\n </span>\n\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of comparisonAttributes()\" [value]=\"option\">\n {{option}}\n </mat-option>\n </mat-autocomplete>\n\n <div class=\"select-wrapper\">\n <select class=\"custom-select\" [formControl]=\"getRolloutRuleComparatorFormControl(rolloutRule)\"\n matTooltip=\"Comparator\" matTooltipPosition=\"above\"\n (change)=\"comparatorChanged(rolloutRule)\">\n <optgroup label=\"CONFIDENTIAL TEXT\">\n <option *ngFor=\"let comparator of rolloutRuleComparators.slice(16, 18)\"\n [ngValue]=\"comparator.value\">\n {{comparator.label}}\n </option>\n </optgroup>\n <optgroup label=\"TEXT\">\n <option *ngFor=\"let comparator of rolloutRuleComparators.slice(0, 4)\"\n [ngValue]=\"comparator.value\">\n {{comparator.label}}\n </option>\n </optgroup>\n <optgroup label=\"SEMANTIC VERSION\">\n <option *ngFor=\"let comparator of rolloutRuleComparators.slice(4, 10)\"\n [ngValue]=\"comparator.value\">\n {{comparator.label}}\n </option>\n </optgroup>\n <optgroup label=\"NUMBER\">\n <option *ngFor=\"let comparator of rolloutRuleComparators.slice(10, 16)\"\n [ngValue]=\"comparator.value\">\n {{comparator.label}}\n </option>\n </optgroup>\n </select>\n <div [class]=\"getInfoClass(rolloutRule)\" [matTooltip]=\"getInfoTooltip(rolloutRule)\">\n <a href=\"https://configcat.com/docs/advanced/targeting/#comparator\" target=\"_blank\"\n rel=\"noopener noreferrer\">\n <mat-icon>info</mat-icon>\n </a>\n </div>\n </div>\n\n <div class=\"comparison-value\" matTooltip=\"Comparison value\" matTooltipPosition=\"above\">\n <span class=\"error\"\n *ngIf=\"getRolloutRuleComparisonValueFormControl(rolloutRule).invalid\">*</span>\n\n <input [ngClass]=\"{'invalid': getRolloutRuleComparisonValueFormControl(rolloutRule).invalid}\"\n [formControl]=\"getRolloutRuleComparisonValueFormControl(rolloutRule)\"\n [type]=\"getComparisonValueType(rolloutRule)\" [placeholder]=\"getPlaceHolder(rolloutRule)\"\n inputDisplayNormalizer>\n <div class=\"expand\" matTooltip=\"Pop-out Editor\" (click)=\"popOut(rolloutRule)\"\n *ngIf=\"getComparisonValueType(rolloutRule)==='text'\">\n <mat-icon>height</mat-icon>\n </div>\n </div>\n\n <div class=\"delete\" matTooltip=\"Remove targeting rule\" *ngIf=\"!readOnly\" (click)=\"removeRule(i)\">\n <mat-icon>cancel</mat-icon>\n </div>\n </div>\n\n <div class=\"fields flex\" *ngIf=\"getRolloutRuleTypeFormControl(rolloutRule).value === 1\">\n <div class=\"drag-handle\" cdkDragHandle matTooltip=\"Drag here to reorder\" matTooltipPosition=\"above\"\n *ngIf=\"!readOnly\">\n <mat-icon>drag_indicator</mat-icon>\n </div>\n <div class=\"if\">\n <mat-chip-list [class.spacing]=\"i === 0\">\n <mat-chip class=\"chip\">{{ i === 0 ? 'IF' : 'ELSE IF' }}</mat-chip>\n </mat-chip-list>\n <a href=\"https://configcat.com/docs/advanced/user-object\" target=\"_blank\"\n rel=\"noopener noreferrer\">user</a>\n </div>\n\n\n <div class=\"select-wrapper\">\n <select class=\"custom-select segment-comparator\"\n [formControl]=\"getRolloutRuleSegmentComparatorFormControl(rolloutRule)\"\n matTooltip=\"Segment comparator\" matTooltipPosition=\"above\">\n <option *ngFor=\"let comparator of segmentComparators\" [ngValue]=\"comparator.value\">\n {{comparator.label}}\n </option>\n </select>\n </div>\n\n <div class=\"select-wrapper\">\n <span class=\"attribute-error\"\n *ngIf=\"getRolloutRuleSegmentIdFormControl(rolloutRule).invalid\">*</span>\n <select class=\"custom-select segment-select\"\n [formControl]=\"getRolloutRuleSegmentIdFormControl(rolloutRule)\" matTooltip=\"Segment\"\n matTooltipPosition=\"above\"\n [ngClass]=\"{'invalid': getRolloutRuleSegmentIdFormControl(rolloutRule).invalid}\">\n <option *ngFor=\"let segment of segments\" [ngValue]=\"segment.segmentId\">\n {{segment.name}}\n </option>\n </select>\n </div>\n\n\n <div class=\"delete\" matTooltip=\"Remove targeting rule\" *ngIf=\"!readOnly\" (click)=\"removeRule(i)\">\n <mat-icon>cancel</mat-icon>\n </div>\n </div>\n\n\n <div class=\"value flex\">\n <div class=\"serve\" *ngIf=\"setting().settingType !== SettingType.Boolean\">\n <mat-chip-list>\n <mat-chip class=\"chip\">Serve:</mat-chip>\n </mat-chip-list>\n </div>\n\n <configcat-value class=\"served-value\"\n [valueFormControl]=\"getRolloutRuleValueFormControl(rolloutRule)\" [setting]=\"setting()\">\n </configcat-value>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormArray, UntypedFormControl } from '@angular/forms';\nimport { RolloutPercentageItemModel, RolloutRuleComparator, RolloutRuleModel, SegmentComparator, SegmentListModel, SettingType } from 'ng-configcat-publicapi';\nimport { SettingListFormHelper } from '../../_services/setting-list-form-helper';\n\n@Component({\n selector: 'setting',\n templateUrl: './setting.component.html',\n styleUrls: ['./setting.component.scss']\n})\nexport class SettingComponent implements OnInit {\n\n @Input() dashboardBasePath = 'https://app.configcat.com';\n @Input() productId!: string;\n @Input() environmentId!: string;\n @Input() configId!: string;\n\n @Input() formGroup!: UntypedFormGroup;\n @Input() readOnly = false;\n @Input() canEditSetting = false;\n @Input() canDeleteSetting = false;\n @Input() deleteSettingText = 'Delete setting';\n @Input() showEnvironmentName = false;\n @Input() segments!: SegmentListModel[];\n\n @Output() editSettingRequested = new EventEmitter();\n @Output() deleteSettingRequested = new EventEmitter();\n\n rulesBeingRendered = false;\n\n SettingType = SettingType;\n\n constructor(private formHelper: SettingListFormHelper,\n private cdRef: ChangeDetectorRef) { }\n\n ngOnInit() { }\n\n environment() {\n return this.formGroup.root.get('environment')?.value;\n }\n\n setting() {\n return this.formGroup.get('setting')?.value;\n }\n\n integrationLinks() {\n return this.formGroup.get('integrationLinks') as UntypedFormArray;\n }\n\n rolloutRules() {\n return this.formGroup.get('rolloutRules') as UntypedFormArray;\n }\n\n rolloutPercentageItems() {\n return this.formGroup.get('rolloutPercentageItems') as UntypedFormArray;\n }\n\n value() {\n return this.formGroup.get('value') as UntypedFormControl;\n }\n\n addRolloutRule() {\n this.rolloutRules().push(this.formHelper.createRolloutRuleFormGroup(\n <RolloutRuleModel>{\n comparisonAttribute: 'Identifier',\n comparator: RolloutRuleComparator.SensitiveIsOneOf,\n comparisonValue: '',\n value: this.setting().settingType === SettingType.Boolean ? false as unknown : null\n },\n this.readOnly, this.setting().settingType));\n this.rolloutRules().markAsDirty();\n }\n\n addSegmentRolloutRule() {\n this.rolloutRules().push(this.formHelper.createRolloutRuleFormGroup(\n <RolloutRuleModel>{\n segmentComparator: SegmentComparator.IsIn,\n value: this.setting().settingType === SettingType.Boolean ? false as unknown : null\n },\n this.readOnly, this.setting().settingType));\n this.rolloutRules().markAsDirty();\n }\n\n removeRolloutRules() {\n this.rolloutRules().clear();\n this.rolloutRules().markAsDirty();\n }\n\n addRolloutPercentageItem() {\n\n if (this.rolloutPercentageItems().length === 0) {\n switch (this.setting().settingType) {\n case SettingType.Boolean:\n this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup(\n <RolloutPercentageItemModel>{\n percentage: 0,\n value: true as unknown\n },\n this.readOnly, this.setting().settingType));\n this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup(\n <RolloutPercentageItemModel>{\n percentage: 100,\n value: false as unknown\n },\n this.readOnly, this.setting().settingType));\n break;\n\n case SettingType.String:\n case SettingType.Int:\n case SettingType.Double:\n for (let i = 0; i < 4; i++) {\n this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup(\n <RolloutPercentageItemModel>{\n percentage: 25,\n value: null\n },\n this.readOnly, this.setting().settingType));\n }\n\n break;\n }\n } else if (this.setting().settingType !== SettingType.Boolean) {\n this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup(\n <RolloutPercentageItemModel>{\n percentage: 0,\n value: null\n },\n this.readOnly, this.setting().settingType));\n }\n\n this.rolloutPercentageItems().markAsDirty();\n }\n\n removeRolloutPercentageItems() {\n this.rolloutPercentageItems().clear();\n this.rolloutPercentageItems().markAsDirty();\n }\n\n editSetting() {\n this.editSettingRequested.emit({ setting: this.setting() });\n }\n\n deleteSetting() {\n this.deleteSettingRequested.emit({ setting: this.setting() });\n }\n\n getDashboardUrl() {\n return this.dashboardBasePath + '/' + this.productId + '/' + this.configId + '/' + this.environmentId + '?settingId=' + this.setting().settingId;\n }\n}\n","<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 class=\"edit\" matTooltip=\"Edit name and description\" (click)=\"editSetting()\" *ngIf=\"canEditSetting\"\n data-robot=\"renameSetting\">\n <mat-icon>edit</mat-icon>\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-list>\n <mat-chip class=\"chip\">To all other users, serve:</mat-chip>\n </mat-chip-list>\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-list>\n <mat-chip class=\"chip\">To unidentified users, serve:</mat-chip>\n </mat-chip-list>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length === 0\">\n <mat-chip-list>\n <mat-chip class=\"chip\">To all users, serve:</mat-chip>\n </mat-chip-list>\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>","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, OnChanges } from '@angular/core';\nimport { SettingValuesModel, UpdateSettingValuesModel } from '../_models';\nimport { UntypedFormArray, UntypedFormGroup } from '@angular/forms';\nimport { forkJoin, Observable, Subscription } from 'rxjs';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ReasonDialogComponent } from '../dialogs/reason-dialog/reason-dialog.component';\nimport { SaveSnackbarComponent } from '../dialogs/save-snackbar/save-snackbar.component';\nimport { ConcurrentDialogComponent } from '../dialogs/concurrent-dialog/concurrent-dialog.component';\nimport { SettingListFormHelper } from '../_services/setting-list-form-helper';\nimport { RolloutPercentageItemModel, RolloutRuleModel, SegmentListModel, UpdateSettingValueModel } from 'ng-configcat-publicapi';\nimport { FormHelper } from '../_services';\n\n@Component({\n selector: 'configcat-setting-list',\n templateUrl: './setting-list.component.html',\n styleUrls: ['./setting-list.component.scss']\n})\nexport class SettingListComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input() productId!: string;\n @Input() environmentId!: string;\n @Input() configId!: string;\n @Input() dashboardBasePath = 'https://app.configcat.com';\n\n @Input() canEditSetting = false;\n @Input() canDeleteSetting = false;\n\n @Input() onSave!: (value: UpdateSettingValuesModel) => Observable<SettingValuesModel>;\n @Input() loadSettingValues!: () => Observable<SettingValuesModel>;\n @Input() loadSegments!: () => Observable<SegmentListModel[]>;\n @Input() deleteSettingText = 'Delete setting';\n @Input() showEnvironmentName = false;\n\n @Output() editSettingRequested = new EventEmitter();\n @Output() deleteSettingRequested = new EventEmitter();\n @Output() formValuesChanged = new EventEmitter();\n\n formValuesChangedSubscription!: Subscription | null;\n\n loading = true;\n\n settingValues!: SettingValuesModel;\n segments!: SegmentListModel[];\n formGroup!: UntypedFormGroup;\n\n submitting = false;\n showRevertQuestion = false;\n showFeedBackMessage = false;\n readOnly = false;\n\n constructor(private formHelper: SettingListFormHelper,\n private snackBar: MatSnackBar,\n private dialog: MatDialog) { }\n\n ngOnInit(): void {\n this.reloadSettingValues();\n }\n\n ngOnChanges(): void {\n this.reloadSettingValues();\n }\n\n ngOnDestroy() {\n if (this.formValuesChangedSubscription) {\n this.formValuesChangedSubscription.unsubscribe();\n this.formValuesChangedSubscription = null;\n }\n }\n\n reloadSettingValues() {\n this.showFeedBackMessage = false;\n this.loading = true;\n forkJoin({\n segments: this.loadSegments(),\n settingValues: this.loadSettingValues()\n }).subscribe(result => {\n this.readOnly = result.settingValues.readOnly;\n this.settingValues = result.settingValues;\n this.segments = result.segments;\n this.createFormGroup();\n this.loading = false;\n },\n error => {\n this.snackBar.open('Ooops. We could not load your Feature Flags and Settings. Please try again or contact us.',\n 'Dismiss', { duration: 60000, panelClass: 'red-snackbar' });\n });\n }\n\n createFormGroup() {\n this.formGroup = this.formHelper.createSettingValuesFormGroup(this.settingValues);\n this.formValuesChangedSubscription = this.formGroup.valueChanges.subscribe(() => {\n this.formValuesChanged.emit();\n });\n }\n\n settingValuesFormArray() {\n return this.formGroup.get('settingValues') as UntypedFormArray;\n }\n\n getSettingValueFormGroups() {\n return this.settingValuesFormArray().controls.map(c => c as UntypedFormGroup);\n }\n\n private buildUpdateSettingValuesModel(settingValuesVM: UpdateSettingValueModel[]) {\n return settingValuesVM.map(settingValueVM => {\n return <UpdateSettingValueModel>\n {\n rolloutRules: settingValueVM.rolloutRules?.map(rolloutRuleVM =>\n <RolloutRuleModel>{\n comparisonAttribute: rolloutRuleVM.comparisonAttribute,\n comparator: rolloutRuleVM.comparator,\n comparisonValue: this.formHelper.normalizeComparisonValue(rolloutRuleVM.comparator, rolloutRuleVM.comparisonValue),\n segmentComparator: rolloutRuleVM.segmentComparator,\n segmentId: rolloutRuleVM.segmentId,\n value: rolloutRuleVM.value\n }),\n rolloutPercentageItems: settingValueVM.rolloutPercentageItems?.map(rolloutPercentageItemVM =>\n <RolloutPercentageItemModel>{\n percentage: rolloutPercentageItemVM.percentage,\n value: rolloutPercentageItemVM.value\n }),\n value: settingValueVM.value\n };\n });\n }\n\n submit() {\n if (!this.formGroup || !this.formGroup.valid) {\n this.showFeedBackMessage = true;\n this.formGroup.markAsTouched();\n return;\n }\n\n this.showFeedBackMessage = false;\n this.submitting = true;\n\n const updateSettingValuesModel = <UpdateSettingValuesModel>{\n settingValues: this.buildUpdateSettingValuesModel(this.formGroup.controls.settingValues.value),\n knownLastUpdatedAt: this.settingValues.lastUpdatedAt,\n forced: false\n };\n\n if (this.settingValues.reasonRequired) {\n const dialogRef = this.dialog.open(ReasonDialogComponent, {\n width: '450px'\n });\n dialogRef.afterClosed()\n .subscribe(result => {\n if (result && result.button === 'save' && result.reason) {\n\n updateSettingValuesModel.reason = result.reason;\n this.updateSettingValues(updateSettingValuesModel);\n } else {\n this.submitting = false;\n }\n });\n return;\n }\n\n this.updateSettingValues(updateSettingValuesModel);\n }\n\n updateSettingValues(updateSettingValuesModel: any) {\n this.onSave(updateSettingValuesModel).subscribe(settingValues => {\n this.settingValues = settingValues;\n this.createFormGroup();\n this.submitting = false;\n this.snackBar.openFromComponent(SaveSnackbarComponent, { duration: 5000, panelClass: 'green-snackbar' });\n }, (error) => {\n if (error.status === 400 && error.error\n && error.error.KnownLastUpdatedAt && error.error.KnownLastUpdatedAt[0] === 'Concurrent update') {\n const dialogRef = this.dialog.open(ConcurrentDialogComponent, {\n width: '560px'\n });\n dialogRef.afterClosed()\n .subscribe(result => {\n if (result && result.button === 'save') {\n updateSettingValuesModel.forced = true;\n this.updateSettingValues(updateSettingValuesModel);\n } else {\n this.reloadSettingValues();\n this.submitting = false;\n }\n });\n return;\n }\n\n if (error.status === 400 && error.error && error.error.Reason && error.error.Reason[0] === 'Reason required') {\n const dialogRef = this.dialog.open(ReasonDialogComponent, {\n width: '450px'\n });\n dialogRef.afterClosed()\n .subscribe(result => {\n if (result && result.button === 'save' && result.reason) {\n updateSettingValuesModel.reason = result.reason;\n this.updateSettingValues(updateSettingValuesModel);\n } else {\n this.submitting = false;\n }\n });\n return;\n }\n\n this.formGroup.setErrors({ internalServerError: 'Internal server error' });\n this.showFeedBackMessage = true;\n });\n }\n\n handleRevertYes() {\n this.showRevertQuestion = false;\n this.reloadSettingValues();\n }\n\n handleRevertCancel() {\n this.showRevertQuestion = false;\n }\n\n onEditSettingRequested(setting: any) {\n this.editSettingRequested.emit({\n setting: setting.setting,\n environment: this.settingValues.environment,\n config: this.settingValues.config\n });\n }\n\n onDeleteSettingRequested(setting: any) {\n this.deleteSettingRequested.emit({\n setting: setting.setting,\n environment: this.settingValues.environment,\n config: this.settingValues.config\n });\n }\n}\n","<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\" [canEditSetting]=\"canEditSetting\"\n [canDeleteSetting]=\"canDeleteSetting\" (editSettingRequested)=\"onEditSettingRequested($event)\"\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>","import { Component, OnInit, Optional, Input, Output, EventEmitter } from '@angular/core';\nimport { BaseComponent } from '../base/base.component';\nimport { SegmentListModel, SettingValueModel, UpdateSettingValueModel } from 'ng-configcat-publicapi';\nimport { Observable, throwError, of } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { PublicApiService } from '../_services';\nimport { SettingValuesModel, UpdateSettingValuesModel } from '../_models';\n\n@Component({\n selector: 'configcat-setting-item',\n templateUrl: './setting-item.component.html',\n styleUrls: ['./setting-item.component.scss']\n})\nexport class SettingItemComponent extends BaseComponent implements OnInit {\n\n @Input() productId!: string;\n @Input() environmentId!: string;\n @Input() configId!: string;\n @Input() settingId!: number;\n\n @Input() canEditSetting = true;\n @Input() canDeleteSetting = true;\n @Input() deleteSettingText = 'Delete setting';\n @Input() showEnvironmentName = true;\n\n @Output() editSettingRequested = new EventEmitter();\n @Output() deleteSettingRequested = new EventEmitter();\n\n @Output() loadSucceeded = new EventEmitter();\n @Output() loadFailed = new EventEmitter();\n @Output() saveSucceeded = new EventEmitter();\n @Output() saveFailed = new EventEmitter();\n\n @Output() formValuesChanged = new EventEmitter();\n\n settingValue!: SettingValueModel;\n segments!: SegmentListModel[];\n dashboardBasePath: string;\n\n constructor(\n publicApiService: PublicApiService) {\n super(publicApiService);\n this.dashboardBasePath = publicApiService.getDashboardBasePath();\n }\n\n ngOnInit(): void {\n }\n\n loadSettingValues = (): Observable<SettingValuesModel> => {\n return this.createSettingValuesService().getSettingValue(this.environmentId, this.settingId)\n .pipe(\n map(settingValue => {\n this.settingValue = settingValue;\n\n const settingValues = {\n settingValues: [settingValue],\n readOnly: settingValue.readOnly,\n config: settingValue.config,\n environment: settingValue.environment\n } as SettingValuesModel;\n\n this.loadSucceeded.emit(settingValues);\n return settingValues;\n }),\n catchError(error => {\n this.loadFailed.emit(error);\n return throwError(error);\n })\n );\n }\n\n loadSegments = (): Observable<SegmentListModel[]> => {\n return this.createSegmentsService().getSegments(this.productId)\n .pipe(\n map(segments => {\n this.segments = segments;\n return segments;\n }),\n catchError(error => {\n return throwError(error);\n })\n );\n }\n\n handleSave = (model: UpdateSettingValuesModel): Observable<SettingValuesModel> => {\n if (model.settingValues.length === 0) {\n return of();\n }\n const updateModel = model.settingValues[0] as UpdateSettingValueModel;\n\n return this.createSettingValuesService().replaceSettingValue(\n this.environmentId, this.settingId, updateModel, model.reason)\n .pipe(\n map(settingValue => {\n this.settingValue = settingValue;\n\n const settingValues = {\n settingValues: [settingValue],\n readOnly: settingValue.readOnly,\n config: settingValue.config,\n environment: settingValue.environment\n } as SettingValuesModel;\n\n this.saveSucceeded.emit(settingValues);\n return settingValues;\n }),\n catchError(error => {\n this.saveFailed.emit(error);\n return throwError(error);\n })\n );\n }\n\n onEditSettingRequested(setting: any) {\n this.editSettingRequested.emit({\n setting: setting.setting,\n environment: this.settingValue.environment,\n config: this.settingValue.config\n });\n }\n\n onDeleteSettingRequested(setting: any) {\n this.deleteSettingRequested.emit({\n setting: setting.setting,\n environment: this.settingValue.environment,\n config: this.settingValue.config\n });\n }\n\n onFormValuesChanged() {\n this.formValuesChanged.emit();\n }\n}\n","<configcat-setting-list [canEditSetting]=\"canEditSetting\" [canDeleteSetting]=\"canDeleteSetting\" [onSave]=\"handleSave\"\n [loadSettingValues]=\"loadSettingValues\" [loadSegments]=\"loadSegments\"\n (editSettingRequested)=\"onEditSettingRequested($event)\" (deleteSettingRequested)=\"onDeleteSettingRequested($event)\"\n [deleteSettingText]=\"deleteSettingText\" [showEnvironmentName]=\"showEnvironmentName\"\n (formValuesChanged)=\"onFormValuesChanged()\" [productId]=\"productId\" [configId]=\"configId\" [environmentId]=\"environmentId\"\n [dashboardBasePath]=\"dashboardBasePath\">\n</configcat-setting-list>","import { Component, OnInit, Optional, Input, Output, EventEmitter, OnChanges } from '@angular/core';\nimport { BaseComponent } from '../../base/base.component';\nimport { SettingModel } from 'ng-configcat-publicapi';\nimport { UntypedFormControl } from '@angular/forms';\nimport { PublicApiService } from '../../_services';\n\n@Component({\n selector: 'configcat-setting-select',\n templateUrl: './setting-select.component.html',\n styleUrls: ['./setting-select.component.css']\n})\nexport class SettingSelectComponent extends BaseComponent implements OnInit, OnChanges {\n\n @Input() valueFormControl!: UntypedFormControl;\n @Input() configId!: string;\n settings: SettingModel[] = [];\n\n constructor(\n publicApiService: PublicApiService) {\n super(publicApiService);\n }\n\n ngOnInit(): void {\n this.settings = [];\n this.reloadSettings();\n }\n\n ngOnChanges() {\n this.reloadSettings();\n }\n\n reloadSettings() {\n if (this.configId) {\n this.createSettingsService().getSettings(this.configId).subscribe(settings => {\n this.settings = settings;\n if (this.settings.length > 0) {\n this.valueFormControl.setValue(this.settings[0].settingId);\n }\n });\n }\n }\n}\n","<mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Feature flag or setting</mat-label>\n <mat-select placeholder=\"Feature flag or setting\" [formControl]=\"valueFormControl\" *ngIf=\"settings\" name=\"value\">\n <mat-option *ngFor=\"let setting of settings\" [value]=\"setting.settingId\">{{setting.name}}\n </mat-option>\n </mat-select>\n</mat-form-field>","import { Component, OnInit, Optional, Input, Output, EventEmitter, OnChanges } from '@angular/core';\nimport { BaseComponent } from '../../base/base.component';\nimport { ProductModel } from 'ng-configcat-publicapi';\nimport { UntypedFormControl } from '@angular/forms';\nimport { PublicApiService } from '../../_services';\n\n@Component({\n selector: 'configcat-product-select',\n templateUrl: './product-select.component.html',\n styleUrls: ['./product-select.component.css']\n})\nexport class ProductSelectComponent extends BaseComponent implements OnInit {\n\n @Input() valueFormControl!: UntypedFormControl;\n products: ProductModel[] = [];\n\n constructor(\n publicApiService: PublicApiService) {\n super(publicApiService);\n }\n\n ngOnInit(): void {\n this.products = [];\n this.createProductsService().getProducts().subscribe(products => {\n this.products = products;\n if (this.products.length > 0) {\n this.valueFormControl.setValue(this.products[0].productId, {\n emitEvent: true,\n emitModelToViewChange: true, emitViewToModelChange: true\n });\n }\n });\n }\n\n}\n","<mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Product</mat-label>\n <mat-select placeholder=\"Product\" [formControl]=\"valueFormControl\" name=\"productValue\">\n <mat-option *ngFor=\"let product of products\" [value]=\"product.productId\">{{product.name}}\n </mat-option>\n </mat-select>\n</mat-form-field>","import { Component, OnInit, Inject, Input, Optional, Output, EventEmitter, OnChanges, forwardRef } from '@angular/core';\nimport { BaseComponent } from '../../base/base.component';\nimport { ConfigModel } from 'ng-configcat-publicapi';\nimport { NG_VALUE_ACCESSOR, UntypedFormControl } from '@angular/forms';\nimport { PublicApiService } from '../../_services';\n\n@Component({\n selector: 'configcat-config-select',\n templateUrl: './config-select.component.html',\n styleUrls: ['./config-select.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ConfigSelectComponent),\n multi: true\n }\n ]\n})\nexport class ConfigSelectComponent extends BaseComponent implements OnInit, OnChanges {\n\n @Input() valueFormControl!: UntypedFormControl;\n @Input() productId!: string;\n configs: ConfigModel[] = [];\n\n constructor(\n publicApiService: PublicApiService) {\n super(publicApiService);\n }\n\n ngOnInit(): void {\n this.configs = [];\n this.reloadConfigs();\n }\n\n ngOnChanges() {\n this.reloadConfigs();\n }\n\n reloadConfigs() {\n if (this.productId) {\n this.createConfigsService().getConfigs(this.productId).subscribe(configs => {\n this.configs = configs;\n if (this.configs.length > 0) {\n this.valueFormControl.setValue(this.configs[0].configId);\n }\n });\n }\n }\n}\n","<mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Config</mat-label>\n <mat-select placeholder=\"Config\" [formControl]=\"valueFormControl\" *ngIf=\"configs\" name=\"value\">\n <mat-option *ngFor=\"let config of configs\" [value]=\"config.configId\">{{config.name}}</mat-option>\n </mat-select>\n</mat-form-field>","import { Component, OnInit, Optional, Input, Output, EventEmitter, OnChanges } from '@angular/core';\nimport { BaseComponent } from '../../base/base.component';\nimport { EnvironmentModel } from 'ng-configcat-publicapi';\nimport { UntypedFormControl } from '@angular/forms';\nimport { PublicApiService } from '../../_services';\n\n@Component({\n selector: 'configcat-environment-select',\n templateUrl: './environment-select.component.html',\n styleUrls: ['./environment-select.component.css']\n})\nexport class EnvironmentSelectComponent extends BaseComponent implements OnInit, OnChanges {\n\n @Input() valueFormControl!: UntypedFormControl;\n @Input() productId!: string;\n environments: EnvironmentModel[] = [];\n\n constructor(\n publicApiService: PublicApiService) {\n super(publicApiService);\n }\n\n ngOnInit(): void {\n this.environments = [];\n this.reloadEnvironments();\n }\n\n ngOnChanges() {\n this.reloadEnvironments();\n }\n\n reloadEnvironments() {\n if (this.productId) {\n this.createEnvironmentsService().getEnvironments(this.productId).subscribe(environments => {\n this.environments = environments;\n if (this.environments.length > 0) {\n this.valueFormControl.setValue(this.environments[0].environmentId);\n }\n });\n }\n }\n\n}\n","<mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Environment</mat-label>\n <mat-select placeholder=\"Environment\" [formControl]=\"valueFormControl\" *ngIf=\"environments\" name=\"value\">\n <mat-option *ngFor=\"let environment of environments\" [value]=\"environment.environmentId\">{{environment.name}}\n </mat-option>\n </mat-select>\n</mat-form-field>","import { Component, OnInit, Optional, Input, Output, EventEmitter } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormBuilder, Validators } from '@angular/forms';\nimport { PublicApiService } from '../_services';\nimport { FormHelper } from '../_services/form-helper';\n\n@Component({\n selector: 'configcat-authorization',\n templateUrl: './authorization.component.html',\n styleUrls: ['./authorization.component.scss']\n})\nexport class AuthorizationComponent implements OnInit {\n\n formGroup!: UntypedFormGroup;\n @Input() basePath = null;\n @Input() integrationName = 'ConfigCat Feature Flags';\n @Output() authorized = new EventEmitter();\n FormHelper = FormHelper;\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private publicApiService: PublicApiService\n ) { }\n\n ngOnInit(): void {\n this.formGroup = this.formBuilder.group({\n basicAuthUsername: ['', Validators.required],\n basicAuthPassword: ['', Validators.required],\n });\n }\n\n onSubmit() {\n if (!this.formGroup.valid) {\n return;\n }\n\n const meService = this.publicApiService.createMeService(\n this.formGroup.controls.basicAuthUsername.value,\n this.formGroup.controls.basicAuthPassword.value,\n this.basePath);\n\n meService.getMe().subscribe(me => {\n this.authorized.emit({\n basicAuthUsername: this.formGroup.controls.basicAuthUsername.value,\n basicAuthPassword: this.formGroup.controls.basicAuthPassword.value,\n email: me.email,\n fullName: me.fullName\n });\n },\n error => {\n this.formGroup.setErrors({ invalidAuthorization: 'Invalid Basic auth user name or password' });\n }\n );\n }\n\n getPublicApiUrl() {\n return this.publicApiService.getDashboardBasePath() + '/my-account/public-api-credentials';\n }\n}\n","<form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div class=\"container\">\n <div class=\"form\">\n <p>\n In order to use {{integrationName}} you have to authorize first with your ConfigCat Public API\n credentials.\n </p>\n <ul>\n <li>\n <a [href]=\"getPublicApiUrl()\" target=\"_blank\">\n Get your Basic Auth user name and password</a> to access ConfigCat Public API.\n <br />\n <b>Note!</b> Your ConfigCat account's email address and password will not work here.\n </li>\n <li>\n Type your credentials here and click the Authorize button.\n </li>\n </ul>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth user name</mat-label>\n <input matInput placeholder=\"Basic auth user name\" formControlName=\"basicAuthUsername\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthUsername.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthUsername)}}\n </mat-error>\n </mat-form-field>\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth password</mat-label>\n <input matInput placeholder=\"Basic auth password\" formControlName=\"basicAuthPassword\" type=\"password\"\n autocomplete=\"current-password\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthPassword.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthPassword)}}\n </mat-error>\n </mat-form-field>\n <div>\n <button mat-flat-button color=\"primary\" type=\"submit\" class=\"submit\">Authorize</button>\n <mat-error *ngIf=\"formGroup.invalid && formGroup.errors && formGroup.errors.invalidAuthorization\">\n {{formGroup.errors.invalidAuthorization}}</mat-error>\n </div>\n </div>\n </div>\n</form>","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { SettingItemComponent } from './setting-item/setting-item.component';\nimport { SettingSelectComponent } from './selects/setting-select/setting-select.component';\nimport { ProductSelectComponent } from './selects/product-select/product-select.component';\nimport { ConfigSelectComponent } from './selects/config-select/config-select.component';\nimport { EnvironmentSelectComponent } from './selects/environment-select/environment-select.component';\nimport { Configuration } from './configuration';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AuthorizationComponent } from './authorization/authorization.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { ConcurrentDialogComponent } from './dialogs/concurrent-dialog/concurrent-dialog.component';\nimport { ExpandDialogComponent } from './dialogs/expand-dialog/expand-dialog.component';\nimport { ReasonDialogComponent } from './dialogs/reason-dialog/reason-dialog.component';\nimport { SaveSnackbarComponent } from './dialogs/save-snackbar/save-snackbar.component';\nimport { RolloutPercentageItemsComponent } from './setting-list/setting/rollout-percentage-items/rollout-percentage-items.component';\nimport { RolloutRulesComponent } from './setting-list/setting/rollout-rules/rollout-rules.component';\nimport { ValueComponent } from './setting-list/setting/value/value.component';\nimport { SettingListComponent } from './setting-list/setting-list.component';\nimport { SettingComponent } from './setting-list/setting/setting.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { RouterModule } from '@angular/router';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { BaseComponent } from './base/base.component';\nimport { ApiModule } from 'ng-configcat-publicapi';\nimport { InputDisplayNormalizerDirective } from './_directives/input-display-normalizer.directive';\n\n@NgModule({\n declarations: [\n BaseComponent,\n ProductSelectComponent,\n ConfigSelectComponent,\n EnvironmentSelectComponent,\n SettingSelectComponent,\n SettingItemComponent,\n AuthorizationComponent,\n SettingListComponent,\n SettingComponent,\n RolloutPercentageItemsComponent,\n RolloutRulesComponent,\n ValueComponent,\n ReasonDialogComponent,\n ConcurrentDialogComponent,\n SaveSnackbarComponent,\n ExpandDialogComponent,\n InputDisplayNormalizerDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n BrowserAnimationsModule,\n MatFormFieldModule,\n MatOptionModule,\n MatSelectModule,\n MatButtonModule,\n MatInputModule,\n MatIconModule,\n MatTooltipModule,\n MatChipsModule,\n MatAutocompleteModule,\n DragDropModule,\n RouterModule,\n MatSnackBarModule,\n MatDialogModule,\n MatMenuModule,\n ApiModule\n ],\n exports: [\n AuthorizationComponent,\n\n ProductSelectComponent,\n ConfigSelectComponent,\n EnvironmentSelectComponent,\n SettingSelectComponent,\n\n SettingItemComponent,\n\n InputDisplayNormalizerDirective\n ]\n})\nexport class NgConfigCatPublicApiUIModule {\n public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders<NgConfigCatPublicApiUIModule> {\n return {\n ngModule: NgConfigCatPublicApiUIModule,\n providers: [{ provide: Configuration, useFactory: configurationFactory }]\n };\n }\n\n constructor() { }\n}\n","/*\n * Public API Surface of ng-configcat-publicapi-ui\n */\n\nexport * from './lib/ng-configcat-publicapi-ui.module';\nexport * from './lib/_directives';\nexport * from './lib/_services';\nexport * from './lib/setting-item/setting-item.component';\nexport * from './lib/authorization/authorization.component';\nexport * from './lib/selects/product-select/product-select.component';\nexport * from './lib/selects/config-select/config-select.component';\nexport * from './lib/selects/environment-select/environment-select.component';\nexport * from './lib/selects/setting-select/setting-select.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PublicApiConfiguration","i2.Configuration","i1.PublicApiService","i1","i3","i2","i4","i5","i6.InputDisplayNormalizerDirective","i6.ValueComponent","i2.SettingListFormHelper","i8","i9","i12.ValueComponent","i13.InputDisplayNormalizerDirective","i1.SettingListFormHelper","i6","i7.RolloutPercentageItemsComponent","i8.RolloutRulesComponent","i9.ValueComponent","i8.SettingComponent","i2.SettingListComponent","i2.PublicApiService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAGa,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;QAII,IAAQ,CAAA,QAAA,GAAG,2BAA2B,CAAC;QACvC,IAAiB,CAAA,iBAAA,GAAG,2BAA2B,CAAC;AACnD,KAAA;;2GALY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAb,aAAa,EAAA,CAAA,CAAA;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;MCUE,gBAAgB,CAAA;IAEzB,WACY,CAAA,UAAsB,EACV,aAA4B,EAAA;QADxC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACV,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KACnD;IAED,eAAe,CAAC,oBAAmC,IAAI,EAAE,oBAAmC,IAAI,EAAE,WAA0B,IAAI,EAAA;AAC5H,QAAA,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,QAAQ,EAC1E,IAAIA,eAAsB,CAAC;AACvB,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACpE,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACvE,SAAA,CAAC,CAAC,CAAC;KACX;IAED,qBAAqB,CAAC,oBAAmC,IAAI,EAAE,oBAAmC,IAAI,EAAE,WAA0B,IAAI,EAAA;AAClI,QAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,QAAQ,EAChF,IAAIA,eAAsB,CAAC;AACvB,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACpE,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACvE,SAAA,CAAC,CAAC,CAAC;KACX;IAED,oBAAoB,CAAC,oBAAmC,IAAI,EAAE,oBAAmC,IAAI,EAAE,WAA0B,IAAI,EAAA;AACjI,QAAA,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAIA,eAAsB,CAAC;AAC5G,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACpE,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACvE,SAAA,CAAC,CAAC,CAAC;KACP;IAED,yBAAyB,CAAC,oBAAmC,IAAI,EAAE,oBAAmC,IAAI,EAAE,WAA0B,IAAI,EAAA;AACtI,QAAA,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAIA,eAAsB,CAAC;AACjH,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACpE,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACvE,SAAA,CAAC,CAAC,CAAC;KACP;IAED,qBAAqB,CAAC,oBAAmC,IAAI,EAAE,oBAAmC,IAAI,EAAE,WAA0B,IAAI,EAAA;AAClI,QAAA,OAAO,IAAI,2BAA2B,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAIA,eAAsB,CAAC;AACzH,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACpE,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACvE,SAAA,CAAC,CAAC,CAAC;KACP;IAED,0BAA0B,CAAC,oBAAmC,IAAI,EAAE,oBAAmC,IAAI,EAAE,WAA0B,IAAI,EAAA;AACvI,QAAA,OAAO,IAAI,+BAA+B,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAIA,eAAsB,CAAC;AAC7H,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACpE,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACvE,SAAA,CAAC,CAAC,CAAC;KACP;IAED,6BAA6B,CAAC,oBAAmC,IAAI,EAAE,oBAAmC,IAAI,EAAE,WAA0B,IAAI,EAAA;AAC1I,QAAA,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAIA,eAAsB,CAAC;AACrH,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACpE,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACvE,SAAA,CAAC,CAAC,CAAC;KACP;IAED,qBAAqB,CAAC,oBAAmC,IAAI,EAAE,oBAAmC,IAAI,EAAE,WAA0B,IAAI,EAAA;AAClI,QAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAIA,eAAsB,CAAC;AAC7G,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACpE,YAAA,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,iBAAiB;AACvE,SAAA,CAAC,CAAC,CAAC;KACP;IAED,oBAAoB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,iBAAiB,IAAI,2BAA2B,CAAC;KAC/E;;8GAnEQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA,CAAA;4FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;0BAKzB,QAAQ;;;MCRJ,aAAa,CAAA;AAMxB,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAJ7C,IAAQ,CAAA,QAAA,GAAkB,IAAI,CAAC;QAC/B,IAAiB,CAAA,iBAAA,GAAkB,IAAI,CAAC;QACxC,IAAiB,CAAA,iBAAA,GAAkB,IAAI,CAAC;KAGhD;IAES,qBAAqB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACnH;IAES,oBAAoB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClH;IAES,yBAAyB,GAAA;AACjC,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACvH;IAES,qBAAqB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACnH;IAES,0BAA0B,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxH;IAES,qBAAqB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACnH;;2GA/BU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,8JAFd,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;4FAEZ,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA,CAAA;oGAGU,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;MCZK,cAAc,CAAA;AAClB,IAAA,OAAO,UAAU,GAAA;;AAEtB,QAAA,OAAO,CAAC,CAAE,MAAc,CAAC,MAAM,CAAC;KACjC;AACF;;MCDY,UAAU,CAAA;AAEZ,IAAA,OAAO,eAAe,CAAC,OAAwB,EAAE,OAAe,EAAE,EAAA;AACrE,QAAA,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;YAC3B,OAAO;AACV,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC9B,OAAO,CAAA,EAAG,IAAI,CAAA,uBAAA,CAAyB,CAAC;AAC3C,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC7B,YAAA,OAAO,6BAA6B,CAAC;AACxC,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC/B,YAAA,OAAO,6BAA6B,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,cAAc,GAAG,kBAAkB,CAAC;AAC5G,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAC/B,YAAA,OAAO,2BAA2B,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,cAAc,GAAG,kBAAkB,CAAC;AAC1G,SAAA;QAED,OAAO;KACV;AAGM,IAAA,OAAO,YAAY,CAAC,SAAoB,EAAE,KAAU,EAAA;QACvD,IAAI,KAAK,YAAY,iBAAiB,EAAE;YACpC,MAAM,QAAQ,GAAG,KAA0B,CAAC;YAC5C,QAAQ,QAAQ,CAAC,MAAM;AACnB,gBAAA,KAAK,GAAG;oBACJ,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,oBAAA,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,wBAAA,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;6BAC9D,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;4BACpF,IAAI,aAAa,GAAG,SAAS,CAAC;AAC9B,4BAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,gCAAA,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3E,6BAAA;AAED,4BAAA,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;gCAC3D,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;AAC3E,kCAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;4BAE7B,IAAI,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;AAClD,gCAAA,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;AAC7E,6BAAA;AAAM,iCAAA;gCACH,gBAAgB,GAAG,IAAI,CAAC;AAC3B,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AACD,oBAAA,IAAI,gBAAgB,EAAE;wBAClB,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAChE,qBAAA;oBACD,MAAM;;;AAGV,gBAAA,KAAK,GAAG,CAAC;AACT,gBAAA,KAAK,GAAG;oBACJ,OAAO;AACd,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,6EAA6E,EAAE,CAAC,CAAC;AACtH,SAAA;KACJ;AAED;;;AAGG;IACI,OAAO,eAAe,CAAC,KAAU,EAAA;QACpC,QAAQ,OAAO,KAAK;AAChB,YAAA,KAAK,QAAQ;AACT,gBAAA,OAAO,KAAK,CAAC;AACjB,YAAA,KAAK,QAAQ;;AAET,gBAAA,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACrD,YAAA,KAAK,QAAQ;AACT,gBAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,YAAA;AACI,gBAAA,OAAO,GAAG,CAAC;AAClB,SAAA;KACJ;AAED;;;;AAIG;IACI,OAAO,6BAA6B,CAAC,KAAU,EAAA;AAClD,QAAA,KAAK,GAAG,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;;AAE1C,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;KAC5C;IAGI,OAAO,sBAAsB,CAAC,KAAa,EAAA;AAChD,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;;;AAID,QAAA,IAAI,cAAc,CAAC,UAAU,EAAE,EAAE;AAC/B,YAAA,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;AAC/B,SAAA;;;;;QAMD,OAAO,KAAK,GAAG,EAAE,CAAC;KACnB;AACF;;MC7GY,qBAAqB,CAAA;IAIhC,WACS,CAAA,SAA8C,EAC7C,WAA+B,EAAA;QADhC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAqC;QAC7C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;KACpC;IAEL,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACtC,YAAA,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,SAAA,CAAC,CAAC;KACJ;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACzB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;KACxF;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;KAC5C;;mHAzBU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,+DCTlC,6zBAgBO,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDPM,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,6zBAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,CAAA;;;MEExB,qBAAqB,CAAA;AAEhC,IAAA,WAAA,GAAA,GAAiB;IAEjB,QAAQ,GAAA;KACP;;mHALU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,+DCPlC,sDAAkD,EAAA,MAAA,EAAA,CAAA,gEAAA,CAAA,EAAA,CAAA,CAAA;4FDOrC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,sDAAA,EAAA,MAAA,EAAA,CAAA,gEAAA,CAAA,EAAA,CAAA;;;MEKxB,yBAAyB,CAAA;AAEpC,IAAA,WAAA,CACS,SAAkD,EAAA;QAAlD,IAAS,CAAA,SAAA,GAAT,SAAS,CAAyC;KACtD;IAEL,QAAQ,GAAA;KACP;IAED,IAAI,GAAA;QACF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KAC1C;IAED,OAAO,GAAA;QACL,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;KAC7C;;uHAfU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,mECRtC,s2BAiBM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDTO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,s2BAAA,EAAA,CAAA;;;MEG5B,qBAAqB,CAAA;AAE9B,IAAA,WAAA,CAAoB,WAA+B,EAAA;QAA/B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;KAAK;AAExD,IAAA,4BAA4B,CAAC,kBAAsC,EAAA;AAC/D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACrC,YAAA,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CACjC,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAG;gBACtC,OAAO,IAAI,CAAC,2BAA2B,CAAC,EAAE,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7E,aAAC,CAAC,CAAC;;AAGP,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAChC,gBAAA,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,WAAW,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxF,gBAAA,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aACzE,CAAC;YAEF,oBAAoB,EAAE,CAAC,EAAE,CAAC;AAC7B,SAAA,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACxD,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;QACxE,SAAS,CAAC,UAAU,CAAC,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC,CAAC;AACrE,QAAA,OAAO,SAAS,CAAC;KACpB;IAGD,2BAA2B,CAAC,iBAAoC,EAAE,QAAiB,EAAA;AAC/E,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;YAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACrC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC1B,YAAA,SAAS,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC;AAChD,YAAA,KAAK,EAAE;gBACH,EAAE,KAAK,EAAE,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;gBACtD,IAAI,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC;AAC1E,aAAA;YACD,sBAAsB,EAAE,iBAAiB,CAAC,sBAAsB;AAC5D,kBAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,IAAG;;AAEtE,oBAAA,OAAO,IAAI,CAAC,oCAAoC,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACzG,iBAAC,CAAC,CAAC;AACH,kBAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,iBAAiB,CAAC,YAAY;AACtE,kBAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAG;;AAE5D,oBAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC/F,iBAAC,CAAC,CAAC;kBACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AAEpC,YAAA,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnE,YAAA,oBAAoB,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzF,YAAA,uBAAuB,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAE/F,yBAAyB,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;AAExG,YAAA,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC5B,gBAAA,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3E,gBAAA,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/D,gBAAA,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjE,gBAAA,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjE,gBAAA,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/E,gBAAA,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjF,gBAAA,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACvF,gBAAA,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC9E,CAAC;YAEF,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAG;AACtH,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC1B,oBAAA,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxC,oBAAA,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxD,oBAAA,mBAAmB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxE,oBAAA,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC3C,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AACnC,SAAA,CAAC,CAAC;KACN;AAED,IAAA,oCAAoC,CAAC,CAA6B,EAAE,QAAiB,EAAE,WAAoC,EAAA;AACvH,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC1B,YAAA,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACxH,YAAA,KAAK,EAAE;gBACH,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACtC,gBAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;AAChD,aAAA;AACD,YAAA,aAAa,EAAE;gBACX,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;AACrC,aAAA;AACJ,SAAA,CAAC,CAAC;KACN;AAED,IAAA,0BAA0B,CAAC,CAAmB,EAAE,QAAiB,EAAE,WAAoC,EAAA;QACnG,IAAI,CAAC,CAAC,UAAU,EAAE;AACd,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAC1B,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpC,gBAAA,mBAAmB,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAClG,gBAAA,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAChF,gBAAA,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1F,gBAAA,KAAK,EAAE;oBACH,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACtC,oBAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;AAChD,iBAAA;AACJ,aAAA,CAAC,CAAC;AACN,SAAA;aAAM,IAAI,CAAC,CAAC,iBAAiB,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAC1B,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACpC,gBAAA,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9F,gBAAA,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9E,gBAAA,KAAK,EAAE;oBACH,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACtC,oBAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;AAChD,iBAAA;AACJ,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC3C,SAAA;KACJ;AAEO,IAAA,2BAA2B,CAAC,WAAoC,EAAA;AACpE,QAAA,QAAQ,WAAW;YACf,KAAK,WAAW,CAAC,GAAG;gBAChB,OAAO,CAAC,UAAU,CAAC,QAAQ;oBAC3B,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACrG,KAAK,WAAW,CAAC,MAAM;gBACnB,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAChH,KAAK,WAAW,CAAC,MAAM,CAAC;YACxB,KAAK,WAAW,CAAC,OAAO;AACpB,gBAAA,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,YAAA;AACI,gBAAA,OAAO,EAAE,CAAC;AACjB,SAAA;KACJ;AAEO,IAAA,kBAAkB,CAAC,SAA2B,EAAA;QAClD,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAqB,CAAC;QACzE,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAK,EAAE,CAAC,GAAG,CAAC,cAAc,CAAsB,CAAC,KAAK,CAAC,CAAC;AAC1G,QAAA,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KAChG;AAEO,IAAA,uBAAuB,CAAC,YAAmB,EAAA;AAC/C,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,MAAM,2BAA2B,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC;YAEjF,MAAM,2BAA2B,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACvE,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;KACJ;AAED,IAAA,sBAAsB,CAAC,UAAiC,EAAA;AACpD,QAAA,QAAQ,UAAU;YACd,KAAK,qBAAqB,CAAC,YAAY,CAAC;YACxC,KAAK,qBAAqB,CAAC,kBAAkB,CAAC;YAC9C,KAAK,qBAAqB,CAAC,UAAU,CAAC;YACtC,KAAK,qBAAqB,CAAC,kBAAkB,CAAC;YAC9C,KAAK,qBAAqB,CAAC,aAAa,CAAC;YACzC,KAAK,qBAAqB,CAAC,qBAAqB;AAC5C,gBAAA,OAAO,QAAQ,CAAC;AACpB,YAAA;AACI,gBAAA,OAAO,MAAM,CAAC;AACrB,SAAA;KACJ;IAED,wBAAwB,CAAC,UAA6C,EAAE,eAAoB,EAAA;;;QAGxF,OAAO,UAAU,IAAI,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,KAAK,QAAQ;AACrE,cAAE,UAAU,CAAC,6BAA6B,CAAC,eAAe,CAAC;cACzD,eAAe,CAAC;KACzB;;mHA1KQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA,CAAA;4FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCIrB,qBAAqB,CAAA;AAOhC,IAAA,WAAA,CAAmB,SAA8C,EACvD,WAA+B,EACP,IAAS,EAAA;QAFxB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAqC;QACvD,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QACP,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAK;KAC1C;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAU,KAAI;gBACrF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AACrG,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;aACjC,EAAE,MAAQ,GAAC,EAAE,MAAK,GAAI,CAAC,CAAC;AAC1B,SAAA;KACF;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAqB,CAAC;KACzD;IAED,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAuB,CAAC,CAAC;KACjE;IAED,cAAc,GAAA;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;AACrE,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACtC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,cAAc,KAAI;YACpF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM;iBAC7C,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,iBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AACjF,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AAClC,SAAC,CAAC,CAAC;KACJ;IAED,GAAG,GAAA;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;KACzF;AAED,IAAA,MAAM,CAAC,KAAU,EAAA;QACd,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACtE;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;AAC3C,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACrC,SAAA;QAED,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;AACzC,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACnC,SAAA;KACF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KACxB;;AApEU,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kFAStB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AATd,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,+DCVlC,mhCAuBM,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDbO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,mhCAAA,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA,CAAA;;0BAahC,MAAM;2BAAC,eAAe,CAAA;;;AEjB3B;;;;;AAKG;MAKU,+BAA+B,CAAA;AACxC,IAAA,WAAA,GAAA,GAAiB;AAGjB,IAAA,QAAQ,CAAC,MAAW,EAAA;AAChB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC1B,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,YAAA,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAClD,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;;;;AAIjB,gBAAA,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;AAClB,gBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACxB,aAAA;AACJ,SAAA;KACJ;;6HAjBQ,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iHAA/B,+BAA+B,EAAA,QAAA,EAAA,+BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;4FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,+BAA+B;AAC5C,iBAAA,CAAA;0EAKG,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCAvB,cAAc,CAAA;AAQzB,IAAA,WAAA,CAAoB,MAAiB,EAAA;QAAjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;QAFrC,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;KAGzB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACtC,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAC/B,QAAA,OAAO,UAAU,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;KACjD;;4GApBU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,6HCf3B,+kDA8BA,EAAA,MAAA,EAAA,CAAA,yzBAAA,EAAA,m+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDfa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,+kDAAA,EAAA,MAAA,EAAA,CAAA,yzBAAA,EAAA,m+BAAA,CAAA,EAAA,CAAA;kGASlB,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;;;MEVK,+BAA+B,CAAA;AA6B1C,IAAA,WAAA,GAAA;QA1BS,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;KAyBT;IAtBjB,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;KAC7C;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAqB,CAAC;KAC/D;IAED,sBAAsB,GAAA;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAqB,CAAC;KACzE;IAED,yBAAyB,GAAA;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAuB,CAAC;KAC9E;AAED,IAAA,KAAK,CAAC,qBAAuC,EAAA;QAC3C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO;AACvD,YAAA,qBAAqB,CAAC,GAAG,CAAC,eAAe,CAAuB;AAChE,YAAA,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAuB,CAAC;KAC5D;AAID,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE;AACrE,YAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrG,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE;AACvE,YAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvG,SAAA;QAED,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAsB,CAAC,QAAQ,CAAC,UAAU;AACxF,iBAAA,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACnF,SAAA;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvD,IAAI,CAAC,yBAAyB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,yBAAyB,EAAE,CAAC,QAAQ,CACvC,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;AAChE,iBAAA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAC3B,CAAC;AACH,SAAA;KACF;AAED,IAAA,2BAA2B,CAAC,KAAa,EAAA;QACvC,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,kCAAkC,GAAA;AAChC,QAAA,OAAO,IAAI,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAqB,CAAC,CAAC;KACjF;AAED,IAAA,wBAAwB,CAAC,qBAA0B,EAAA;AACjD,QAAA,OAAO,qBAAqB,CAAC,QAAQ,CAAC,UAAgC,CAAC;KACxE;;6HA5EU,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,+BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,oICT5C,0iEA0CM,EAAA,MAAA,EAAA,CAAA,o5CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDjCO,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;+BACE,oCAAoC,EAAA,QAAA,EAAA,0iEAAA,EAAA,MAAA,EAAA,CAAA,o5CAAA,CAAA,EAAA,CAAA;0EAMrC,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEGK,qBAAqB,CAAA;IAuChC,WACU,CAAA,MAAiB,EACjB,qBAA4C,EAAA;QAD5C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;QACjB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAtC7C,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAG1B,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;QAE1B,IAA2B,CAAA,2BAAA,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAEjE,QAAA,IAAA,CAAA,sBAAsB,GAAG;YACvB,EAAE,KAAK,EAAE,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE;YACxE,EAAE,KAAK,EAAE,qBAAqB,CAAC,UAAU,EAAE,KAAK,EAAE,2BAA2B,EAAE;YAC/E,EAAE,KAAK,EAAE,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE,sBAAsB,EAAE;YACxE,EAAE,KAAK,EAAE,qBAAqB,CAAC,cAAc,EAAE,KAAK,EAAE,8BAA8B,EAAE;YAEtF,EAAE,KAAK,EAAE,qBAAqB,CAAC,aAAa,EAAE,KAAK,EAAE,oBAAoB,EAAE;YAC3E,EAAE,KAAK,EAAE,qBAAqB,CAAC,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE;YAClF,EAAE,KAAK,EAAE,qBAAqB,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE;YAChE,EAAE,KAAK,EAAE,qBAAqB,CAAC,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE;YACzE,EAAE,KAAK,EAAE,qBAAqB,CAAC,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE;YACnE,EAAE,KAAK,EAAE,qBAAqB,CAAC,qBAAqB,EAAE,KAAK,EAAE,aAAa,EAAE;YAE5E,EAAE,KAAK,EAAE,qBAAqB,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAClE,EAAE,KAAK,EAAE,qBAAqB,CAAC,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE;YACzE,EAAE,KAAK,EAAE,qBAAqB,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE;YAChE,EAAE,KAAK,EAAE,qBAAqB,CAAC,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE;YACzE,EAAE,KAAK,EAAE,qBAAqB,CAAC,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE;YACnE,EAAE,KAAK,EAAE,qBAAqB,CAAC,qBAAqB,EAAE,KAAK,EAAE,aAAa,EAAE;YAE5E,EAAE,KAAK,EAAE,qBAAqB,CAAC,gBAAgB,EAAE,KAAK,EAAE,oBAAoB,EAAE;YAC9E,EAAE,KAAK,EAAE,qBAAqB,CAAC,mBAAmB,EAAE,KAAK,EAAE,wBAAwB,EAAE;SACtF,CAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAG;YACnB,EAAE,KAAK,EAAE,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE;YACzD,EAAE,KAAK,EAAE,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE;SACjE,CAAC;KAIyD;IAE3D,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;KAC7C;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAqB,CAAC;KAC/D;IAED,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC;KAC/D;AAED,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;KACnC;AAED,IAAA,MAAM,CAAC,KAAU,EAAA;QACf,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;QAClD,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;KAC9B;IAED,gBAAgB,CAAC,KAAU,EAAE,mBAAuC,EAAA;AAClE,QAAA,IAAI,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AAChE,YAAA,IAAI,mBAAmB,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;AAC7C,gBAAA,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1C,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAC9B,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,mBAAmB,CAAC,KAAK,KAAK,EAAE,EAAE;AACpC,gBAAA,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjC,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAC9B,aAAA;AACF,SAAA;KACF;AAED,IAAA,cAAc,CAAC,WAAgB,EAAA;QAC7B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,EAAE;AACnD,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,QAAQ,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK;YAC3C,KAAK,qBAAqB,CAAC,OAAO,CAAC;YACnC,KAAK,qBAAqB,CAAC,UAAU,CAAC;YACtC,KAAK,qBAAqB,CAAC,gBAAgB,CAAC;YAC5C,KAAK,qBAAqB,CAAC,mBAAmB;gBAC5C,QAAQ,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE;AAClE,oBAAA,KAAK,YAAY;AACf,wBAAA,OAAO,mCAAmC,CAAC;AAC7C,oBAAA,KAAK,OAAO;AACV,wBAAA,OAAO,yCAAyC,CAAC;AACnD,oBAAA,KAAK,SAAS;AACZ,wBAAA,OAAO,qBAAqB,CAAC;AAC/B,oBAAA;AACE,wBAAA,OAAO,6BAA6B,CAAC;AACxC,iBAAA;YACH,KAAK,qBAAqB,CAAC,QAAQ,CAAC;YACpC,KAAK,qBAAqB,CAAC,cAAc;gBACvC,QAAQ,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE;AAClE,oBAAA,KAAK,YAAY;AACf,wBAAA,OAAO,YAAY,CAAC;AACtB,oBAAA,KAAK,OAAO;AACV,wBAAA,OAAO,mBAAmB,CAAC;AAC7B,oBAAA,KAAK,SAAS;AACZ,wBAAA,OAAO,aAAa,CAAC;AACvB,oBAAA;AACE,wBAAA,OAAO,oCAAoC,CAAC;AAC/C,iBAAA;YACH,KAAK,qBAAqB,CAAC,aAAa,CAAC;YACzC,KAAK,qBAAqB,CAAC,gBAAgB;AACzC,gBAAA,OAAO,mBAAmB,CAAC;YAC7B,KAAK,qBAAqB,CAAC,kBAAkB,CAAC;YAC9C,KAAK,qBAAqB,CAAC,UAAU,CAAC;YACtC,KAAK,qBAAqB,CAAC,aAAa,CAAC;YACzC,KAAK,qBAAqB,CAAC,qBAAqB;AAC9C,gBAAA,OAAO,YAAY,CAAC;YACtB,KAAK,qBAAqB,CAAC,YAAY,CAAC;YACxC,KAAK,qBAAqB,CAAC,kBAAkB,CAAC;YAC9C,KAAK,qBAAqB,CAAC,UAAU,CAAC;YACtC,KAAK,qBAAqB,CAAC,kBAAkB,CAAC;YAC9C,KAAK,qBAAqB,CAAC,aAAa,CAAC;YACzC,KAAK,qBAAqB,CAAC,qBAAqB;AAC9C,gBAAA,OAAO,SAAS,CAAC;AACpB,SAAA;AAED,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,sBAAsB,CAAC,WAAgB,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACjG;AAED,IAAA,YAAY,CAAC,WAAgB,EAAA;QAC3B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,EAAE;AACnD,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;AAED,QAAA,QAAQ,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK;YAC3C,KAAK,qBAAqB,CAAC,OAAO,CAAC;YACnC,KAAK,qBAAqB,CAAC,UAAU,CAAC;YACtC,KAAK,qBAAqB,CAAC,QAAQ,CAAC;YACpC,KAAK,qBAAqB,CAAC,cAAc;AACvC,gBAAA,OAAO,MAAM,CAAC;AAChB,YAAA;AACE,gBAAA,OAAO,MAAM,CAAC;AACjB,SAAA;KACF;AAED,IAAA,cAAc,CAAC,WAAgB,EAAA;QAC7B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,EAAE;AACnD,YAAA,OAAO,8BAA8B,CAAC;AACvC,SAAA;AAED,QAAA,QAAQ,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK;YAC3C,KAAK,qBAAqB,CAAC,OAAO,CAAC;YACnC,KAAK,qBAAqB,CAAC,UAAU,CAAC;YACtC,KAAK,qBAAqB,CAAC,QAAQ,CAAC;YACpC,KAAK,qBAAqB,CAAC,cAAc;AACvC,gBAAA,OAAO,iEAAiE,CAAC;AAC3E,YAAA;AACE,gBAAA,OAAO,uCAAuC,CAAC;AAClD,SAAA;KACF;AAED,IAAA,iBAAiB,CAAC,WAAgB,EAAA;QAChC,IAAI,UAAU,GAAU,EAAE,CAAC;AAE3B,QAAA,QAAQ,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK;YAC3C,KAAK,qBAAqB,CAAC,OAAO,CAAC;YACnC,KAAK,qBAAqB,CAAC,UAAU,CAAC;YACtC,KAAK,qBAAqB,CAAC,gBAAgB,CAAC;YAC5C,KAAK,qBAAqB,CAAC,mBAAmB,CAAC;YAC/C,KAAK,qBAAqB,CAAC,QAAQ,CAAC;YACpC,KAAK,qBAAqB,CAAC,cAAc;AACvC,gBAAA,UAAU,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,MAAM;YACR,KAAK,qBAAqB,CAAC,aAAa,CAAC;YACzC,KAAK,qBAAqB,CAAC,gBAAgB;gBACzC,UAAU,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC5D,MAAM;YACR,KAAK,qBAAqB,CAAC,kBAAkB,CAAC;YAC9C,KAAK,qBAAqB,CAAC,UAAU,CAAC;YACtC,KAAK,qBAAqB,CAAC,aAAa,CAAC;YACzC,KAAK,qBAAqB,CAAC,qBAAqB;gBAC9C,UAAU,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,qBAAqB,CAAC,YAAY,CAAC;YACxC,KAAK,qBAAqB,CAAC,kBAAkB,CAAC;YAC9C,KAAK,qBAAqB,CAAC,UAAU,CAAC;YACtC,KAAK,qBAAqB,CAAC,kBAAkB,CAAC;YAC9C,KAAK,qBAAqB,CAAC,aAAa,CAAC;YACzC,KAAK,qBAAqB,CAAC,qBAAqB;gBAC9C,UAAU,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAClH,MAAM;AACT,SAAA;QAED,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE;YACzD,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC;YAC5D,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,6BAA6B,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;YACpI,IAAI,QAAQ,KAAK,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE;AAC3D,gBAAA,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;AACtD,aAAA;AACF,SAAA;AACD,QAAA,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;KAC/D;AAED,IAAA,UAAU,CAAC,WAAgB,EAAA;AACzB,QAAA,QAAQ,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK;YAC3C,KAAK,qBAAqB,CAAC,OAAO,CAAC;YACnC,KAAK,qBAAqB,CAAC,UAAU,CAAC;YACtC,KAAK,qBAAqB,CAAC,gBAAgB,CAAC;YAC5C,KAAK,qBAAqB,CAAC,mBAAmB,CAAC;YAC/C,KAAK,qBAAqB,CAAC,aAAa,CAAC;YACzC,KAAK,qBAAqB,CAAC,gBAAgB;AACzC,gBAAA,OAAO,IAAI,CAAC;AACd,YAAA;AACE,gBAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACF;AAED,IAAA,cAAc,CAAC,CAAqB,EAAA;QAElC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YAC3B,OAAO;AACL,gBAAA,cAAc,EAAE;AACd,oBAAA,KAAK,EAAE,KAAK;AACb,iBAAA;aACF,CAAC;AACH,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,kBAAkB,CAAC,CAAqB,EAAA;AACtC,QAAA,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;YACZ,OAAO;AACL,gBAAA,kBAAkB,EAAE;AAClB,oBAAA,KAAK,EAAE,KAAK;AACb,iBAAA;aACF,CAAC;AACH,SAAA;QAED,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;YAChE,OAAO;AACL,gBAAA,kBAAkB,EAAE;AAClB,oBAAA,KAAK,EAAE,KAAK;AACb,iBAAA;aACF,CAAC;AACH,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,WAAgB,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACtC,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE;AACJ,gBAAA,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,eAAe;AAC7C,gBAAA,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AACxC,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAGD,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,8BAA8B,CAAC,WAAgB,EAAA;AAC7C,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,KAA2B,CAAC;KACzD;AAED,IAAA,wCAAwC,CAAC,WAAgB,EAAA;AACvD,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,eAAqC,CAAC;KACnE;AAED,IAAA,4CAA4C,CAAC,WAAgB,EAAA;AAC3D,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,mBAAyC,CAAC;KACvE;AAED,IAAA,6BAA6B,CAAC,WAAgB,EAAA;AAC5C,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,IAA0B,CAAC;KACxD;AAED,IAAA,mCAAmC,CAAC,WAAgB,EAAA;AAClD,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,UAAgC,CAAC;KAC9D;AAED,IAAA,0CAA0C,CAAC,WAAgB,EAAA;AACzD,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,iBAAuC,CAAC;KACrE;AAED,IAAA,kCAAkC,CAAC,WAAgB,EAAA;AACjD,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,SAA+B,CAAC;KAC7D;;mHA5SU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,+ICflC,kqTAkKM,EAAA,MAAA,EAAA,CAAA,2vIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDnJO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,kqTAAA,EAAA,MAAA,EAAA,CAAA,2vIAAA,CAAA,EAAA,CAAA;mIAM1B,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;METK,gBAAgB,CAAA;IAsB3B,WAAoB,CAAA,UAAiC,EAC3C,KAAwB,EAAA;QADd,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuB;QAC3C,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;QArBzB,IAAiB,CAAA,iBAAA,GAAG,2BAA2B,CAAC;QAMhD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QACzB,IAAiB,CAAA,iBAAA,GAAG,gBAAgB,CAAC;QACrC,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAG3B,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAE,CAAC;QAEtD,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAE3B,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;KAGa;AAEvC,IAAA,QAAQ,MAAM;IAEd,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;KACtD;IAED,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;KAC7C;IAED,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAqB,CAAC;KACnE;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAqB,CAAC;KAC/D;IAED,sBAAsB,GAAA;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAqB,CAAC;KACzE;IAED,KAAK,GAAA;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAuB,CAAC;KAC1D;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAC/C;AAChB,YAAA,mBAAmB,EAAE,YAAY;YACjC,UAAU,EAAE,qBAAqB,CAAC,gBAAgB;AAClD,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO,GAAG,KAAgB,GAAG,IAAI;AACpF,SAAA,EACD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;KACnC;IAED,qBAAqB,GAAA;QACnB,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAC/C;YAChB,iBAAiB,EAAE,iBAAiB,CAAC,IAAI;AACzC,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO,GAAG,KAAgB,GAAG,IAAI;AACpF,SAAA,EACD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;KACnC;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;KACnC;IAED,wBAAwB,GAAA;QAEtB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,YAAA,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW;gBAChC,KAAK,WAAW,CAAC,OAAO;oBACtB,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,oCAAoC,CACzD;AAC1B,wBAAA,UAAU,EAAE,CAAC;AACb,wBAAA,KAAK,EAAE,IAAe;AACvB,qBAAA,EACD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC9C,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,oCAAoC,CACzD;AAC1B,wBAAA,UAAU,EAAE,GAAG;AACf,wBAAA,KAAK,EAAE,KAAgB;AACxB,qBAAA,EACD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC9C,MAAM;gBAER,KAAK,WAAW,CAAC,MAAM,CAAC;gBACxB,KAAK,WAAW,CAAC,GAAG,CAAC;gBACrB,KAAK,WAAW,CAAC,MAAM;oBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;wBAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,oCAAoC,CACzD;AAC1B,4BAAA,UAAU,EAAE,EAAE;AACd,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA,EACD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/C,qBAAA;oBAED,MAAM;AACT,aAAA;AACF,SAAA;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO,EAAE;YAC7D,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,oCAAoC,CACzD;AAC1B,gBAAA,UAAU,EAAE,CAAC;AACb,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA,EACD,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/C,SAAA;AAED,QAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,WAAW,EAAE,CAAC;KAC7C;IAED,4BAA4B,GAAA;AAC1B,QAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,WAAW,EAAE,CAAC;KAC7C;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;KAC7D;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;KAC/D;IAED,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,iBAAiB,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC;KAClJ;;8GA1IU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,8fCV7B,+iHA0EM,EAAA,MAAA,EAAA,CAAA,g1HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDhEO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,+iHAAA,EAAA,MAAA,EAAA,CAAA,g1HAAA,CAAA,EAAA,CAAA;yIAMV,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;;;MERI,oBAAoB,CAAA;AAiC/B,IAAA,WAAA,CAAoB,UAAiC,EAC3C,QAAqB,EACrB,MAAiB,EAAA;QAFP,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuB;QAC3C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;QA9BlB,IAAiB,CAAA,iBAAA,GAAG,2BAA2B,CAAC;QAEhD,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QAKzB,IAAiB,CAAA,iBAAA,GAAG,gBAAgB,CAAC;QACrC,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAE3B,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAE,CAAC;AAC5C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;QAIjD,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;QAMf,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAC3B,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;QAC5B,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KAIe;IAEhC,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAED,WAAW,GAAA;QACT,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,6BAA6B,EAAE;AACtC,YAAA,IAAI,CAAC,6BAA6B,CAAC,WAAW,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;AAC3C,SAAA;KACF;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,QAAQ,CAAC;AACP,YAAA,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE;AAC7B,YAAA,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE;AACxC,SAAA,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;YACpB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC9C,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC1C,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB,EACC,KAAK,IAAG;AACN,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,2FAA2F,EAC5G,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;AAChE,SAAC,CAAC,CAAC;KACN;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AAC9E,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAChC,SAAC,CAAC,CAAC;KACJ;IAED,sBAAsB,GAAA;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAqB,CAAC;KAChE;IAED,yBAAyB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAqB,CAAC,CAAC;KAC/E;AAEO,IAAA,6BAA6B,CAAC,eAA0C,EAAA;AAC9E,QAAA,OAAO,eAAe,CAAC,GAAG,CAAC,cAAc,IAAG;YAC1C,OACA;gBACE,YAAY,EAAE,cAAc,CAAC,YAAY,EAAE,GAAG,CAAC,aAAa,KACxC;oBAChB,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;oBACtD,UAAU,EAAE,aAAa,CAAC,UAAU;AACpC,oBAAA,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC;oBAClH,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;oBAClD,SAAS,EAAE,aAAa,CAAC,SAAS;oBAClC,KAAK,EAAE,aAAa,CAAC,KAAK;AAC3B,iBAAA,CAAA,CAAC;gBACJ,sBAAsB,EAAE,cAAc,CAAC,sBAAsB,EAAE,GAAG,CAAC,uBAAuB,KAC5D;oBAC1B,UAAU,EAAE,uBAAuB,CAAC,UAAU;oBAC9C,KAAK,EAAE,uBAAuB,CAAC,KAAK;AACrC,iBAAA,CAAA,CAAC;gBACJ,KAAK,EAAE,cAAc,CAAC,KAAK;aAC5B,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAC5C,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YAC/B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAEvB,QAAA,MAAM,wBAAwB,GAA6B;AACzD,YAAA,aAAa,EAAE,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9F,YAAA,kBAAkB,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa;AACpD,YAAA,MAAM,EAAE,KAAK;SACd,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;YACrC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACxD,gBAAA,KAAK,EAAE,OAAO;AACf,aAAA,CAAC,CAAC;YACH,SAAS,CAAC,WAAW,EAAE;iBACpB,SAAS,CAAC,MAAM,IAAG;gBAClB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AAEvD,oBAAA,wBAAwB,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAChD,oBAAA,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;AACpD,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,iBAAA;AACH,aAAC,CAAC,CAAC;YACL,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;KACpD;AAED,IAAA,mBAAmB,CAAC,wBAA6B,EAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,SAAS,CAAC,aAAa,IAAG;AAC9D,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC3G,SAAC,EAAE,CAAC,KAAK,KAAI;YACX,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK;AAClC,mBAAA,KAAK,CAAC,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,mBAAmB,EAAE;gBAChG,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;AAC5D,oBAAA,KAAK,EAAE,OAAO;AACf,iBAAA,CAAC,CAAC;gBACH,SAAS,CAAC,WAAW,EAAE;qBACpB,SAAS,CAAC,MAAM,IAAG;AAClB,oBAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE;AACtC,wBAAA,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC;AACvC,wBAAA,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;AACpD,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,wBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,qBAAA;AACH,iBAAC,CAAC,CAAC;gBACL,OAAO;AACR,aAAA;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,iBAAiB,EAAE;gBAC5G,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACxD,oBAAA,KAAK,EAAE,OAAO;AACf,iBAAA,CAAC,CAAC;gBACH,SAAS,CAAC,WAAW,EAAE;qBACpB,SAAS,CAAC,MAAM,IAAG;oBAClB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACvD,wBAAA,wBAAwB,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAChD,wBAAA,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;AACpD,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,qBAAA;AACH,iBAAC,CAAC,CAAC;gBACL,OAAO;AACR,aAAA;YAED,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAC3E,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAClC,SAAC,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACjC;AAED,IAAA,sBAAsB,CAAC,OAAY,EAAA;AACjC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;AACxB,YAAA,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW;AAC3C,YAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;AAClC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,wBAAwB,CAAC,OAAY,EAAA;AACnC,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;AACxB,YAAA,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW;AAC3C,YAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;AAClC,SAAA,CAAC,CAAC;KACJ;;kHAtNU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,8lBClBjC,4oEAgCO,EAAA,MAAA,EAAA,CAAA,qoBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDdM,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,4oEAAA,EAAA,MAAA,EAAA,CAAA,qoBAAA,CAAA,EAAA,CAAA;+JAMzB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAEI,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;AEvBH,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AA0BrD,IAAA,WAAA,CACE,gBAAkC,EAAA;QAClC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QArBjB,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACtB,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;QACxB,IAAiB,CAAA,iBAAA,GAAG,gBAAgB,CAAC;QACrC,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC;AAE1B,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAE,CAAC;AAE5C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAChC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAEhC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;QAejD,IAAiB,CAAA,iBAAA,GAAG,MAAqC;AACvD,YAAA,OAAO,IAAI,CAAC,0BAA0B,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;AACzF,iBAAA,IAAI,CACH,GAAG,CAAC,YAAY,IAAG;AACjB,gBAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AAEjC,gBAAA,MAAM,aAAa,GAAG;oBACpB,aAAa,EAAE,CAAC,YAAY,CAAC;oBAC7B,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,WAAW,EAAE,YAAY,CAAC,WAAW;iBAChB,CAAC;AAExB,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvC,gBAAA,OAAO,aAAa,CAAC;AACvB,aAAC,CAAC,EACF,UAAU,CAAC,KAAK,IAAG;AACjB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,gBAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;aAC1B,CAAC,CACH,CAAC;AACN,SAAC,CAAA;QAED,IAAY,CAAA,YAAA,GAAG,MAAqC;YAClD,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5D,iBAAA,IAAI,CACH,GAAG,CAAC,QAAQ,IAAG;AACb,gBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,gBAAA,OAAO,QAAQ,CAAC;AAClB,aAAC,CAAC,EACF,UAAU,CAAC,KAAK,IAAG;AACjB,gBAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;aAC1B,CAAC,CACH,CAAC;AACN,SAAC,CAAA;AAED,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,KAA+B,KAAoC;AAC/E,YAAA,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpC,OAAO,EAAE,EAAE,CAAC;AACb,aAAA;YACD,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAA4B,CAAC;YAEtE,OAAO,IAAI,CAAC,0BAA0B,EAAE,CAAC,mBAAmB,CAC1D,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;AAC7D,iBAAA,IAAI,CACH,GAAG,CAAC,YAAY,IAAG;AACjB,gBAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AAEjC,gBAAA,MAAM,aAAa,GAAG;oBACpB,aAAa,EAAE,CAAC,YAAY,CAAC;oBAC7B,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,WAAW,EAAE,YAAY,CAAC,WAAW;iBAChB,CAAC;AAExB,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvC,gBAAA,OAAO,aAAa,CAAC;AACvB,aAAC,CAAC,EACF,UAAU,CAAC,KAAK,IAAG;AACjB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,gBAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;aAC1B,CAAC,CACH,CAAC;AACN,SAAC,CAAA;AArEC,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;KAClE;IAED,QAAQ,GAAA;KACP;AAmED,IAAA,sBAAsB,CAAC,OAAY,EAAA;AACjC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;AACxB,YAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW;AAC1C,YAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;AACjC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,wBAAwB,CAAC,OAAY,EAAA;AACnC,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;AACxB,YAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW;AAC1C,YAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;AACjC,SAAA,CAAC,CAAC;KACJ;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;KAC/B;;kHAtHU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlB,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,4mBCbjC,wnBAMyB,EAAA,MAAA,EAAA,CAAA,kiDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,oBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,wBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDOZ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,wnBAAA,EAAA,MAAA,EAAA,CAAA,kiDAAA,CAAA,EAAA,CAAA;oGAMzB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAEI,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBAEG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;AEtBH,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAMvD,IAAA,WAAA,CACE,gBAAkC,EAAA;QAClC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAJ1B,IAAQ,CAAA,QAAA,GAAmB,EAAE,CAAC;KAK7B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAED,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAED,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,qBAAqB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC3E,gBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC5D,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;;oHA7BU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAnB,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,oLCXnC,qZAMiB,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDKJ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,qZAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;oGAM3B,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;AEHF,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAKvD,IAAA,WAAA,CACE,gBAAkC,EAAA;QAClC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAJ1B,IAAQ,CAAA,QAAA,GAAmB,EAAE,CAAC;KAK7B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC9D,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;AACzD,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,qBAAqB,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI;AACzD,iBAAA,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;oHArBU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,yICXnC,yWAMiB,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDKJ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,yWAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;oGAM3B,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;;;AEKF,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAMtD,IAAA,WAAA,CACE,gBAAkC,EAAA;QAClC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAJ1B,IAAO,CAAA,OAAA,GAAkB,EAAE,CAAC;KAK3B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,oBAAoB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,OAAO,IAAG;AACzE,gBAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC1D,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;;mHA7BU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EARrB,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAAA;AACT,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACF,KAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBH,mWAKiB,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDaJ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAGxB,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,mWAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;oGAIQ,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;AEVF,MAAO,0BAA2B,SAAQ,aAAa,CAAA;AAM3D,IAAA,WAAA,CACE,gBAAkC,EAAA;QAClC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAJ1B,IAAY,CAAA,YAAA,GAAuB,EAAE,CAAC;KAKrC;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAED,WAAW,GAAA;QACT,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAED,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,yBAAyB,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,YAAY,IAAG;AACxF,gBAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,gBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,oBAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AACpE,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;;wHA7BU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,0LCXvC,qZAMiB,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDKJ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACE,8BAA8B,EAAA,QAAA,EAAA,qZAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;oGAM/B,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MEJK,sBAAsB,CAAA;IAQjC,WACU,CAAA,WAA+B,EAC/B,gBAAkC,EAAA;QADlC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAC/B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAPnC,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAChB,IAAe,CAAA,eAAA,GAAG,yBAAyB,CAAC;AAC3C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;QAC1C,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;KAKnB;IAEL,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACtC,YAAA,iBAAiB,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC5C,YAAA,iBAAiB,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC7C,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACzB,OAAO;AACR,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CACrD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAC/C,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjB,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,IAAG;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnB,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK;gBAClE,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK;gBAClE,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,QAAQ,EAAE,EAAE,CAAC,QAAQ;AACtB,aAAA,CAAC,CAAC;SACJ,EACC,KAAK,IAAG;YACN,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,oBAAoB,EAAE,0CAA0C,EAAE,CAAC,CAAC;AACjG,SAAC,CACF,CAAC;KACH;IAED,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,GAAG,oCAAoC,CAAC;KAC5F;;oHA9CU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAmB,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,4KCVnC,krEAyCO,EAAA,MAAA,EAAA,CAAA,0IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD/BM,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,krEAAA,EAAA,MAAA,EAAA,CAAA,0IAAA,CAAA,EAAA,CAAA;qIAO1B,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;ME6EI,4BAA4B,CAAA;AAQvC,IAAA,WAAA,GAAA,GAAiB;IAPV,OAAO,OAAO,CAAC,oBAAyC,EAAA;QAC7D,OAAO;AACL,YAAA,QAAQ,EAAE,4BAA4B;YACtC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;SAC1E,CAAC;KACH;;0HANU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,iBApDrC,aAAa;QACb,sBAAsB;QACtB,qBAAqB;QACrB,0BAA0B;QAC1B,sBAAsB;QACtB,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,gBAAgB;QAChB,+BAA+B;QAC/B,qBAAqB;QACrB,cAAc;QACd,qBAAqB;QACrB,yBAAyB;QACzB,qBAAqB;QACrB,qBAAqB;AACrB,QAAA,+BAA+B,aAG/B,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,uBAAuB;QACvB,kBAAkB;QAClB,eAAe;QACf,eAAe;QACf,eAAe;QACf,cAAc;QACd,aAAa;QACb,gBAAgB;QAChB,cAAc;QACd,qBAAqB;QACrB,cAAc;QACd,YAAY;QACZ,iBAAiB;QACjB,eAAe;QACf,aAAa;AACb,QAAA,SAAS,aAGT,sBAAsB;QAEtB,sBAAsB;QACtB,qBAAqB;QACrB,0BAA0B;QAC1B,sBAAsB;QAEtB,oBAAoB;QAEpB,+BAA+B,CAAA,EAAA,CAAA,CAAA;AAGtB,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,YAjCrC,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,uBAAuB;QACvB,kBAAkB;QAClB,eAAe;QACf,eAAe;QACf,eAAe;QACf,cAAc;QACd,aAAa;QACb,gBAAgB;QAChB,cAAc;QACd,qBAAqB;QACrB,cAAc;QACd,YAAY;QACZ,iBAAiB;QACjB,eAAe;QACf,aAAa;QACb,SAAS,CAAA,EAAA,CAAA,CAAA;4FAeA,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAtDxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,aAAa;wBACb,sBAAsB;wBACtB,qBAAqB;wBACrB,0BAA0B;wBAC1B,sBAAsB;wBACtB,oBAAoB;wBACpB,sBAAsB;wBACtB,oBAAoB;wBACpB,gBAAgB;wBAChB,+BAA+B;wBAC/B,qBAAqB;wBACrB,cAAc;wBACd,qBAAqB;wBACrB,yBAAyB;wBACzB,qBAAqB;wBACrB,qBAAqB;wBACrB,+BAA+B;AAChC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,uBAAuB;wBACvB,kBAAkB;wBAClB,eAAe;wBACf,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,gBAAgB;wBAChB,cAAc;wBACd,qBAAqB;wBACrB,cAAc;wBACd,YAAY;wBACZ,iBAAiB;wBACjB,eAAe;wBACf,aAAa;wBACb,SAAS;AACV,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,sBAAsB;wBAEtB,sBAAsB;wBACtB,qBAAqB;wBACrB,0BAA0B;wBAC1B,sBAAsB;wBAEtB,oBAAoB;wBAEpB,+BAA+B;AAChC,qBAAA;AACF,iBAAA,CAAA;;;AC3FD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-configcat-publicapi-ui.mjs","sources":["../../../projects/ng-configcat-publicapi-ui/src/lib/configuration.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/_services/public-api.service.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/base/base.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/_services/platform-helper.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/_services/form-helper.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/reason-dialog/reason-dialog.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/reason-dialog/reason-dialog.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/save-snackbar/save-snackbar.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/save-snackbar/save-snackbar.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/_services/setting-list-form-helper.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/expand-dialog/expand-dialog.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/expand-dialog/expand-dialog.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/_directives/input-display-normalizer.directive.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/value/value.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/value/value.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/rollout-rules/rollout-rules.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/rollout-rules/rollout-rules.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/setting.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting/setting.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting-list.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-list/setting-list.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-item/setting-item.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/setting-item/setting-item.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/setting-select/setting-select.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/setting-select/setting-select.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/product-select/product-select.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/product-select/product-select.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/config-select/config-select.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/config-select/config-select.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/environment-select/environment-select.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/selects/environment-select/environment-select.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/authorization/authorization.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/authorization/authorization.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.ts","../../../projects/ng-configcat-publicapi-ui/src/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.html","../../../projects/ng-configcat-publicapi-ui/src/lib/ng-configcat-publicapi-ui.module.ts","../../../projects/ng-configcat-publicapi-ui/src/public-api.ts","../../../projects/ng-configcat-publicapi-ui/src/ng-configcat-publicapi-ui.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class Configuration {\n basicAuthUsername?: string;\n basicAuthPassword?: string;\n basePath = 'https://api.configcat.com';\n dashboardBasePath = 'https://app.configcat.com';\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Configuration as PublicApiConfiguration,\n ProductsService, EnvironmentsService, ConfigsService,\n FeatureFlagsSettingsService, FeatureFlagSettingValuesService, MeService,\n IntegrationLinksService,\n SegmentsService\n} from 'ng-configcat-publicapi';\nimport { Configuration } from '../configuration';\n\n@Injectable({ providedIn: 'root' })\nexport class PublicApiService {\n\n constructor(\n private httpClient: HttpClient,\n @Optional() private configuration: Configuration) {\n }\n\n createMeService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new MeService(this.httpClient, basePath ?? this.configuration?.basePath,\n new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createProductsService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new ProductsService(this.httpClient, basePath ?? this.configuration?.basePath,\n new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createConfigsService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new ConfigsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createEnvironmentsService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new EnvironmentsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createSettingsService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new FeatureFlagsSettingsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createSettingValuesService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new FeatureFlagSettingValuesService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createIntegrationLinksService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new IntegrationLinksService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n createSegmentsService(basicAuthUsername: string | null = null, basicAuthPassword: string | null = null, basePath: string | null = null) {\n return new SegmentsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({\n username: basicAuthUsername ?? this.configuration?.basicAuthUsername,\n password: basicAuthPassword ?? this.configuration?.basicAuthPassword\n }));\n }\n\n getDashboardBasePath() {\n return this.configuration?.dashboardBasePath ?? 'https://app.configcat.com';\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { PublicApiService } from '../_services/public-api.service';\n\n@Component({\n selector: 'base',\n template: '<div></div>'\n})\nexport class BaseComponent {\n\n @Input() basePath: string | null = null;\n @Input() basicAuthUsername: string | null = null;\n @Input() basicAuthPassword: string | null = null;\n\n constructor(private publicApiService: PublicApiService) {\n }\n\n protected createProductsService() {\n return this.publicApiService.createProductsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n\n protected createConfigsService() {\n return this.publicApiService.createConfigsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n\n protected createEnvironmentsService() {\n return this.publicApiService.createEnvironmentsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n\n protected createSettingsService() {\n return this.publicApiService.createSettingsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n\n protected createSettingValuesService() {\n return this.publicApiService.createSettingValuesService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n\n protected createSegmentsService() {\n return this.publicApiService.createSegmentsService(this.basicAuthUsername, this.basicAuthPassword, this.basePath);\n }\n}\n","export class PlatformHelper {\n public static isChromium() {\n // https://stackoverflow.com/a/62797156/8656352\n return !!(window as any).chrome;\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { PlatformHelper } from './platform-helper';\n\nexport class FormHelper {\n\n public static getErrorMessage(control: AbstractControl, hint: string = '') {\n if (!control || control.valid) {\n return;\n }\n\n if (control.hasError('required')) {\n return `${hint} The field is required.`;\n }\n\n if (control.hasError('pattern')) {\n return 'Not a valid e-mail address.';\n }\n\n if (control.hasError('minlength')) {\n return 'The field must be at least ' + control.getError('minlength').requiredLength + ' characters long';\n }\n\n if (control.hasError('maxlength')) {\n return 'The field must be at max ' + control.getError('maxlength').requiredLength + ' characters long';\n }\n\n return;\n }\n\n\n public static handleErrors(formGroup: FormGroup, error: any) {\n if (error instanceof HttpErrorResponse) {\n const response = error as HttpErrorResponse;\n switch (response.status) {\n case 400:\n let unknownFieldName = false;\n for (const fieldName in error.error) {\n if (error.error.hasOwnProperty(fieldName) && error.error[fieldName] &&\n (error.error[fieldName]?.length > 0 || error.error[fieldName]?.Errors?.length > 0)) {\n let jsonFieldName = fieldName;\n if (jsonFieldName.length > 0) {\n jsonFieldName = jsonFieldName[0].toLowerCase() + jsonFieldName.slice(1);\n }\n\n const errorMessage = error.error[fieldName]?.Errors?.length > 0 ?\n (error.error[fieldName]?.Errors.map((e: any) => e.ErrorMessage)).join(', ')\n : error.error[fieldName];\n\n if (formGroup.controls.hasOwnProperty(jsonFieldName)) {\n formGroup.controls[jsonFieldName].setErrors({ serverSide: errorMessage });\n } else {\n unknownFieldName = true;\n }\n }\n }\n if (unknownFieldName) {\n formGroup.setErrors({ serverSide: 'Something went wrong.' });\n }\n break;\n // in these cases we do not show errors on the form, they're handled by the http\n // interceptor in src\\app\\_interceptors\\httpstatuscode.interceptor.ts\n case 402:\n case 429:\n return;\n }\n } else {\n formGroup.setErrors({ serverSide: 'Something went wrong on our side. This is not your fault. Please try again.' });\n }\n }\n\n /**\n * Converts a value representing a number to a `number` value.\n * Returns `NaN` in the case of non-numerical values.\n */\n public static normalizeNumber(value: any): number {\n switch (typeof value) {\n case \"number\":\n return value;\n case \"string\":\n // NOTE: `Number()` converts whitespace strings to 0.\n return value.trim() === '' ? NaN : Number(value);\n case \"bigint\":\n return Number(value);\n default:\n return NaN;\n }\n }\n\n /**\n * Converts a value representing a number to the normalized `string`\n * representation of the number. (e.g. `.1` --> `'0.1'`, `3.14e2` --> `'314'`).\n * Returns `''` in the case of non-numerical values or non-finite numerical values.\n */\n public static normalizeNumberStoredAsString(value: any): string {\n value = FormHelper.normalizeNumber(value);\n // NOTE: `NaN` is not considered finite.\n return isFinite(value) ? value + '' : '';\n }\n\n \n public static formatNumberForDisplay(value: number) {\n if (!isFinite(value)) {\n return '';\n }\n\n // Chromium-based browsers don't respect the `lang` attribute,\n // they use a display format corresponding to the browser's language setting.\n if (PlatformHelper.isChromium()) {\n return value.toLocaleString();\n }\n\n // Firefox (and probably other browsers) respect the `lang` attribute,\n // which is currently set to the fixed value of \"en\" (see index.html),\n // so in these cases dot should be used as the decimal separator.\n // (In case localization is implemented in the application, this logic should be revised!)\n return value + '';\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { UntypedFormGroup, UntypedFormBuilder, Validators } from '@angular/forms';\n\n@Component({\n selector: 'configcat-reason-dialog',\n templateUrl: './reason-dialog.component.html',\n styleUrls: ['./reason-dialog.component.scss']\n})\nexport class ReasonDialogComponent implements OnInit {\n\n formGroup!: UntypedFormGroup;\n\n constructor(\n public dialogRef: MatDialogRef<ReasonDialogComponent>,\n private formBuilder: UntypedFormBuilder\n ) { }\n\n ngOnInit() {\n this.formGroup = this.formBuilder.group({\n reason: ['', [Validators.required, Validators.maxLength(1000)]]\n });\n }\n\n handleSaveButton() {\n if (!this.formGroup.valid) {\n return;\n }\n\n this.dialogRef.close({ button: 'save', reason: this.formGroup.controls.reason.value });\n }\n\n cancel() {\n this.dialogRef.close({ button: 'cancel' });\n }\n}\n","<h1 mat-dialog-title>Add notes</h1>\n<form [formGroup]=\"formGroup\" (ngSubmit)=\"handleSaveButton()\">\n <div mat-dialog-content class=\"container\">\n <p>This will appear in the Why column of the Audit Log.</p>\n <mat-form-field appearance=\"outline\">\n <mat-label></mat-label>\n <textarea matInput formControlName=\"reason\" name=\"reason\" placeholder=\"I'm changing settings because...\"\n rows=\"3\"></textarea>\n <mat-error *ngIf=\"formGroup.controls.reason.invalid\">The field is required.</mat-error>\n </mat-form-field>\n </div>\n <div mat-dialog-actions>\n <button type=\"submit\" style=\"margin-right: 10px;\" mat-flat-button color=\"primary\">Add notes & Save</button>\n <button type=\"button\" mat-stroked-button (click)=\"cancel()\">Cancel</button>\n </div>\n</form>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'configcat-save-snackbar',\n templateUrl: './save-snackbar.component.html',\n styleUrls: ['./save-snackbar.component.scss']\n})\nexport class SaveSnackbarComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<p class=\"header\">Settings saved successfully.</p>","import { Injectable } from '@angular/core';\nimport { SettingValuesModel } from '../_models/settingValuesModel';\nimport { UntypedFormBuilder, Validators, UntypedFormGroup, UntypedFormArray } from '@angular/forms';\nimport { RolloutPercentageItemModel, RolloutRuleComparator, RolloutRuleModel, SettingType, SettingValueModel } from 'ng-configcat-publicapi';\nimport { FormHelper } from './form-helper';\n\n@Injectable({ providedIn: 'root' })\nexport class SettingListFormHelper {\n\n constructor(private formBuilder: UntypedFormBuilder) { }\n\n createSettingValuesFormGroup(settingValuesModel: SettingValuesModel) {\n const formGroup = this.formBuilder.group({\n settingValues: this.formBuilder.array(\n settingValuesModel.settingValues.map(sv => {\n return this.createSettingValueFormGroup(sv, settingValuesModel.readOnly);\n })),\n\n // Decorator\n environment: this.formBuilder.group({\n environmentId: [{ value: settingValuesModel.environment.environmentId, disabled: true }],\n name: [{ value: settingValuesModel.environment.name, disabled: true }],\n }),\n\n comparisonAttributes: [[]]\n });\n\n const rolloutRules = this.getAllRolloutRules(formGroup);\n const comparisonAttributes = this.getComparisonAttributes(rolloutRules);\n formGroup.patchValue({ comparisonAttributes: comparisonAttributes });\n return formGroup;\n }\n\n\n createSettingValueFormGroup(settingValueModel: SettingValueModel, readOnly: boolean) {\n if (!settingValueModel.setting) {\n return this.formBuilder.group({});\n }\n return this.formBuilder.group({\n settingId: [settingValueModel.setting.settingId],\n value: [\n { value: settingValueModel.value, disabled: readOnly },\n this.getValidatorsForSettingType(settingValueModel.setting.settingType)\n ],\n rolloutPercentageItems: settingValueModel.rolloutPercentageItems\n ? this.formBuilder.array(settingValueModel.rolloutPercentageItems.map(p => {\n // @ts-ignore()\n return this.createRolloutPercentageItemFormGroup(p, readOnly, settingValueModel.setting.settingType);\n }))\n : this.formBuilder.array([]), rolloutRules: settingValueModel.rolloutRules\n ? this.formBuilder.array(settingValueModel.rolloutRules.map(r => {\n // @ts-ignore()\n return this.createRolloutRuleFormGroup(r, readOnly, settingValueModel.setting.settingType);\n }))\n : this.formBuilder.array([]),\n\n updatedAt: [{ value: settingValueModel.updatedAt, disabled: true }],\n lastUpdaterUserEmail: [{ value: settingValueModel.lastUpdaterUserEmail, disabled: true }],\n lastUpdaterUserFullName: [{ value: settingValueModel.lastUpdaterUserFullName, disabled: true }],\n\n rolloutPercentageItemsSum: [{ value: 100, disabled: false }, [Validators.min(100), Validators.max(100)]],\n // Decoration\n setting: this.formBuilder.group({\n settingId: [{ value: settingValueModel.setting.settingId, disabled: true }],\n key: [{ value: settingValueModel.setting.key, disabled: true }],\n name: [{ value: settingValueModel.setting.name, disabled: true }],\n hint: [{ value: settingValueModel.setting.hint, disabled: true }],\n settingType: [{ value: settingValueModel.setting.settingType, disabled: true }],\n creatorEmail: [{ value: settingValueModel.setting.creatorEmail, disabled: true }],\n creatorFullName: [{ value: settingValueModel.setting.creatorFullName, disabled: true }],\n createdAt: [{ value: settingValueModel.setting.createdAt, disabled: true }]\n }),\n\n integrationLinks: settingValueModel.integrationLinks ? this.formBuilder.array(settingValueModel.integrationLinks.map(il => {\n return this.formBuilder.group({\n key: [{ value: il.key, disabled: true }],\n description: [{ value: il.description, disabled: true }],\n integrationLinkType: [{ value: il.integrationLinkType, disabled: true }],\n url: [{ value: il.url, disabled: true }],\n });\n })) : this.formBuilder.array([])\n });\n }\n\n createRolloutPercentageItemFormGroup(p: RolloutPercentageItemModel, readOnly: boolean, settingType: SettingType | undefined) {\n return this.formBuilder.group({\n percentage: [{ value: p.percentage, disabled: readOnly }, [Validators.required, Validators.min(0), Validators.max(100)]],\n value: [\n { value: p.value, disabled: readOnly },\n this.getValidatorsForSettingType(settingType)\n ],\n valueDisabled: [\n { value: p.value, disabled: true }, // For percentage item value\n ]\n });\n }\n\n createRolloutRuleFormGroup(r: RolloutRuleModel, readOnly: boolean, settingType: SettingType | undefined) {\n if (r.comparator) {\n return this.formBuilder.group({\n type: [{ value: 0, disabled: true }],\n comparisonAttribute: [{ value: r.comparisonAttribute, disabled: readOnly }, [Validators.required]],\n comparator: [{ value: r.comparator, disabled: readOnly }, [Validators.required]],\n comparisonValue: [{ value: r.comparisonValue, disabled: readOnly }, [Validators.required]],\n value: [\n { value: r.value, disabled: readOnly },\n this.getValidatorsForSettingType(settingType)\n ],\n });\n } else if (r.segmentComparator) {\n return this.formBuilder.group({\n type: [{ value: 1, disabled: true }],\n segmentComparator: [{ value: r.segmentComparator, disabled: readOnly }, [Validators.required]],\n segmentId: [{ value: r.segmentId, disabled: readOnly }, [Validators.required]],\n value: [\n { value: r.value, disabled: readOnly },\n this.getValidatorsForSettingType(settingType)\n ],\n });\n } else {\n throw new Error('Invalid rollout rule');\n }\n }\n\n private getValidatorsForSettingType(settingType: SettingType | undefined) {\n switch (settingType) {\n case SettingType.Int:\n return [Validators.required,\n Validators.min(-2147483648), Validators.max(2147483647), Validators.pattern('^[-+]?[0-9]\\\\d*$')];\n case SettingType.Double:\n return [Validators.required, Validators.min(-1.79769313486232E+308), Validators.max(1.79769313486232E+308)];\n case SettingType.String:\n case SettingType.Boolean:\n return [Validators.required];\n default:\n return [];\n }\n }\n\n private getAllRolloutRules(formGroup: UntypedFormGroup) {\n const settingValues = formGroup.get('settingValues') as UntypedFormArray;\n const rolloutRules = settingValues.controls.map(cv => (cv.get('rolloutRules') as UntypedFormArray).value);\n return rolloutRules.length === 0 ? rolloutRules : rolloutRules.reduce((a, b) => a.concat(b));\n }\n\n private getComparisonAttributes(rolloutRules: any[]) {\n if (rolloutRules.length > 0) {\n const currentComparisonAttributes = rolloutRules.map(r => r.comparisonAttribute);\n\n const defaultComparisonAttributes = ['Identifier', 'Email', 'Country'];\n const comparisonAttributes = currentComparisonAttributes.filter(c => defaultComparisonAttributes.indexOf(c) === -1);\n return Array.from(new Set(comparisonAttributes));\n } else {\n return [];\n }\n }\n\n getComparisonValueType(comparator: RolloutRuleComparator) {\n switch (comparator) {\n case RolloutRuleComparator.NumberEquals:\n case RolloutRuleComparator.NumberDoesNotEqual:\n case RolloutRuleComparator.NumberLess:\n case RolloutRuleComparator.NumberLessOrEquals:\n case RolloutRuleComparator.NumberGreater:\n case RolloutRuleComparator.NumberGreaterOrEquals:\n return 'number';\n default:\n return 'text';\n }\n }\n\n normalizeComparisonValue(comparator: RolloutRuleComparator | undefined, comparisonValue: any) {\n // In the case of number inputs value is a number but API expects\n // a string, so we need to make sure that it's converted to string.\n return comparator && this.getComparisonValueType(comparator) === \"number\"\n ? FormHelper.normalizeNumberStoredAsString(comparisonValue)\n : comparisonValue;\n }\n}\n","import { Component, OnInit, Inject, OnDestroy } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Subscription } from 'rxjs';\nimport { UntypedFormBuilder, UntypedFormGroup, UntypedFormArray, UntypedFormControl } from '@angular/forms';\n\n@Component({\n selector: 'configcat-expand-dialog',\n templateUrl: './expand-dialog.component.html',\n styleUrls: ['./expand-dialog.component.scss']\n})\nexport class ExpandDialogComponent implements OnInit, OnDestroy {\n\n formControlSubscription!: Subscription | null;\n formGroupSubscription!: Subscription | null;\n\n formGroup!: UntypedFormGroup;\n\n constructor(public dialogRef: MatDialogRef<ExpandDialogComponent>,\n private formBuilder: UntypedFormBuilder,\n @Inject(MAT_DIALOG_DATA) public data: any) {\n }\n\n ngOnInit(): void {\n if (this.data.multiline) {\n this.buildFormGroup();\n } else {\n this.formControlSubscription = this.data.control.valueChanges.subscribe((value: any) => {\n this.data.control.setValue(value, { onlySelf: true, emitEvent: false, emitModelToViewChange: true });\n this.data.control.markAsDirty();\n }, () => { }, () => { });\n }\n }\n\n values() {\n return this.formGroup.get('values') as UntypedFormArray;\n }\n\n getValueControls() {\n return this.values().controls.map(c => c as UntypedFormControl);\n }\n\n buildFormGroup() {\n const value = this.data.control.value ? this.data.control.value : '';\n const list = value.split(',').map((v: any) => v.trim()).filter((v: any) => !!v);\n this.formGroup = this.formBuilder.group({\n values: this.formBuilder.array(list.map((v: any) => this.formBuilder.control(v)))\n });\n this.formGroupSubscription = this.formGroup.valueChanges.subscribe((formGroupValue) => {\n this.data.control.setValue(formGroupValue.values\n .filter((v: any) => !!v)\n .join(','), { onlySelf: true, emitEvent: false, emitModelToViewChange: true });\n this.data.control.updateValueAndValidity();\n this.data.control.markAsDirty();\n });\n }\n\n add() {\n (this.formGroup.controls.values as UntypedFormArray).push(this.formBuilder.control(''));\n }\n\n remove(index: any) {\n (this.formGroup.controls.values as UntypedFormArray).removeAt(index);\n }\n\n ngOnDestroy() {\n if (this.formControlSubscription) {\n this.formControlSubscription.unsubscribe();\n this.formControlSubscription = null;\n }\n\n if (this.formGroupSubscription) {\n this.formGroupSubscription.unsubscribe();\n this.formGroupSubscription = null;\n }\n }\n\n close() {\n this.dialogRef.close();\n }\n}\n","<div mat-dialog-content class=\"container\">\n <mat-form-field appearance=\"outline\" *ngIf=\"!data.multiline\" subscriptSizing=\"dynamic\">\n <mat-label></mat-label>\n <textarea matInput [formControl]=\"data.control\" rows=\"10\"></textarea>\n </mat-form-field>\n <div [formGroup]=\"formGroup\" *ngIf=\"data.multiline\">\n <div *ngFor=\"let valueControl of getValueControls(); let i = index;\" class=\"value-field\">\n <mat-form-field appearance=\"outline\">\n <input matInput [formControl]=\"valueControl\" />\n </mat-form-field>\n <button (click)=\"remove(i)\" mat-icon-button type=\"button\" class=\"no-density-mat-icon-button\"\n matTooltip=\"Remove item\">\n <mat-icon>delete_outline</mat-icon>\n </button>\n </div>\n <button (click)=\"add()\" mat-stroked-button type=\"button\">\n <mat-icon>add</mat-icon>Add item\n </button>\n </div>\n</div>\n<div mat-dialog-actions>\n <button type=\"button\" mat-flat-button color=\"primary\" (click)=\"close()\">Done</button>\n</div>","import { Directive, HostListener } from '@angular/core';\n\n/**\n * Makes sure that values entered into HTML input fields are displayed in the correct format,\n * where correct means normalized (e.g. `'.10'` --> `'0.1'`) and corresponding to the locale setting.\n * \n * The format is adjusted on the blur event. Only the format of number inputs is adjusted currently.\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'input[inputDisplayNormalizer]'\n})\nexport class InputDisplayNormalizerDirective {\n constructor() { }\n\n @HostListener('blur', ['$event'])\n onChange($event: any) {\n const target = $event.target;\n if (target.type === 'number') {\n let value = target.value;\n value = value.trim() !== '' ? Number(value) : NaN;\n if (isFinite(value)) {\n // The string returned by the `value` property and the string displayed in the input field are not necessarily equal.\n // HACK: When the returned and the displayed value differs only in the decimal separator,\n // Chrome won't update the displayed value unless the value is changed first...\n target.value = '';\n target.value = value;\n }\n }\n }\n}","import { Component, Input } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ExpandDialogComponent } from '../../../dialogs/expand-dialog/expand-dialog.component';\nimport { SettingModel, SettingType } from 'ng-configcat-publicapi';\nimport { FormHelper } from '../../../_services/form-helper';\n\n@Component({\n selector: 'configcat-value',\n templateUrl: './value.component.html',\n styleUrls: [\n './slider.scss',\n './value.component.scss'\n ]\n})\nexport class ValueComponent {\n\n @Input() valueFormControl!: UntypedFormControl;\n\n @Input() setting!: SettingModel;\n\n SettingType = SettingType;\n\n constructor(private dialog: MatDialog) {\n }\n\n popOut() {\n this.dialog.open(ExpandDialogComponent, {\n width: '640px',\n data: { control: this.valueFormControl }\n });\n }\n\n formatDecimalNumber(value: number) {\n return FormHelper.formatNumberForDisplay(value);\n }\n}\n","<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","import { Component, Input } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormArray, UntypedFormControl } from '@angular/forms';\nimport { SettingType } from 'ng-configcat-publicapi';\n\n@Component({\n selector: 'configcat-rollout-percentage-items',\n templateUrl: './rollout-percentage-items.component.html',\n styleUrls: ['./rollout-percentage-items.component.scss']\n})\nexport class RolloutPercentageItemsComponent {\n\n @Input() formGroup!: UntypedFormGroup;\n @Input() readOnly = false;\n SettingType = SettingType;\n\n\n setting() {\n return this.formGroup.get('setting')?.value;\n }\n\n rolloutRules() {\n return this.formGroup.get('rolloutRules') as UntypedFormArray;\n }\n\n rolloutPercentageItems() {\n return this.formGroup.get('rolloutPercentageItems') as UntypedFormArray;\n }\n\n rolloutPercentageItemsSum() {\n return this.formGroup.get('rolloutPercentageItemsSum') as UntypedFormControl;\n }\n\n value(rolloutPercentageItem: UntypedFormGroup): UntypedFormControl {\n return this.setting().settingType === SettingType.Boolean ?\n rolloutPercentageItem.get('valueDisabled') as UntypedFormControl :\n rolloutPercentageItem.get('value') as UntypedFormControl;\n }\n\n constructor() { }\n\n percentageChanged(index: number) {\n if (this.rolloutPercentageItems().controls[index].value.percentage < 0) {\n (this.rolloutPercentageItems().controls[index] as UntypedFormGroup).controls.percentage.setValue(0);\n }\n if (this.rolloutPercentageItems().controls[index].value.percentage > 100) {\n (this.rolloutPercentageItems().controls[index] as UntypedFormGroup).controls.percentage.setValue(100);\n }\n\n if (this.rolloutPercentageItems().controls.length === 2) {\n (this.rolloutPercentageItems().controls[1 - index] as UntypedFormGroup).controls.percentage\n .setValue(100 - this.rolloutPercentageItems().controls[index].value.percentage);\n }\n\n this.updateSum();\n }\n\n updateSum() {\n if (this.rolloutPercentageItems().controls.length === 0) {\n this.rolloutPercentageItemsSum().setValue(100);\n } else {\n this.rolloutPercentageItemsSum().setValue(\n this.rolloutPercentageItems().controls.map(v => v.value.percentage)\n .reduce((a, b) => a + b)\n );\n }\n }\n\n removeRolloutPercentageItem(index: number) {\n this.rolloutPercentageItems().removeAt(index);\n this.rolloutPercentageItems().markAsDirty();\n this.updateSum();\n }\n\n removeAll() {\n this.rolloutPercentageItems().clear();\n this.rolloutPercentageItems().markAsDirty();\n this.updateSum();\n }\n\n getRolloutPercentageItemFormGroups() {\n return this.rolloutPercentageItems()?.controls?.map(c => c as UntypedFormGroup);\n }\n\n getPercentageFormControl(rolloutPercentageItem: any) {\n return rolloutPercentageItem.controls.percentage as UntypedFormControl;\n }\n}\n","<div class=\"percentage-wrapper\" [formGroup]=\"formGroup\">\n\n <div class=\"if\" *ngIf=\"rolloutRules().controls.length > 0\">\n <mat-chip-set>\n <mat-chip class=\"chip\">ELSE IF</mat-chip>\n </mat-chip-set>\n </div>\n <div class=\"grow\">\n <div class=\"percentage-row flex\"\n *ngFor=\"let rolloutPercentageItem of getRolloutPercentageItemFormGroups(); let i = index\">\n <div class=\"flex\">\n <input type=\"number\" [formControl]=\"getPercentageFormControl(rolloutPercentageItem)\"\n (input)=\"percentageChanged(i)\">%\n <span class=\"users\">of <a href=\"https://configcat.com/docs/advanced/user-object\" target=\"_blank\"\n rel=\"noopener noreferrer\">users</a>\n </span>\n </div>\n\n <div class=\"delete-option\" matTooltip=\"Remove this % option\"\n *ngIf=\"!readOnly && rolloutPercentageItems().controls.length > 2\"\n (click)=\"removeRolloutPercentageItem(i)\">\n <mat-icon>cancel</mat-icon>\n </div>\n\n <span matTooltip=\"The sum of percentages must be equal to 100.\" matTooltipPosition=\"above\"\n *ngIf=\"(i === rolloutPercentageItems().controls.length -1) && (rolloutPercentageItemsSum().invalid)\">\n <mat-icon color=\"warn\">\n error_outline\n </mat-icon>\n </span>\n\n <div class=\"value flex\">\n <span class=\"value-name\" *ngIf=\"setting().settingType !== SettingType.Boolean\">Served value:</span>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value(rolloutPercentageItem)\"\n [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"delete\" matTooltip=\"Remove % options\" (click)=\"removeAll()\" *ngIf=\"!readOnly\">\n <mat-icon>cancel</mat-icon>\n </div>\n </div>\n </div>\n</div>","import { Component, Input } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl, UntypedFormArray, Validators } from '@angular/forms';\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { valid } from 'semver';\nimport { ExpandDialogComponent } from '../../../dialogs/expand-dialog/expand-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SettingType, RolloutRuleComparator, SegmentListModel, SegmentComparator } from 'ng-configcat-publicapi';\nimport { SettingListFormHelper } from '../../../_services/setting-list-form-helper';\nimport { FormHelper } from '../../../_services/form-helper';\n\n@Component({\n selector: 'configcat-rollout-rules',\n templateUrl: './rollout-rules.component.html',\n styleUrls: ['./rollout-rules.component.scss']\n})\nexport class RolloutRulesComponent {\n\n @Input() formGroup!: UntypedFormGroup;\n @Input() readOnly = false;\n @Input() segments!: SegmentListModel[];\n\n SettingType = SettingType;\n\n defaultComparisonAttributes = ['Identifier', 'Email', 'Country'];\n\n rolloutRuleComparators = [\n { value: RolloutRuleComparator.IsOneOf, label: 'IS ONE OF (cleartext)' },\n { value: RolloutRuleComparator.IsNotOneOf, label: 'IS NOT ONE OF (cleartext)' },\n { value: RolloutRuleComparator.Contains, label: 'CONTAINS (cleartext)' },\n { value: RolloutRuleComparator.DoesNotContain, label: 'DOES NOT CONTAIN (cleartext)' },\n\n { value: RolloutRuleComparator.SemVerIsOneOf, label: 'IS ONE OF (SemVer)' },\n { value: RolloutRuleComparator.SemVerIsNotOneOf, label: 'IS NOT ONE OF (SemVer)' },\n { value: RolloutRuleComparator.SemVerLess, label: '< (SemVer)' },\n { value: RolloutRuleComparator.SemVerLessOrEquals, label: '<= (SemVer)' },\n { value: RolloutRuleComparator.SemVerGreater, label: '> (SemVer)' },\n { value: RolloutRuleComparator.SemVerGreaterOrEquals, label: '>= (SemVer)' },\n\n { value: RolloutRuleComparator.NumberEquals, label: '= (Number)' },\n { value: RolloutRuleComparator.NumberDoesNotEqual, label: '!= (Number)' },\n { value: RolloutRuleComparator.NumberLess, label: '< (Number)' },\n { value: RolloutRuleComparator.NumberLessOrEquals, label: '<= (Number)' },\n { value: RolloutRuleComparator.NumberGreater, label: '> (Number)' },\n { value: RolloutRuleComparator.NumberGreaterOrEquals, label: '>= (Number)' },\n\n { value: RolloutRuleComparator.SensitiveIsOneOf, label: 'IS ONE OF (hashed)' },\n { value: RolloutRuleComparator.SensitiveIsNotOneOf, label: 'IS NOT ONE OF (hashed)' },\n ];\n\n segmentComparators = [\n { value: SegmentComparator.IsIn, label: 'IS IN SEGMENT' },\n { value: SegmentComparator.IsNotIn, label: 'IS NOT IN SEGMENT' },\n ];\n\n constructor(\n private dialog: MatDialog,\n private settingListFormHelper: SettingListFormHelper) { }\n\n setting() {\n return this.formGroup.get('setting')?.value;\n }\n\n rolloutRules() {\n return this.formGroup.get('rolloutRules') as UntypedFormArray;\n }\n\n comparisonAttributes() {\n return this.formGroup.root.get('comparisonAttributes')?.value;\n }\n\n removeRule(index: any) {\n this.rolloutRules().removeAt(index);\n this.rolloutRules().markAsDirty();\n }\n\n onDrop(event: any) {\n const rolloutRules = this.rolloutRules().controls;\n moveItemInArray(rolloutRules, event.previousIndex, event.currentIndex);\n this.formGroup.markAsDirty();\n }\n\n attributeChanged(event: any, comparisonAttribute: UntypedFormControl) {\n if (this.defaultComparisonAttributes.indexOf(event.value) !== -1) {\n if (comparisonAttribute.value !== event.value) {\n comparisonAttribute.setValue(event.value);\n this.formGroup.markAsDirty();\n }\n } else {\n if (comparisonAttribute.value !== '') {\n comparisonAttribute.setValue('');\n this.formGroup.markAsDirty();\n }\n }\n }\n\n getPlaceHolder(rolloutRule: any) {\n if (!rolloutRule.controls.comparisonAttribute.value) {\n return '';\n }\n\n switch (rolloutRule.controls.comparator.value) {\n case RolloutRuleComparator.IsOneOf:\n case RolloutRuleComparator.IsNotOneOf:\n case RolloutRuleComparator.SensitiveIsOneOf:\n case RolloutRuleComparator.SensitiveIsNotOneOf:\n switch (rolloutRule.controls.comparisonAttribute.value.toLowerCase()) {\n case 'identifier':\n return 'e.g: user_id1, user_id2, user_id3';\n case 'email':\n return 'e.g: jane@example.com, john@example.com';\n case 'country':\n return 'e.g: France, Brazil';\n default:\n return 'e.g: value1, value2, value3';\n }\n case RolloutRuleComparator.Contains:\n case RolloutRuleComparator.DoesNotContain:\n switch (rolloutRule.controls.comparisonAttribute.value.toLowerCase()) {\n case 'identifier':\n return 'part-of-id';\n case 'email':\n return 'e.g: @example.com';\n case 'country':\n return 'e.g: United';\n default:\n return 'e.g: any-part-of-your-value-string';\n }\n case RolloutRuleComparator.SemVerIsOneOf:\n case RolloutRuleComparator.SemVerIsNotOneOf:\n return 'e.g: 1.0.0, 2.0.1';\n case RolloutRuleComparator.SemVerLessOrEquals:\n case RolloutRuleComparator.SemVerLess:\n case RolloutRuleComparator.SemVerGreater:\n case RolloutRuleComparator.SemVerGreaterOrEquals:\n return 'e.g: 1.0.0';\n case RolloutRuleComparator.NumberEquals:\n case RolloutRuleComparator.NumberDoesNotEqual:\n case RolloutRuleComparator.NumberLess:\n case RolloutRuleComparator.NumberLessOrEquals:\n case RolloutRuleComparator.NumberGreater:\n case RolloutRuleComparator.NumberGreaterOrEquals:\n return 'e.g: 42';\n }\n\n return '';\n }\n\n getComparisonValueType(rolloutRule: any) {\n return this.settingListFormHelper.getComparisonValueType(rolloutRule.controls.comparator.value);\n }\n\n getInfoClass(rolloutRule: any) {\n if (!rolloutRule.controls.comparisonAttribute.value) {\n return 'info';\n }\n\n switch (rolloutRule.controls.comparator.value) {\n case RolloutRuleComparator.IsOneOf:\n case RolloutRuleComparator.IsNotOneOf:\n case RolloutRuleComparator.Contains:\n case RolloutRuleComparator.DoesNotContain:\n return 'warn';\n default:\n return 'info';\n }\n }\n\n getInfoTooltip(rolloutRule: any) {\n if (!rolloutRule.controls.comparisonAttribute.value) {\n return 'Learn more about comparators';\n }\n\n switch (rolloutRule.controls.comparator.value) {\n case RolloutRuleComparator.IsOneOf:\n case RolloutRuleComparator.IsNotOneOf:\n case RolloutRuleComparator.Contains:\n case RolloutRuleComparator.DoesNotContain:\n return 'Consider using sensitive text comparators. Click to learn more.';\n default:\n return 'Click to learn more about comparators';\n }\n }\n\n comparatorChanged(rolloutRule: any) {\n let validators: any[] = [];\n\n switch (rolloutRule.controls.comparator.value) {\n case RolloutRuleComparator.IsOneOf:\n case RolloutRuleComparator.IsNotOneOf:\n case RolloutRuleComparator.SensitiveIsOneOf:\n case RolloutRuleComparator.SensitiveIsNotOneOf:\n case RolloutRuleComparator.Contains:\n case RolloutRuleComparator.DoesNotContain:\n validators = [Validators.required, Validators.maxLength(65535)];\n break;\n case RolloutRuleComparator.SemVerIsOneOf:\n case RolloutRuleComparator.SemVerIsNotOneOf:\n validators = [Validators.required, this.validateSemVerList];\n break;\n case RolloutRuleComparator.SemVerLessOrEquals:\n case RolloutRuleComparator.SemVerLess:\n case RolloutRuleComparator.SemVerGreater:\n case RolloutRuleComparator.SemVerGreaterOrEquals:\n validators = [Validators.required, this.validateSemVer];\n break;\n case RolloutRuleComparator.NumberEquals:\n case RolloutRuleComparator.NumberDoesNotEqual:\n case RolloutRuleComparator.NumberLess:\n case RolloutRuleComparator.NumberLessOrEquals:\n case RolloutRuleComparator.NumberGreater:\n case RolloutRuleComparator.NumberGreaterOrEquals:\n validators = [Validators.required, Validators.min(-1.79769313486232E+308), Validators.max(1.79769313486232E+308)];\n break;\n }\n\n rolloutRule.controls.comparisonValue.setValidators(validators);\n if (this.getComparisonValueType(rolloutRule) === \"number\") {\n const oldValue = rolloutRule.controls.comparisonValue.value;\n rolloutRule.controls.comparisonValue.setValue(FormHelper.normalizeNumberStoredAsString(rolloutRule.controls.comparisonValue.value));\n if (oldValue !== rolloutRule.controls.comparisonValue.value) {\n rolloutRule.controls.comparisonValue.markAsTouched();\n }\n }\n rolloutRule.controls.comparisonValue.updateValueAndValidity();\n }\n\n isListType(rolloutRule: any) {\n switch (rolloutRule.controls.comparator.value) {\n case RolloutRuleComparator.IsOneOf:\n case RolloutRuleComparator.IsNotOneOf:\n case RolloutRuleComparator.SensitiveIsOneOf:\n case RolloutRuleComparator.SensitiveIsNotOneOf:\n case RolloutRuleComparator.SemVerIsOneOf:\n case RolloutRuleComparator.SemVerIsNotOneOf:\n return true;\n default:\n return false;\n }\n }\n\n validateSemVer(c: UntypedFormControl) {\n\n if (valid(c.value) === null) {\n return {\n validateSemVer: {\n valid: false\n }\n };\n }\n\n return null;\n }\n\n validateSemVerList(c: UntypedFormControl) {\n if (!c.value) {\n return {\n validateSemVerList: {\n valid: false\n }\n };\n }\n\n const semvers = c.value.split(',').map((s: any) => s.trim());\n if (semvers.find((s: any) => s && s !== '' && valid(s) === null)) {\n return {\n validateSemVerList: {\n valid: false\n }\n };\n }\n\n return null;\n }\n\n popOut(rolloutRule: any) {\n this.dialog.open(ExpandDialogComponent, {\n width: '640px',\n data: {\n control: rolloutRule.controls.comparisonValue,\n multiline: this.isListType(rolloutRule)\n }\n });\n }\n\n\n trackByIndex(index: number): any {\n return index;\n }\n\n getRolloutRuleValueFormControl(rolloutRule: any) {\n return rolloutRule.controls.value as UntypedFormControl;\n }\n\n getRolloutRuleComparisonValueFormControl(rolloutRule: any) {\n return rolloutRule.controls.comparisonValue as UntypedFormControl;\n }\n\n getRolloutRuleComparisonAttributeFormControl(rolloutRule: any) {\n return rolloutRule.controls.comparisonAttribute as UntypedFormControl;\n }\n\n getRolloutRuleTypeFormControl(rolloutRule: any) {\n return rolloutRule.controls.type as UntypedFormControl;\n }\n\n getRolloutRuleComparatorFormControl(rolloutRule: any) {\n return rolloutRule.controls.comparator as UntypedFormControl;\n }\n\n getRolloutRuleSegmentComparatorFormControl(rolloutRule: any) {\n return rolloutRule.controls.segmentComparator as UntypedFormControl;\n }\n\n getRolloutRuleSegmentIdFormControl(rolloutRule: any) {\n return rolloutRule.controls.segmentId as UntypedFormControl;\n }\n}\n","<div [formGroup]=\"formGroup\">\n <div cdkDropList (cdkDropListDropped)=\"onDrop($event)\" [cdkDropListDisabled]=\"readOnly\"\n [cdkDropListData]=\"rolloutRules().controls\">\n <div *ngFor=\"let rolloutRule of rolloutRules().controls; trackBy: trackByIndex; let i = index\" cdkDrag>\n <div class=\"targeting-row\">\n <div class=\"fields flex\" *ngIf=\"getRolloutRuleTypeFormControl(rolloutRule).value === 0\">\n <div class=\"drag-handle\" cdkDragHandle matTooltip=\"Drag here to reorder\" matTooltipPosition=\"above\"\n *ngIf=\"!readOnly\">\n <mat-icon>drag_indicator</mat-icon>\n </div>\n <div class=\"if\">\n <mat-chip-set [class.spacing]=\"i === 0\">\n <mat-chip class=\"chip\">{{ i === 0 ? 'IF' : 'ELSE IF' }}</mat-chip>\n </mat-chip-set>\n <a href=\"https://configcat.com/docs/advanced/user-object\" target=\"_blank\"\n rel=\"noopener noreferrer\">user's</a>\n </div>\n\n <select class=\"custom-select attribute-select\" matTooltip=\"Comparison attribute\"\n matTooltipPosition=\"above\"\n (change)=\"attributeChanged($event.target, getRolloutRuleComparisonAttributeFormControl(rolloutRule))\">\n <option *ngFor=\"let comparisonAttribute of defaultComparisonAttributes\"\n [selected]=\"comparisonAttribute === getRolloutRuleComparisonAttributeFormControl(rolloutRule).value\">\n {{comparisonAttribute}}</option>\n <option\n [selected]=\"defaultComparisonAttributes.indexOf(getRolloutRuleComparisonAttributeFormControl(rolloutRule).value) === -1\">\n Custom\n </option>\n </select>\n\n\n <span class=\"attribute-span\" matTooltip=\"Custom user attribute\" matTooltipPosition=\"above\"\n [hidden]=\"defaultComparisonAttributes.indexOf(getRolloutRuleComparisonAttributeFormControl(rolloutRule).value) !== -1\">\n <span class=\"attribute-error\"\n *ngIf=\"getRolloutRuleComparisonAttributeFormControl(rolloutRule).invalid\">*</span>\n <input\n [ngClass]=\"{'invalid': getRolloutRuleComparisonAttributeFormControl(rolloutRule).invalid}\"\n type=\"text\" matInput [matAutocomplete]=\"auto\"\n [formControl]=\"getRolloutRuleComparisonAttributeFormControl(rolloutRule)\" class=\"attribute\"\n placeholder=\"e.g. Eye color\">\n </span>\n\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let option of comparisonAttributes()\" [value]=\"option\">\n {{option}}\n </mat-option>\n </mat-autocomplete>\n\n <div class=\"select-wrapper\">\n <select class=\"custom-select\" [formControl]=\"getRolloutRuleComparatorFormControl(rolloutRule)\"\n matTooltip=\"Comparator\" matTooltipPosition=\"above\"\n (change)=\"comparatorChanged(rolloutRule)\">\n <optgroup label=\"CONFIDENTIAL TEXT\">\n <option *ngFor=\"let comparator of rolloutRuleComparators.slice(16, 18)\"\n [ngValue]=\"comparator.value\">\n {{comparator.label}}\n </option>\n </optgroup>\n <optgroup label=\"TEXT\">\n <option *ngFor=\"let comparator of rolloutRuleComparators.slice(0, 4)\"\n [ngValue]=\"comparator.value\">\n {{comparator.label}}\n </option>\n </optgroup>\n <optgroup label=\"SEMANTIC VERSION\">\n <option *ngFor=\"let comparator of rolloutRuleComparators.slice(4, 10)\"\n [ngValue]=\"comparator.value\">\n {{comparator.label}}\n </option>\n </optgroup>\n <optgroup label=\"NUMBER\">\n <option *ngFor=\"let comparator of rolloutRuleComparators.slice(10, 16)\"\n [ngValue]=\"comparator.value\">\n {{comparator.label}}\n </option>\n </optgroup>\n </select>\n <div [class]=\"getInfoClass(rolloutRule)\" [matTooltip]=\"getInfoTooltip(rolloutRule)\">\n <a href=\"https://configcat.com/docs/advanced/targeting/#comparator\" target=\"_blank\"\n rel=\"noopener noreferrer\">\n <mat-icon>info</mat-icon>\n </a>\n </div>\n </div>\n\n <div class=\"comparison-value\" matTooltip=\"Comparison value\" matTooltipPosition=\"above\">\n <span class=\"error\"\n *ngIf=\"getRolloutRuleComparisonValueFormControl(rolloutRule).invalid\">*</span>\n\n <input [ngClass]=\"{'invalid': getRolloutRuleComparisonValueFormControl(rolloutRule).invalid}\"\n [formControl]=\"getRolloutRuleComparisonValueFormControl(rolloutRule)\"\n [type]=\"getComparisonValueType(rolloutRule)\" [placeholder]=\"getPlaceHolder(rolloutRule)\"\n inputDisplayNormalizer>\n <div class=\"expand\" matTooltip=\"Pop-out Editor\" (click)=\"popOut(rolloutRule)\"\n *ngIf=\"getComparisonValueType(rolloutRule)==='text'\">\n <mat-icon>height</mat-icon>\n </div>\n </div>\n\n <div class=\"delete\" matTooltip=\"Remove targeting rule\" *ngIf=\"!readOnly\" (click)=\"removeRule(i)\">\n <mat-icon>cancel</mat-icon>\n </div>\n </div>\n\n <div class=\"fields flex\" *ngIf=\"getRolloutRuleTypeFormControl(rolloutRule).value === 1\">\n <div class=\"drag-handle\" cdkDragHandle matTooltip=\"Drag here to reorder\" matTooltipPosition=\"above\"\n *ngIf=\"!readOnly\">\n <mat-icon>drag_indicator</mat-icon>\n </div>\n <div class=\"if\">\n <mat-chip-set [class.spacing]=\"i === 0\">\n <mat-chip class=\"chip\">{{ i === 0 ? 'IF' : 'ELSE IF' }}</mat-chip>\n </mat-chip-set>\n <a href=\"https://configcat.com/docs/advanced/user-object\" target=\"_blank\"\n rel=\"noopener noreferrer\">user</a>\n </div>\n\n\n <div class=\"select-wrapper\">\n <select class=\"custom-select segment-comparator\"\n [formControl]=\"getRolloutRuleSegmentComparatorFormControl(rolloutRule)\"\n matTooltip=\"Segment comparator\" matTooltipPosition=\"above\">\n <option *ngFor=\"let comparator of segmentComparators\" [ngValue]=\"comparator.value\">\n {{comparator.label}}\n </option>\n </select>\n </div>\n\n <div class=\"select-wrapper\">\n <span class=\"attribute-error\"\n *ngIf=\"getRolloutRuleSegmentIdFormControl(rolloutRule).invalid\">*</span>\n <select class=\"custom-select segment-select\"\n [formControl]=\"getRolloutRuleSegmentIdFormControl(rolloutRule)\" matTooltip=\"Segment\"\n matTooltipPosition=\"above\"\n [ngClass]=\"{'invalid': getRolloutRuleSegmentIdFormControl(rolloutRule).invalid}\">\n <option *ngFor=\"let segment of segments\" [ngValue]=\"segment.segmentId\">\n {{segment.name}}\n </option>\n </select>\n </div>\n\n\n <div class=\"delete\" matTooltip=\"Remove targeting rule\" *ngIf=\"!readOnly\" (click)=\"removeRule(i)\">\n <mat-icon>cancel</mat-icon>\n </div>\n </div>\n\n\n <div class=\"value flex\">\n <div class=\"serve\" *ngIf=\"setting().settingType !== SettingType.Boolean\">\n <mat-chip-set>\n <mat-chip class=\"chip\">Serve:</mat-chip>\n </mat-chip-set>\n </div>\n\n <configcat-value class=\"served-value\"\n [valueFormControl]=\"getRolloutRuleValueFormControl(rolloutRule)\" [setting]=\"setting()\">\n </configcat-value>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormArray, UntypedFormControl } from '@angular/forms';\nimport { RolloutPercentageItemModel, RolloutRuleComparator, RolloutRuleModel, SegmentComparator, SegmentListModel, SettingModel, SettingType } from 'ng-configcat-publicapi';\nimport { SettingListFormHelper } from '../../_services/setting-list-form-helper';\n\n@Component({\n selector: 'setting',\n templateUrl: './setting.component.html',\n styleUrls: ['./setting.component.scss']\n})\nexport class SettingComponent implements OnInit {\n\n @Input() dashboardBasePath = 'https://app.configcat.com';\n @Input() productId!: string;\n @Input() environmentId!: string;\n @Input() configId!: string;\n\n @Input() formGroup!: UntypedFormGroup;\n @Input() readOnly = false;\n @Input() canDeleteSetting = false;\n @Input() deleteSettingText = 'Delete setting';\n @Input() showEnvironmentName = false;\n @Input() segments!: SegmentListModel[];\n\n @Output() deleteSettingRequested = new EventEmitter();\n\n rulesBeingRendered = false;\n\n SettingType = SettingType;\n\n constructor(private formHelper: SettingListFormHelper) { }\n\n ngOnInit() { }\n\n environment() {\n return this.formGroup.root.get('environment')?.value;\n }\n\n setting() {\n return <SettingModel>this.formGroup.get('setting')?.value;\n }\n\n integrationLinks() {\n return this.formGroup.get('integrationLinks') as UntypedFormArray;\n }\n\n rolloutRules() {\n return this.formGroup.get('rolloutRules') as UntypedFormArray;\n }\n\n rolloutPercentageItems() {\n return this.formGroup.get('rolloutPercentageItems') as UntypedFormArray;\n }\n\n value() {\n return this.formGroup.get('value') as UntypedFormControl;\n }\n\n addRolloutRule() {\n this.rolloutRules().push(this.formHelper.createRolloutRuleFormGroup(\n <RolloutRuleModel>{\n comparisonAttribute: 'Identifier',\n comparator: RolloutRuleComparator.SensitiveIsOneOf,\n comparisonValue: '',\n value: this.setting().settingType === SettingType.Boolean ? false as unknown : null\n },\n this.readOnly, this.setting().settingType));\n this.rolloutRules().markAsDirty();\n }\n\n addSegmentRolloutRule() {\n this.rolloutRules().push(this.formHelper.createRolloutRuleFormGroup(\n <RolloutRuleModel>{\n segmentComparator: SegmentComparator.IsIn,\n value: this.setting().settingType === SettingType.Boolean ? false as unknown : null\n },\n this.readOnly, this.setting().settingType));\n this.rolloutRules().markAsDirty();\n }\n\n removeRolloutRules() {\n this.rolloutRules().clear();\n this.rolloutRules().markAsDirty();\n }\n\n addRolloutPercentageItem() {\n\n if (this.rolloutPercentageItems().length === 0) {\n switch (this.setting().settingType) {\n case SettingType.Boolean:\n this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup(\n <RolloutPercentageItemModel>{\n percentage: 0,\n value: true as unknown\n },\n this.readOnly, this.setting().settingType));\n this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup(\n <RolloutPercentageItemModel>{\n percentage: 100,\n value: false as unknown\n },\n this.readOnly, this.setting().settingType));\n break;\n\n case SettingType.String:\n case SettingType.Int:\n case SettingType.Double:\n for (let i = 0; i < 4; i++) {\n this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup(\n <RolloutPercentageItemModel>{\n percentage: 25,\n value: null\n },\n this.readOnly, this.setting().settingType));\n }\n\n break;\n }\n } else if (this.setting().settingType !== SettingType.Boolean) {\n this.rolloutPercentageItems().push(this.formHelper.createRolloutPercentageItemFormGroup(\n <RolloutPercentageItemModel>{\n percentage: 0,\n value: null\n },\n this.readOnly, this.setting().settingType));\n }\n\n this.rolloutPercentageItems().markAsDirty();\n }\n\n removeRolloutPercentageItems() {\n this.rolloutPercentageItems().clear();\n this.rolloutPercentageItems().markAsDirty();\n }\n\n deleteSetting() {\n this.deleteSettingRequested.emit({ setting: this.setting() });\n }\n\n getDashboardUrl() {\n return this.dashboardBasePath + '/' + this.productId + '/' + this.configId + '/' + this.environmentId + '?settingId=' + this.setting().settingId;\n }\n}\n","<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>","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, OnChanges } from '@angular/core';\nimport { SettingValuesModel, UpdateSettingValuesModel } from '../_models';\nimport { UntypedFormArray, UntypedFormGroup } from '@angular/forms';\nimport { forkJoin, Observable, Subscription } from 'rxjs';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ReasonDialogComponent } from '../dialogs/reason-dialog/reason-dialog.component';\nimport { SaveSnackbarComponent } from '../dialogs/save-snackbar/save-snackbar.component';\nimport { SettingListFormHelper } from '../_services/setting-list-form-helper';\nimport { RolloutPercentageItemModel, RolloutRuleModel, SegmentListModel, SettingModel, UpdateSettingValueModel } from 'ng-configcat-publicapi';\n\n@Component({\n selector: 'configcat-setting-list',\n templateUrl: './setting-list.component.html',\n styleUrls: ['./setting-list.component.scss']\n})\nexport class SettingListComponent implements OnInit, OnChanges, OnDestroy {\n\n @Input() productId!: string;\n @Input() environmentId!: string;\n @Input() configId!: string;\n @Input() dashboardBasePath = 'https://app.configcat.com';\n\n @Input() canDeleteSetting = false;\n\n @Input() onSave!: (value: UpdateSettingValuesModel) => Observable<SettingValuesModel>;\n @Input() loadSettingValues!: () => Observable<SettingValuesModel>;\n @Input() loadSegments!: () => Observable<SegmentListModel[]>;\n @Input() deleteSettingText = 'Delete setting';\n @Input() showEnvironmentName = false;\n\n @Output() deleteSettingRequested = new EventEmitter();\n @Output() formValuesChanged = new EventEmitter();\n\n formValuesChangedSubscription!: Subscription | null;\n\n loading = true;\n\n settingValues!: SettingValuesModel;\n segments!: SegmentListModel[];\n formGroup!: UntypedFormGroup;\n\n submitting = false;\n showRevertQuestion = false;\n showFeedBackMessage = false;\n readOnly = false;\n\n constructor(private formHelper: SettingListFormHelper,\n private snackBar: MatSnackBar,\n private dialog: MatDialog) { }\n\n ngOnInit(): void {\n this.reloadSettingValues();\n }\n\n ngOnChanges(): void {\n this.reloadSettingValues();\n }\n\n ngOnDestroy() {\n if (this.formValuesChangedSubscription) {\n this.formValuesChangedSubscription.unsubscribe();\n this.formValuesChangedSubscription = null;\n }\n }\n\n reloadSettingValues() {\n this.showFeedBackMessage = false;\n this.loading = true;\n forkJoin({\n segments: this.loadSegments(),\n settingValues: this.loadSettingValues()\n }).subscribe(result => {\n this.readOnly = result.settingValues.readOnly;\n this.settingValues = result.settingValues;\n this.segments = result.segments;\n this.createFormGroup();\n this.loading = false;\n },\n () => {\n this.snackBar.open('Ooops. We could not load your Feature Flags and Settings. Please try again or contact us.',\n 'Dismiss', { duration: 60000, panelClass: 'red-snackbar' });\n });\n }\n\n createFormGroup() {\n this.formGroup = this.formHelper.createSettingValuesFormGroup(this.settingValues);\n this.formValuesChangedSubscription = this.formGroup.valueChanges.subscribe(() => {\n this.formValuesChanged.emit();\n });\n }\n\n settingValuesFormArray() {\n return this.formGroup.get('settingValues') as UntypedFormArray;\n }\n\n getSettingValueFormGroups() {\n return this.settingValuesFormArray().controls.map(c => c as UntypedFormGroup);\n }\n\n private buildUpdateSettingValuesModel(settingValuesVM: UpdateSettingValueModel[]) {\n return settingValuesVM.map(settingValueVM => {\n return <UpdateSettingValueModel>\n {\n rolloutRules: settingValueVM.rolloutRules?.map(rolloutRuleVM =>\n <RolloutRuleModel>{\n comparisonAttribute: rolloutRuleVM.comparisonAttribute,\n comparator: rolloutRuleVM.comparator,\n comparisonValue: this.formHelper.normalizeComparisonValue(rolloutRuleVM.comparator, rolloutRuleVM.comparisonValue),\n segmentComparator: rolloutRuleVM.segmentComparator,\n segmentId: rolloutRuleVM.segmentId,\n value: rolloutRuleVM.value\n }),\n rolloutPercentageItems: settingValueVM.rolloutPercentageItems?.map(rolloutPercentageItemVM =>\n <RolloutPercentageItemModel>{\n percentage: rolloutPercentageItemVM.percentage,\n value: rolloutPercentageItemVM.value\n }),\n value: settingValueVM.value\n };\n });\n }\n\n submit() {\n if (!this.formGroup || !this.formGroup.valid) {\n this.showFeedBackMessage = true;\n this.formGroup.markAsTouched();\n return;\n }\n\n this.showFeedBackMessage = false;\n this.submitting = true;\n\n const updateSettingValuesModel = <UpdateSettingValuesModel>{\n settingValues: this.buildUpdateSettingValuesModel(this.formGroup.controls.settingValues.value),\n knownLastUpdatedAt: this.settingValues.lastUpdatedAt,\n forced: false\n };\n\n if (this.settingValues.reasonRequired) {\n const dialogRef = this.dialog.open(ReasonDialogComponent, {\n width: '450px'\n });\n dialogRef.afterClosed()\n .subscribe(result => {\n if (result && result.button === 'save' && result.reason) {\n\n updateSettingValuesModel.reason = result.reason;\n this.updateSettingValues(updateSettingValuesModel);\n } else {\n this.submitting = false;\n }\n });\n return;\n }\n\n this.updateSettingValues(updateSettingValuesModel);\n }\n\n updateSettingValues(updateSettingValuesModel: any) {\n this.onSave(updateSettingValuesModel).subscribe(settingValues => {\n this.settingValues = settingValues;\n this.createFormGroup();\n this.submitting = false;\n this.snackBar.openFromComponent(SaveSnackbarComponent, { duration: 5000, panelClass: 'green-snackbar' });\n }, (error) => {\n if (error.status === 400 && error.error && error.error.Reason && error.error.Reason[0] === 'Reason required') {\n const dialogRef = this.dialog.open(ReasonDialogComponent, {\n width: '450px'\n });\n dialogRef.afterClosed()\n .subscribe(result => {\n if (result && result.button === 'save' && result.reason) {\n updateSettingValuesModel.reason = result.reason;\n this.updateSettingValues(updateSettingValuesModel);\n } else {\n this.submitting = false;\n }\n });\n return;\n }\n\n this.formGroup.setErrors({ internalServerError: 'Internal server error' });\n this.showFeedBackMessage = true;\n });\n }\n\n handleRevertYes() {\n this.showRevertQuestion = false;\n this.reloadSettingValues();\n }\n\n handleRevertCancel() {\n this.showRevertQuestion = false;\n }\n\n onDeleteSettingRequested(setting: { setting: SettingModel }) {\n this.deleteSettingRequested.emit({\n setting: setting.setting,\n environment: this.settingValues.environment,\n config: this.settingValues.config\n });\n }\n}\n","<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>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { BaseComponent } from '../base/base.component';\nimport { SegmentListModel, SettingValueModel, UpdateSettingValueModel } from 'ng-configcat-publicapi';\nimport { Observable, throwError, of } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators';\nimport { PublicApiService } from '../_services';\nimport { SettingValuesModel, UpdateSettingValuesModel } from '../_models';\n\n@Component({\n selector: 'configcat-setting-item',\n templateUrl: './setting-item.component.html',\n styleUrls: ['./setting-item.component.scss']\n})\nexport class SettingItemComponent extends BaseComponent implements OnInit {\n\n @Input() productId!: string;\n @Input() environmentId!: string;\n @Input() configId!: string;\n @Input() settingId!: number;\n\n @Input() canDeleteSetting = true;\n @Input() deleteSettingText = 'Delete setting';\n @Input() showEnvironmentName = true;\n\n @Output() deleteSettingRequested = new EventEmitter();\n\n @Output() loadSucceeded = new EventEmitter();\n @Output() loadFailed = new EventEmitter();\n @Output() saveSucceeded = new EventEmitter();\n @Output() saveFailed = new EventEmitter();\n\n @Output() formValuesChanged = new EventEmitter();\n\n settingValue!: SettingValueModel;\n segments!: SegmentListModel[];\n dashboardBasePath: string;\n\n constructor(\n publicApiService: PublicApiService) {\n super(publicApiService);\n this.dashboardBasePath = publicApiService.getDashboardBasePath();\n }\n\n ngOnInit(): void {\n }\n\n loadSettingValues = (): Observable<SettingValuesModel> => {\n return this.createSettingValuesService().getSettingValue(this.environmentId, this.settingId)\n .pipe(\n map(settingValue => {\n this.settingValue = settingValue;\n\n const settingValues = {\n settingValues: [settingValue],\n readOnly: settingValue.readOnly,\n config: settingValue.config,\n environment: settingValue.environment\n } as SettingValuesModel;\n\n this.loadSucceeded.emit(settingValues);\n return settingValues;\n }),\n catchError(error => {\n this.loadFailed.emit(error);\n return throwError(error);\n })\n );\n }\n\n loadSegments = (): Observable<SegmentListModel[]> => {\n return this.createSegmentsService().getSegments(this.productId)\n .pipe(\n map(segments => {\n this.segments = segments;\n return segments;\n }),\n catchError(error => {\n return throwError(error);\n })\n );\n }\n\n handleSave = (model: UpdateSettingValuesModel): Observable<SettingValuesModel> => {\n if (model.settingValues.length === 0) {\n return of();\n }\n const updateModel = model.settingValues[0] as UpdateSettingValueModel;\n\n return this.createSettingValuesService().replaceSettingValue(\n this.environmentId, this.settingId, updateModel, model.reason)\n .pipe(\n map(settingValue => {\n this.settingValue = settingValue;\n\n const settingValues = {\n settingValues: [settingValue],\n readOnly: settingValue.readOnly,\n config: settingValue.config,\n environment: settingValue.environment\n } as SettingValuesModel;\n\n this.saveSucceeded.emit(settingValues);\n return settingValues;\n }),\n catchError(error => {\n this.saveFailed.emit(error);\n return throwError(error);\n })\n );\n }\n\n onDeleteSettingRequested(setting: any) {\n this.deleteSettingRequested.emit({\n setting: setting.setting,\n environment: this.settingValue.environment,\n config: this.settingValue.config\n });\n }\n\n onFormValuesChanged() {\n this.formValuesChanged.emit();\n }\n}\n","<configcat-setting-list [canDeleteSetting]=\"canDeleteSetting\" [onSave]=\"handleSave\"\n [loadSettingValues]=\"loadSettingValues\" [loadSegments]=\"loadSegments\"\n (deleteSettingRequested)=\"onDeleteSettingRequested($event)\" [deleteSettingText]=\"deleteSettingText\"\n [showEnvironmentName]=\"showEnvironmentName\" (formValuesChanged)=\"onFormValuesChanged()\" [productId]=\"productId\"\n [configId]=\"configId\" [environmentId]=\"environmentId\" [dashboardBasePath]=\"dashboardBasePath\">\n</configcat-setting-list>","import { Component, OnInit, Input, OnChanges } from '@angular/core';\nimport { BaseComponent } from '../../base/base.component';\nimport { SettingModel } from 'ng-configcat-publicapi';\nimport { UntypedFormControl } from '@angular/forms';\nimport { PublicApiService } from '../../_services';\n\n@Component({\n selector: 'configcat-setting-select',\n templateUrl: './setting-select.component.html',\n styleUrls: ['./setting-select.component.css']\n})\nexport class SettingSelectComponent extends BaseComponent implements OnInit, OnChanges {\n\n @Input() valueFormControl!: UntypedFormControl;\n @Input() configId!: string;\n settings: SettingModel[] = [];\n\n constructor(\n publicApiService: PublicApiService) {\n super(publicApiService);\n }\n\n ngOnInit(): void {\n this.settings = [];\n this.reloadSettings();\n }\n\n ngOnChanges() {\n this.reloadSettings();\n }\n\n reloadSettings() {\n if (this.configId) {\n this.createSettingsService().getSettings(this.configId).subscribe(settings => {\n this.settings = settings;\n if (this.settings.length > 0) {\n this.valueFormControl.setValue(this.settings[0].settingId);\n }\n });\n }\n }\n}\n","<mat-form-field class=\"form-field\" appearance=\"outline\" *ngIf=\"settings\">\n <mat-label>Feature flag or setting</mat-label>\n <mat-select placeholder=\"Feature flag or setting\" [formControl]=\"valueFormControl\" name=\"value\">\n <mat-option *ngFor=\"let setting of settings\" [value]=\"setting.settingId\">{{setting.name}}\n </mat-option>\n </mat-select>\n</mat-form-field>","import { Component, OnInit, Input } from '@angular/core';\nimport { BaseComponent } from '../../base/base.component';\nimport { ProductModel } from 'ng-configcat-publicapi';\nimport { UntypedFormControl } from '@angular/forms';\nimport { PublicApiService } from '../../_services';\n\n@Component({\n selector: 'configcat-product-select',\n templateUrl: './product-select.component.html',\n styleUrls: ['./product-select.component.css']\n})\nexport class ProductSelectComponent extends BaseComponent implements OnInit {\n\n @Input() valueFormControl!: UntypedFormControl;\n products: ProductModel[] = [];\n\n constructor(\n publicApiService: PublicApiService) {\n super(publicApiService);\n }\n\n ngOnInit(): void {\n this.products = [];\n this.createProductsService().getProducts().subscribe(products => {\n this.products = products;\n if (this.products.length > 0) {\n this.valueFormControl.setValue(this.products[0].productId, {\n emitEvent: true,\n emitModelToViewChange: true, emitViewToModelChange: true\n });\n }\n });\n }\n\n}\n","<mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Product</mat-label>\n <mat-select placeholder=\"Product\" [formControl]=\"valueFormControl\" name=\"productValue\">\n <mat-option *ngFor=\"let product of products\" [value]=\"product.productId\">{{product.name}}\n </mat-option>\n </mat-select>\n</mat-form-field>","import { Component, OnInit, Input, OnChanges, forwardRef } from '@angular/core';\nimport { BaseComponent } from '../../base/base.component';\nimport { ConfigModel } from 'ng-configcat-publicapi';\nimport { NG_VALUE_ACCESSOR, UntypedFormControl } from '@angular/forms';\nimport { PublicApiService } from '../../_services';\n\n@Component({\n selector: 'configcat-config-select',\n templateUrl: './config-select.component.html',\n styleUrls: ['./config-select.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ConfigSelectComponent),\n multi: true\n }\n ]\n})\nexport class ConfigSelectComponent extends BaseComponent implements OnInit, OnChanges {\n\n @Input() valueFormControl!: UntypedFormControl;\n @Input() productId!: string;\n configs: ConfigModel[] = [];\n\n constructor(\n publicApiService: PublicApiService) {\n super(publicApiService);\n }\n\n ngOnInit(): void {\n this.configs = [];\n this.reloadConfigs();\n }\n\n ngOnChanges() {\n this.reloadConfigs();\n }\n\n reloadConfigs() {\n if (this.productId) {\n this.createConfigsService().getConfigs(this.productId).subscribe(configs => {\n this.configs = configs;\n if (this.configs.length > 0) {\n this.valueFormControl.setValue(this.configs[0].configId);\n }\n });\n }\n }\n}\n","<mat-form-field class=\"form-field\" appearance=\"outline\" *ngIf=\"configs\">\n <mat-label>Config</mat-label>\n <mat-select placeholder=\"Config\" [formControl]=\"valueFormControl\" name=\"value\" disableOptionCentering>\n <mat-option *ngFor=\"let config of configs\" [value]=\"config.configId\">{{config.name}}</mat-option>\n </mat-select>\n</mat-form-field>","import { Component, OnInit, Input, OnChanges } from '@angular/core';\nimport { BaseComponent } from '../../base/base.component';\nimport { EnvironmentModel } from 'ng-configcat-publicapi';\nimport { UntypedFormControl } from '@angular/forms';\nimport { PublicApiService } from '../../_services';\n\n@Component({\n selector: 'configcat-environment-select',\n templateUrl: './environment-select.component.html',\n styleUrls: ['./environment-select.component.css']\n})\nexport class EnvironmentSelectComponent extends BaseComponent implements OnInit, OnChanges {\n\n @Input() valueFormControl!: UntypedFormControl;\n @Input() productId!: string;\n environments: EnvironmentModel[] = [];\n\n constructor(\n publicApiService: PublicApiService) {\n super(publicApiService);\n }\n\n ngOnInit(): void {\n this.environments = [];\n this.reloadEnvironments();\n }\n\n ngOnChanges() {\n this.reloadEnvironments();\n }\n\n reloadEnvironments() {\n if (this.productId) {\n this.createEnvironmentsService().getEnvironments(this.productId).subscribe(environments => {\n this.environments = environments;\n if (this.environments.length > 0) {\n this.valueFormControl.setValue(this.environments[0].environmentId);\n }\n });\n }\n }\n\n}\n","<mat-form-field class=\"form-field\" appearance=\"outline\" *ngIf=\"environments\">\n <mat-label>Environment</mat-label>\n <mat-select placeholder=\"Environment\" [formControl]=\"valueFormControl\" name=\"value\">\n <mat-option *ngFor=\"let environment of environments\" [value]=\"environment.environmentId\">{{environment.name}}\n </mat-option>\n </mat-select>\n</mat-form-field>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormBuilder, Validators } from '@angular/forms';\nimport { PublicApiService } from '../_services';\nimport { FormHelper } from '../_services/form-helper';\n\n@Component({\n selector: 'configcat-authorization',\n templateUrl: './authorization.component.html',\n styleUrls: ['./authorization.component.scss']\n})\nexport class AuthorizationComponent implements OnInit {\n\n formGroup!: UntypedFormGroup;\n @Input() basePath = null;\n @Input() integrationName = 'ConfigCat Feature Flags';\n @Output() authorized = new EventEmitter();\n FormHelper = FormHelper;\n\n constructor(\n private formBuilder: UntypedFormBuilder,\n private publicApiService: PublicApiService\n ) { }\n\n ngOnInit(): void {\n this.formGroup = this.formBuilder.group({\n basicAuthUsername: ['', Validators.required],\n basicAuthPassword: ['', Validators.required],\n });\n }\n\n onSubmit() {\n if (!this.formGroup.valid) {\n return;\n }\n\n const meService = this.publicApiService.createMeService(\n this.formGroup.controls.basicAuthUsername.value,\n this.formGroup.controls.basicAuthPassword.value,\n this.basePath);\n\n meService.getMe().subscribe(me => {\n this.authorized.emit({\n basicAuthUsername: this.formGroup.controls.basicAuthUsername.value,\n basicAuthPassword: this.formGroup.controls.basicAuthPassword.value,\n email: me.email,\n fullName: me.fullName\n });\n },\n () => {\n this.formGroup.setErrors({ invalidAuthorization: 'Invalid Basic auth user name or password' });\n }\n );\n }\n\n getPublicApiUrl() {\n return this.publicApiService.getDashboardBasePath() + '/my-account/public-api-credentials';\n }\n}\n","<form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div class=\"container\">\n <div class=\"form\">\n <p>\n In order to use {{integrationName}} you have to authorize first with your ConfigCat Public API\n credentials.\n </p>\n <ul>\n <li>\n <a [href]=\"getPublicApiUrl()\" target=\"_blank\">\n Get your Basic Auth user name and password</a> to access ConfigCat Public API.\n <br />\n <b>Note!</b> Your ConfigCat account's email address and password will not work here.\n </li>\n <li>\n Type your credentials here and click the Authorize button.\n </li>\n </ul>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth user name</mat-label>\n <input matInput placeholder=\"Basic auth user name\" formControlName=\"basicAuthUsername\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthUsername.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthUsername)}}\n </mat-error>\n </mat-form-field>\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth password</mat-label>\n <input matInput placeholder=\"Basic auth password\" formControlName=\"basicAuthPassword\" type=\"password\"\n autocomplete=\"current-password\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthPassword.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthPassword)}}\n </mat-error>\n </mat-form-field>\n <div>\n <button mat-flat-button color=\"primary\" type=\"submit\" class=\"submit\">Authorize</button>\n <mat-error *ngIf=\"formGroup.invalid && formGroup.errors && formGroup.errors.invalidAuthorization\">\n {{formGroup.errors.invalidAuthorization}}</mat-error>\n </div>\n </div>\n </div>\n</form>","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-delete-setting-dialog',\n templateUrl: './delete-setting-dialog.component.html',\n styleUrls: ['./delete-setting-dialog.component.scss']\n})\nexport class DeleteSettingDialogComponent {\n\n constructor(public dialogRef: MatDialogRef<DeleteSettingDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: { system: string, ticketType: string }) { }\n\n remove() {\n this.dialogRef.close({ button: 'remove' });\n }\n\n cancel() {\n this.dialogRef.close({ button: 'cancel' });\n }\n\n}\n","<h1 mat-dialog-title>Remove Feature Flag or Setting from {{data.system}}</h1>\n<div mat-dialog-actions class=\"container\">\n <button type=\"button\" mat-raised-button color=\"primary\" (click)=\"remove()\">Remove from {{data.ticketType}}</button>\n <button type=\"button\" mat-raised-button (click)=\"cancel()\">Cancel</button>\n</div>","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { SettingItemComponent } from './setting-item/setting-item.component';\nimport { SettingSelectComponent } from './selects/setting-select/setting-select.component';\nimport { ProductSelectComponent } from './selects/product-select/product-select.component';\nimport { ConfigSelectComponent } from './selects/config-select/config-select.component';\nimport { EnvironmentSelectComponent } from './selects/environment-select/environment-select.component';\nimport { Configuration } from './configuration';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AuthorizationComponent } from './authorization/authorization.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { ExpandDialogComponent } from './dialogs/expand-dialog/expand-dialog.component';\nimport { ReasonDialogComponent } from './dialogs/reason-dialog/reason-dialog.component';\nimport { SaveSnackbarComponent } from './dialogs/save-snackbar/save-snackbar.component';\nimport { RolloutPercentageItemsComponent } from './setting-list/setting/rollout-percentage-items/rollout-percentage-items.component';\nimport { RolloutRulesComponent } from './setting-list/setting/rollout-rules/rollout-rules.component';\nimport { ValueComponent } from './setting-list/setting/value/value.component';\nimport { SettingListComponent } from './setting-list/setting-list.component';\nimport { SettingComponent } from './setting-list/setting/setting.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { RouterModule } from '@angular/router';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { BaseComponent } from './base/base.component';\nimport { ApiModule } from 'ng-configcat-publicapi';\nimport { InputDisplayNormalizerDirective } from './_directives/input-display-normalizer.directive';\nimport { DeleteSettingDialogComponent } from './dialogs/delete-setting-dialog/delete-setting-dialog.component';\n\n@NgModule({\n declarations: [\n BaseComponent,\n ProductSelectComponent,\n ConfigSelectComponent,\n EnvironmentSelectComponent,\n SettingSelectComponent,\n SettingItemComponent,\n AuthorizationComponent,\n SettingListComponent,\n SettingComponent,\n RolloutPercentageItemsComponent,\n RolloutRulesComponent,\n ValueComponent,\n ReasonDialogComponent,\n SaveSnackbarComponent,\n ExpandDialogComponent,\n DeleteSettingDialogComponent,\n InputDisplayNormalizerDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n BrowserAnimationsModule,\n MatFormFieldModule,\n MatOptionModule,\n MatSelectModule,\n MatButtonModule,\n MatInputModule,\n MatIconModule,\n MatTooltipModule,\n MatChipsModule,\n MatAutocompleteModule,\n DragDropModule,\n RouterModule,\n MatSnackBarModule,\n MatDialogModule,\n MatMenuModule,\n ApiModule\n ],\n exports: [\n AuthorizationComponent,\n\n ProductSelectComponent,\n ConfigSelectComponent,\n EnvironmentSelectComponent,\n SettingSelectComponent,\n\n SettingItemComponent,\n\n InputDisplayNormalizerDirective\n ]\n})\nexport class NgConfigCatPublicApiUIModule {\n public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders<NgConfigCatPublicApiUIModule> {\n return {\n ngModule: NgConfigCatPublicApiUIModule,\n providers: [{ provide: Configuration, useFactory: configurationFactory }]\n };\n }\n\n constructor() { }\n}\n","/*\n * Public API Surface of ng-configcat-publicapi-ui\n */\n\nexport * from './lib/ng-configcat-publicapi-ui.module';\nexport * from './lib/_directives';\nexport * from './lib/_services';\nexport * from './lib/setting-item/setting-item.component';\nexport * from './lib/authorization/authorization.component';\nexport * from './lib/selects/product-select/product-select.component';\nexport * from './lib/selects/config-select/config-select.component';\nexport * from './lib/selects/environment-select/environment-select.component';\nexport * from './lib/selects/setting-select/setting-select.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PublicApiConfiguration","i2.Configuration","i1.PublicApiService","i1","i3","i2","i4","i5","i6.InputDisplayNormalizerDirective","i6.ValueComponent","i2.SettingListFormHelper","i9","i12.ValueComponent","i13.InputDisplayNormalizerDirective","i1.SettingListFormHelper","i6","i7.RolloutPercentageItemsComponent","i8.RolloutRulesComponent","i9.ValueComponent","i8.SettingComponent","i2.SettingListComponent","i2.PublicApiService"],"mappings":"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"}
|