@provoly/dashboard 1.4.57 → 1.4.59
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/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +1 -1
- package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +1 -1
- package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +1 -1
- package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +1 -1
- package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs +1 -1
- package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +1 -1
- package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +1 -1
- package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +1 -1
- package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +1 -1
- package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +1 -1
- package/esm2022/components/metadata-editor/metadata-editor.component.mjs +1 -1
- package/esm2022/components/scheme-picker/scheme-picker.component.mjs +1 -1
- package/esm2022/filters/autocomplete/autocomplete.component.mjs +1 -1
- package/esm2022/filters/list/list-filter.component.mjs +1 -1
- package/esm2022/import/components/form/import-form.component.mjs +1 -1
- package/esm2022/import/components/list/import-list.component.mjs +1 -1
- package/esm2022/lib/core/components/overlay/dialog.service.mjs +4 -2
- package/esm2022/lib/core/components/select/select.component.mjs +8 -4
- package/esm2022/lib/core/components/share/access-rights-share/access-rights-share.component.mjs +1 -1
- package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +1 -1
- package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +1 -1
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +22 -12
- package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +1 -1
- package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +90 -19
- package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -2
- package/esm2022/lib/dashboard/store/manifest.service.mjs +5 -3
- package/esm2022/pipeline-components/filter/component/filter.component.mjs +1 -1
- package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +1 -1
- package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +1 -1
- package/esm2022/restitution/components/restitution/restitution.component.mjs +1 -1
- package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +1 -1
- package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +1 -1
- package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +1 -1
- package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +1 -1
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +1 -1
- package/esm2022/toolbox/shared/presentation-form/presentation-form.component.mjs +1 -1
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +1 -1
- package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +1 -1
- package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +1 -1
- package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +1 -1
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +1 -1
- package/esm2022/widgets/widget-table/component/widget-table.component.mjs +1 -1
- package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +1 -1
- package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +5 -5
- package/fesm2022/provoly-dashboard-admin.mjs +13 -13
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +1 -1
- package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +1 -1
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +1 -1
- package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs +1 -1
- package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-import.mjs +2 -2
- package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +1 -1
- package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-search.mjs +4 -4
- package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +2 -2
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +4 -4
- package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +206 -118
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/components/overlay/dialog.service.d.ts +2 -0
- package/lib/core/components/select/select.component.d.ts +3 -2
- package/lib/dashboard/components/dashboard.component.d.ts +8 -1
- package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +18 -1
- package/lib/dashboard/store/dashboard.selectors.d.ts +17 -0
- package/lib/dashboard/store/manifest.service.d.ts +11 -2
- package/package.json +37 -37
- package/styles/components/_o-widget.scss +28 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provoly-dashboard-admin.mjs","sources":["../../../../projects/provoly/dashboard/admin/store/admin.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/store/predicates.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/store/predicates.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/store/predicates.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.model.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.service.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/store/admin-class.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/store/admin-class.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/store/admin-class.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.html","../../../../projects/provoly/dashboard/admin/components/admin.component.ts","../../../../projects/provoly/dashboard/admin/components/admin.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/store/admin-dataset.actions.ts","../../../../projects/provoly/dashboard/admin/components/shared/add-category-modal/add-category-modal.component.ts","../../../../projects/provoly/dashboard/admin/components/shared/add-category-modal/add-category-modal.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/store/admin-dataset.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/store/admin-dataset.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-dataset.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-dataset.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.html","../../../../projects/provoly/dashboard/admin/components/admin-environment/store/environment.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/store/environment.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/store/environment.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.html","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment.component.html","../../../../projects/provoly/dashboard/admin/components/admin-fields/store/fields.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.html","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-fields/store/fields.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/store/fields.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields.component.html","../../../../projects/provoly/dashboard/admin/store/admin.reducer.ts","../../../../projects/provoly/dashboard/admin/store/admin.selectors.ts","../../../../projects/provoly/dashboard/admin/components/association/association.component.ts","../../../../projects/provoly/dashboard/admin/components/association/association.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.html","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/store/metadata-rules.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/store/metadata-rules.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/store/metadata-rules.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/store/admin-metadata-user.action.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/store/admin-metadata-user.selector.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-user/store/admin-user.action.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/store/admin-user.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/store/admin-user.selector.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/admin-user-select/admin-user-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/admin-user-select/admin-user-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-menu/admin-menu.component.ts","../../../../projects/provoly/dashboard/lib/core/components/base-menu/base-menu.component.html","../../../../projects/provoly/dashboard/admin/components/admin-title/admin-title.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-title/admin-title.component.html","../../../../projects/provoly/dashboard/admin/components/admin-layout/admin-layout.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-layout/admin-layout.component.html","../../../../projects/provoly/dashboard/admin/components/admin-links/store/links.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/store/links.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/store/links.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/admin-links-new/admin-links-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/admin-links-new/admin-links-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-links/admin-links.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/admin-links.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-metadata-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-metadata-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-metadata-user.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-metadata-user.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.html","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates.component.html","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.html","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types.component.html","../../../../projects/provoly/dashboard/admin/components/admin-user/admin-user.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/admin-user.component.html","../../../../projects/provoly/dashboard/admin/admin-routing.module.ts","../../../../projects/provoly/dashboard/admin/store/admin.service.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/store/admin-class.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/store/environment.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/store/fields.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/store/links.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/store/metadata-rules.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/store/admin-metadata-user.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/store/predicates.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/store/admin-user.effects.ts","../../../../projects/provoly/dashboard/admin/i18n/en.translations.ts","../../../../projects/provoly/dashboard/admin/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/admin/store/admin.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/store/admin-dataset.service.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/store/admin-dataset.effects.ts","../../../../projects/provoly/dashboard/admin/admin.module.ts","../../../../projects/provoly/dashboard/admin/provoly-dashboard-admin.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { Associations, BaseToolboxAction } from '@provoly/dashboard';\n\nexport const AdminActions = {\n highlightMenu: createAction('[Admin] selecting highLight', props<{ menu: string }>()),\n toggleMenu: createAction('[Admin] Toggle menu'),\n routeTo: createAction('[Admin] route to', props<{ path: string; params?: { [p: string]: string } }>()),\n resetActions: createAction('[Admin] reset toolbox main and sub actions'),\n mainActions: createAction('[Admin] set toolbox main actions', props<{ actions: BaseToolboxAction[] }>()),\n subActions: createAction('[Admin] set toolbox sub actions', props<{ actions: BaseToolboxAction[] }>()),\n togglePanel: createAction('[Admin] Toggle panel', props<{ panelOpen: boolean }>()),\n selectComponentType: createAction(\n '[Admin] Select component Type for panel ',\n props<{ componentType: string | null }>()\n ),\n fetchClassAssociations: createAction('[Admin] Fetch Class associations', props<{ id: string }>()),\n fetchFieldAssociations: createAction('[Admin] Fetch field associations', props<{ id: string }>()),\n fetchAttributeAssociations: createAction('[Admin] Fetch Attribute associations', props<{ id: string }>()),\n fetchDatasetAssociations: createAction('[Admin] Fetch Dataset associations', props<{ id: string }>()),\n fetchAssociationsSuccess: createAction('[Admin] Fetch Associations Success', props<{ association: Associations }>()),\n fetchAssociationsFailure: createAction('[Admin] Fetch Associations failure', props<{ error: any }>())\n};\n","import { createAction, props } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\n\nexport const PredicatesActions = {\n loadPredicates: createAction('[Admin/Predicates] Load Predicates'),\n loadPredicatesSuccess: createAction(\n '[Admin/Predicates Api] Load Predicates Success',\n props<{ datas: Predicate[] }>()\n ),\n loadPredicatesFailure: createAction('[Admin/Predicates Api] Load Predicates Failure', props<{ error: any }>()),\n\n savePredicate: createAction('[Admin/Predicates] Save Predicate', props<{ predicate: Predicate; route: string }>()),\n savePredicateSuccess: createAction('[Admin/Predicates Api] Save Predicate Success', props<{ route: string }>()),\n savePredicateFailure: createAction('[Admin/Predicates Api] Save Predicate Failure', props<{ error: any }>()),\n\n selectPredicate: createAction('[Admin/Predicates] Select Predicate', props<{ id: string }>()),\n selectPredicateSuccess: createAction('[Admin/Predicates Api] Select Predicate Success', props<{ data: Predicate }>()),\n selectPredicateFailure: createAction('[Admin/Predicates Api] Select Predicate Failure', props<{ error: any }>())\n};\n","import { createAction, props } from '@ngrx/store';\nimport { AbacRule, AbacRulesConditions, ConditionType, NormalizedCondition, OperatorType } from './abac-rules.model';\n\nexport const AbacRulesActions = {\n loadAbacRules: createAction('[Admin/Abac] Load Abac rules'),\n loadAbacRulesSuccess: createAction('[Admin/Abac Api] Load Abac rule Success', props<{ datas: AbacRule[] }>()),\n loadAbacRulesFailure: createAction('[Admin/Abac Api] Load Abac rule Failure', props<{ error: any }>()),\n\n saveEditAbacRule: createAction('[Admin/Abac] build abac rules', props<{ redirect: string }>()),\n saveAbacRuleSuccess: createAction('[Admin/Abac Api] Save Abac rule Success', props<{ redirect: string }>()),\n saveAbacRuleFailure: createAction('[Admin/Abac Api] Save Abac rule Failure', props<{ error: any }>()),\n\n cancelAbacRuleEdition: createAction('[Admin/Abac Api] Cancel Abac Rule edition', props<{ redirect: string }>()),\n\n initEditAbacRule: createAction('[Admin/Abac] init edit abac rule', props<{ rule: AbacRule }>()),\n resetEditAbacRule: createAction('[Admin/Abac] reset edit abac rule'),\n updateEditAbacRuleByProperty: createAction(\n '[Admin/Abac] update edit abac rule property',\n props<{ property: keyof AbacRule; value: string }>()\n ),\n updateEditAbacRule: createAction('[Admin/Abac] update edit abac rule', props<{ rule: AbacRule }>()),\n initEditAbacRuleConditions: createAction(\n '[Admin/Abac] init edit abac rule conditions',\n props<{ condition: AbacRulesConditions }>()\n ),\n createEditAbacRuleMetadataCondition: createAction(\n '[Admin/Abac] create edit metadata condition',\n props<{ metadataId: string; parentId: string }>()\n ),\n createEditAbacRuleAttributeCondition: createAction(\n '[Admin/Abac] create edit attribute condition',\n props<{ attributeId: string; classId: string; parentId: string }>()\n ),\n createEditAbacRuleNestedCondition: createAction(\n '[Admin/Abac] create edit nested condition',\n props<{ parentId: string }>()\n ),\n addEditAbacRuleConditions: createAction(\n '[Admin/Abac] add edit condition metadata',\n props<{ condition: NormalizedCondition }>()\n ),\n addEditAbacRuleConditionsToParent: createAction(\n '[Admin/Abac] add edit condition to Parent',\n props<{ conditionId: string; parentId: string }>()\n ),\n updateEditAbacRuleConditionProperty: createAction(\n '[Admin/Abac] update condition value',\n props<{\n conditionId: string;\n property:\n | { type: 'operator'; value: OperatorType }\n | { type: 'value'; value: any }\n | { type: 'type'; value: ConditionType };\n }>()\n ),\n removeEditAbacRuleLeafCondition: createAction('[Admin/Abac] delete leaf condition', props<{ conditionId: string }>()),\n removeEditAbacRuleConditionFromComposed: createAction(\n '[Admin/Abac] remove children condition',\n props<{ conditionId: string; childrenId: string }>()\n ),\n\n fetchAbacRule: createAction('[Admin/Abac] Fetch Abac rules', props<{ id: string }>()),\n fetchAbacRuleSuccess: createAction('[Admin/Abac Api] Fetch Abac rule Success', props<{ rule: AbacRule }>()),\n fetchAbacRuleFailure: createAction('[Admin/Abac Api] Fetch Abac rule Failure', props<{ error: any }>()),\n\n loadEditAbacRule: createAction('[Admin/Abac] load edit abac rule', props<{ rule: AbacRule }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { PredicatesActions } from './predicates.actions';\n\nexport const predicatesFeatureKey = '@pry/admin/predicates';\n\nexport interface PredicateState {\n predicates: Predicate[];\n loading: boolean;\n currentPredicate?: Predicate;\n}\n\nexport const initialPredicateState: PredicateState = {\n predicates: [],\n loading: false\n};\n\nexport const predicateReducer = createReducer(\n initialPredicateState,\n on(PredicatesActions.loadPredicates, (state, action) => ({\n ...state,\n loading: true,\n currentPredicate: undefined,\n nextNum: undefined\n })),\n on(PredicatesActions.loadPredicatesSuccess, (state, action) => ({\n ...state,\n predicates: [...action.datas],\n loading: false\n })),\n on(PredicatesActions.loadPredicatesFailure, (state, action) => ({\n ...state,\n loading: false\n })),\n on(PredicatesActions.savePredicate, (state, action) => ({\n ...state,\n loading: true\n })),\n on(PredicatesActions.savePredicateSuccess, (state, action) => ({\n ...state,\n loading: false\n })),\n on(PredicatesActions.savePredicateFailure, (state, action) => ({\n ...state,\n loading: false\n })),\n\n on(PredicatesActions.selectPredicate, (state, action) => ({\n ...state,\n loading: true\n })),\n on(PredicatesActions.selectPredicateSuccess, (state, action) => ({\n ...state,\n currentPredicate: action.data,\n loading: false\n })),\n on(PredicatesActions.selectPredicateFailure, (state, action) => ({\n ...state,\n loading: false\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromPredicates from './predicates.reducer';\n\nconst feature = createFeatureSelector<fromPredicates.PredicateState>(fromPredicates.predicatesFeatureKey);\n\nconst predicates = createSelector(feature, (state) => state?.predicates);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst currentPredicate = createSelector(feature, (state) => state?.currentPredicate);\nconst currentPredicateId = createSelector(currentPredicate, (pred) => pred?.id);\n\nexport const PredicatesSelectors = {\n feature,\n predicates,\n loading,\n currentPredicate,\n currentPredicateId\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { AbacRulesActions } from './abac-rules.actions';\nimport { AbacRule, AbacRulesConditions } from './abac-rules.model';\n\nexport const abacRulesFeatureKey = '@pry/admin/abacRules';\n\nexport interface AbacRuleState {\n abacRules: AbacRule[];\n loading: boolean;\n editAbacRule: AbacRule | null;\n editAbacRuleConditions: AbacRulesConditions;\n}\n\nexport const initialAbacRuleState: AbacRuleState = {\n abacRules: [],\n loading: false,\n editAbacRule: null,\n editAbacRuleConditions: {\n masterId: null,\n ids: [],\n entities: {}\n }\n};\n\nexport const abacRuleReducer = createReducer(\n initialAbacRuleState,\n on(AbacRulesActions.loadAbacRules, (state) => ({\n ...state,\n loading: true\n })),\n on(AbacRulesActions.loadAbacRulesSuccess, (state, action) => ({\n ...state,\n abacRules: [...action.datas],\n loading: false\n })),\n on(AbacRulesActions.loadAbacRulesFailure, (state) => ({\n ...state,\n loading: false\n })),\n\n on(AbacRulesActions.saveAbacRuleSuccess, (state) => ({\n ...state,\n loading: false\n })),\n on(AbacRulesActions.saveAbacRuleFailure, (state) => ({\n ...state,\n loading: false\n })),\n\n on(AbacRulesActions.resetEditAbacRule, (state) => ({\n ...state,\n editAbacRule: null,\n editAbacRuleConditions: {\n masterId: null,\n entities: {},\n ids: []\n }\n })),\n on(AbacRulesActions.updateEditAbacRule, (state, action) => ({\n ...state,\n editAbacRule: action.rule\n })),\n on(AbacRulesActions.updateEditAbacRuleByProperty, (state, action) => ({\n ...state,\n editAbacRule: state.editAbacRule ? { ...state?.editAbacRule, [action.property]: action.value } : null\n })),\n on(AbacRulesActions.initEditAbacRuleConditions, (state, action) => ({\n ...state,\n editAbacRuleConditions: action.condition\n })),\n on(AbacRulesActions.addEditAbacRuleConditions, (state, action) => ({\n ...state,\n editAbacRuleConditions: {\n ...state.editAbacRuleConditions,\n ids: [...state.editAbacRuleConditions.ids, action.condition.id],\n entities: {\n ...state.editAbacRuleConditions.entities,\n [action.condition.id]: action.condition\n }\n }\n })),\n on(AbacRulesActions.addEditAbacRuleConditionsToParent, (state, action) => ({\n ...state,\n editAbacRuleConditions: {\n ...state.editAbacRuleConditions,\n entities: {\n ...state.editAbacRuleConditions.entities,\n [action.parentId]: {\n ...state.editAbacRuleConditions.entities[action.parentId],\n composed: [...(state.editAbacRuleConditions.entities[action.parentId].composed ?? []), action.conditionId]\n }\n }\n }\n })),\n on(AbacRulesActions.updateEditAbacRuleConditionProperty, (state, action) => ({\n ...state,\n editAbacRuleConditions: {\n ...state.editAbacRuleConditions,\n entities: {\n ...state.editAbacRuleConditions.entities,\n [action.conditionId]: {\n ...state.editAbacRuleConditions.entities[action.conditionId],\n [action.property.type]: action.property.value\n }\n }\n }\n })),\n on(AbacRulesActions.removeEditAbacRuleLeafCondition, (state, action) => {\n const ids = [...state.editAbacRuleConditions.ids.filter((id) => id !== action.conditionId)];\n const { [action.conditionId]: value, ...entities } = { ...state.editAbacRuleConditions.entities };\n return {\n ...state,\n editAbacRuleConditions: {\n ...state.editAbacRuleConditions,\n ids,\n entities\n }\n };\n }),\n on(AbacRulesActions.removeEditAbacRuleConditionFromComposed, (state, action) => {\n const composed = [\n ...(state.editAbacRuleConditions.entities[action.conditionId]?.composed?.filter(\n (id) => id !== action.childrenId\n ) ?? [])\n ];\n return {\n ...state,\n editAbacRuleConditions: {\n ...state.editAbacRuleConditions,\n entities: {\n ...state.editAbacRuleConditions.entities,\n [action.conditionId]: {\n ...state.editAbacRuleConditions.entities[action.conditionId],\n composed\n }\n }\n }\n };\n })\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { AbacRulesConditions } from './abac-rules.model';\nimport * as fromAbacRules from './abac-rules.reducer';\n\nconst feature = createFeatureSelector<fromAbacRules.AbacRuleState>(fromAbacRules.abacRulesFeatureKey);\n\nconst abacRules = createSelector(feature, (state) => state?.abacRules);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst editAbacRule = createSelector(feature, (state) => state?.editAbacRule);\nconst editAbacRuleConditions = createSelector(feature, (state) => state?.editAbacRuleConditions);\nconst editAbacRuleType = createSelector(editAbacRule, (rule) => rule?.type);\nconst editAbacRuleConditionsMasterId = createSelector(editAbacRuleConditions, (conditions) => conditions?.masterId);\nconst editAbacRuleConditionsTypeSelected = createSelector(editAbacRuleConditions, (conditions) =>\n (conditions?.ids ?? []).find((id) => ['METADATA', 'ATTRIBUTE'].includes(conditions.entities[id].type))\n);\nconst editAbacRuleConditionsFirstAttribute = createSelector(editAbacRuleConditions, (conditions) => {\n const id = (conditions?.ids ?? []).find((id) => conditions.entities[id].type === 'ATTRIBUTE');\n const attribute = id !== undefined ? conditions.entities[id].attribute : undefined;\n return attribute;\n});\n\nconst editAbacRuleConditionsById = (id: string) =>\n createSelector(editAbacRuleConditions, (conditions: AbacRulesConditions) => conditions.entities[id]);\n\nexport const AbacRulesSelectors = {\n feature,\n abacRules,\n loading,\n editAbacRule,\n editAbacRuleConditions,\n editAbacRuleType,\n editAbacRuleConditionsMasterId,\n editAbacRuleConditionsTypeSelected,\n editAbacRuleConditionsFirstAttribute,\n editAbacRuleConditionsById\n};\n","import { Component, EventEmitter, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-abac-select-metadata',\n templateUrl: './select-metadata.component.html'\n})\nexport class SelectMetadataComponent {\n metadata$: Observable<IMetadata[]>;\n\n @Output() metadataSelected = new EventEmitter<string>();\n\n constructor(private store: Store<any>) {\n this.metadata$ = this.store.select(MetadataSelectors.metadata);\n }\n\n onSelectMetadata(id: string): void {\n this.metadataSelected.emit(id);\n }\n}\n","@for (metadata of metadata$ | async; track metadata) {\n <button class=\"m-pry-overlay-item\" (click)=\"onSelectMetadata(metadata.id)\">\n {{ metadata.name }}\n </button>\n}\n","import { Component, EventEmitter, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassSelectors } from '@provoly/dashboard';\nimport { combineLatest, map, mergeMap, Observable, of, switchMap } from 'rxjs';\nimport { AbacRulesSelectors } from '../../store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-abac-select-attribute',\n templateUrl: './select-attribute.component.html'\n})\nexport class SelectAttributeComponent {\n @Output() attributeSelected = new EventEmitter<{ attribute: string; class: string }>();\n classes$: Observable<Class[]>;\n\n constructor(private store: Store<any>) {\n const classSelected$ = this.store\n .select(AbacRulesSelectors.editAbacRuleConditionsFirstAttribute)\n .pipe(switchMap((attribute) => this.store.select(ClassSelectors.classByAttributeId(attribute ?? ''))));\n this.classes$ = this.store.select(ClassSelectors.classes).pipe(\n mergeMap((classes) => combineLatest([of(classes), classSelected$])),\n map(([classes, clazz]) => (clazz ? classes.filter((c) => c.id === clazz.id) : classes))\n );\n }\n\n onSelectAttribute(classId: string, attributeId: string): void {\n this.attributeSelected.emit({ attribute: attributeId, class: classId });\n }\n}\n","@for (class of classes$ | async; track class) {\n @for (attribute of class.attributes; track attribute) {\n <button\n class=\"m-pry-overlay-item\"\n (click)=\"onSelectAttribute(class.id, attribute.id)\"\n >\n {{ class.name }} - {{ attribute.name }}\n </button>\n }\n}\n","export interface AbacRule {\n id: string;\n name: string;\n type: AbacRuleType;\n predicate: string;\n condition?: Condition;\n description: string;\n active: boolean;\n}\n\nexport type AbacRuleType = 'METADATA' | 'ATTRIBUTE';\n\nexport type ConditionType = 'METADATA' | 'ATTRIBUTE' | 'OR' | 'AND';\n\nexport interface Condition {\n type: ConditionType;\n composed?: Array<Condition>;\n attribute?: string;\n metadata?: string;\n value?: string | number;\n operator?: OperatorType;\n}\n\nexport interface NormalizedCondition {\n id: string;\n type: ConditionType;\n parentId: string;\n composed?: string[];\n attribute?: string;\n metadata?: string;\n value?: string | number;\n operator?: OperatorType;\n}\n\nexport type OperatorType =\n | 'EQUALS'\n | 'CONTAINS'\n | 'START_WITH'\n | 'END_WITH'\n | 'GREATER_THAN'\n | 'LOWER_THAN'\n | 'INNER_BOUNDS'\n | 'OUTER_BOUNDS'\n | 'NOT_EQUALS'\n | 'IN'\n | 'NOT_IN';\n\nexport interface OperatorOption {\n type: 'string' | 'number' | 'date';\n operator: OperatorType;\n translation: string;\n twoValues: boolean;\n}\n\nexport const OPERATOR_OPTIONS: OperatorOption[] = [\n { type: 'string', operator: 'CONTAINS', translation: '@pry.search.operator.contains', twoValues: false },\n { type: 'string', operator: 'START_WITH', translation: '@pry.search.operator.startWith', twoValues: false },\n { type: 'string', operator: 'END_WITH', translation: '@pry.search.operator.endWith', twoValues: false },\n { type: 'string', operator: 'EQUALS', translation: '@pry.search.operator.equalsString', twoValues: false },\n { type: 'string', operator: 'NOT_EQUALS', translation: '@pry.search.operator.notEqualsString', twoValues: false },\n { type: 'number', operator: 'EQUALS', translation: '@pry.search.operator.equalsNumber', twoValues: false },\n { type: 'number', operator: 'NOT_EQUALS', translation: '@pry.search.operator.notEqualsString', twoValues: false },\n { type: 'number', operator: 'GREATER_THAN', translation: '@pry.search.operator.greaterThanNumber', twoValues: false },\n { type: 'number', operator: 'LOWER_THAN', translation: '@pry.search.operator.lowerThanNumber', twoValues: false },\n { type: 'number', operator: 'INNER_BOUNDS', translation: '@pry.search.operator.innerBoundsNumber', twoValues: true },\n { type: 'number', operator: 'OUTER_BOUNDS', translation: '@pry.search.operator.outerBoundsNumber', twoValues: true },\n { type: 'date', operator: 'EQUALS', translation: '@pry.search.operator.equalsNumber', twoValues: false },\n { type: 'date', operator: 'NOT_EQUALS', translation: '@pry.search.operator.notEqualsNumber', twoValues: false },\n { type: 'date', operator: 'GREATER_THAN', translation: '@pry.search.operator.greaterThanDate', twoValues: false },\n { type: 'date', operator: 'LOWER_THAN', translation: '@pry.search.operator.lowerThanDate', twoValues: false },\n { type: 'date', operator: 'INNER_BOUNDS', translation: '@pry.search.operator.innerBoundsDate', twoValues: true },\n { type: 'date', operator: 'OUTER_BOUNDS', translation: '@pry.search.operator.outerBoundsDate', twoValues: true },\n { type: 'number', operator: 'IN', translation: '@pry.search.operator.in', twoValues: false },\n { type: 'number', operator: 'NOT_IN', translation: '@pry.search.operator.not_in', twoValues: false },\n { type: 'date', operator: 'IN', translation: '@pry.search.operator.in', twoValues: false },\n { type: 'date', operator: 'NOT_IN', translation: '@pry.search.operator.not_in', twoValues: false },\n { type: 'string', operator: 'IN', translation: '@pry.search.operator.in', twoValues: false },\n { type: 'string', operator: 'NOT_IN', translation: '@pry.search.operator.not_in', twoValues: false }\n];\n\nexport interface AbacRulesConditions {\n masterId: string | null;\n ids: string[];\n entities: {\n [key: string]: NormalizedCondition;\n };\n}\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Attribute, Class, ClassSelectors, Field, FieldType, IMetadata } from '@provoly/dashboard';\nimport { combineLatest, filter, map, mergeMap, Observable, of } from 'rxjs';\nimport { AbacRulesActions } from '../../store/abac-rules.actions';\nimport { NormalizedCondition, OPERATOR_OPTIONS, OperatorOption, OperatorType } from '../../store/abac-rules.model';\nimport { AbacRulesSelectors } from '../../store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-attribute-condition',\n templateUrl: './attribute-condition.component.html'\n})\nexport class AttributeConditionComponent {\n panelOpen = false;\n @Input() readonly = false;\n\n @Input()\n set id(val: string) {\n this._id = val;\n this.assignObservables();\n }\n\n private _id?: string;\n field$: Observable<Field | null> = of(null);\n attribute$: Observable<Attribute | undefined> = of(undefined);\n metadata$: Observable<IMetadata | undefined> = of(undefined);\n condition$: Observable<NormalizedCondition | null> = of(null);\n operatorOptions$: Observable<OperatorOption[]> = of([]);\n\n constructor(private store: Store<any>) {}\n\n private assignObservables(): void {\n this.condition$ = this.store.select(AbacRulesSelectors.editAbacRuleConditionsById(this._id ?? ''));\n this.attribute$ = this.condition$.pipe(\n filter((cond): cond is NormalizedCondition => cond !== null && cond !== undefined),\n mergeMap((cond) =>\n combineLatest([of(cond), this.store.select(ClassSelectors.classByAttributeId(cond.attribute ?? ''))])\n ),\n map(([cond, klass]) => {\n return (klass as Class)?.attributes.find((a) => a.id === cond.attribute);\n })\n );\n this.field$ = this.attribute$.pipe(\n filter((attr): attr is Attribute => attr !== undefined),\n map((attr) => attr.field)\n );\n\n this.operatorOptions$ = this.field$.pipe(\n filter((field): field is Field => field !== undefined),\n map((field: Field) => {\n const fieldType = field.type;\n if (fieldType === FieldType.STRING || fieldType === FieldType.KEYWORD) {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'string');\n } else if (fieldType === FieldType.INTEGER || fieldType === FieldType.DECIMAL || fieldType === FieldType.LONG) {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'number');\n } else {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'date');\n }\n })\n );\n }\n\n onChangeOperator(operator: OperatorType, conditionId: string) {\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'operator', value: operator }\n })\n );\n }\n\n onChangeValue(evt: any, conditionId: string): void {\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'value', value: evt.target.value }\n })\n );\n }\n\n onOpenPanel(): void {\n this.panelOpen = true;\n }\n\n onClosePanel(): void {\n this.panelOpen = false;\n }\n\n onDeleteAttributeCondition(conditionId: string, parentId: string): void {\n this.store.dispatch(\n AbacRulesActions.removeEditAbacRuleConditionFromComposed({ conditionId: parentId, childrenId: conditionId })\n );\n }\n}\n","@if (condition$ | async; as condition) {\n @if (attribute$ | async; as attr) {\n @if (field$ | async; as field) {\n <div class=\"o-pry-attribute-condition\">\n @if (!readonly) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n (click)=\"onOpenPanel()\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.admin.abac-rules.delete' | i18n }}</span>\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n (backdropClick)=\"onClosePanel()\"\n >\n <div class=\"m-pry-overlay-panel-wrapper\">\n <div class=\"m-pry-overlay-panel\">\n <button\n class=\"pry-condition-delete\"\n (click)=\"onDeleteAttributeCondition(condition.id, condition.parentId)\"\n >\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </div>\n </div>\n </ng-template>\n </button>\n }\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"attr_name\">Name</label>\n <input id=\"attr_name\" class=\"a-form-field\" type=\"text\" [value]=\"attr.name\" readonly />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_operator\">???</label>\n <pry-select\n id=\"condition_operator\"\n [style.width.px]=\"160\"\n [items]=\"operatorOptions$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n [ngModel]=\"condition.operator\"\n (ngModelChange)=\"onChangeOperator($event, condition.id)\"\n [disabled]=\"readonly\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_value\">Name</label>\n <input\n id=\"condition_value\"\n [readonly]=\"readonly\"\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"condition.value\"\n (focusout)=\"onChangeValue($event, condition.id)\"\n />\n </div>\n </div>\n } @else {\n Loading field ...\n }\n } @else {\n Loading attribute ...\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { filter, Observable, of, switchMap } from 'rxjs';\nimport { AbacRulesActions } from '../../store/abac-rules.actions';\nimport { NormalizedCondition, OperatorType } from '../../store/abac-rules.model';\nimport { AbacRulesSelectors } from '../../store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-metadata-condition',\n templateUrl: './metadata-condition.component.html'\n})\nexport class MetadataConditionComponent {\n @Input() readonly = false;\n\n @Input()\n set id(val: string) {\n this._id = val;\n this.assignObservables();\n }\n\n private _id?: string;\n metadata$: Observable<IMetadata | undefined> = of(undefined);\n condition$: Observable<NormalizedCondition | null> = of(null);\n deleteConditionOpen = false;\n metadataUsers$: Observable<IMetadata[]>;\n metadataUserOpen = false;\n\n operators$ = of([\n { operator: 'EQUALS', translation: '@pry.search.operator.equalsString' },\n { operator: 'NOT_EQUALS', translation: '@pry.search.operator.notEqualsString' },\n { operator: 'IN', translation: '@pry.search.operator.in' },\n { operator: 'NOT_IN', translation: '@pry.search.operator.not_in' }\n ]);\n\n constructor(private store: Store<any>) {\n this.metadataUsers$ = this.store.select(MetadataSelectors.userProfile);\n }\n\n private assignObservables(): void {\n this.condition$ = this.store.select(AbacRulesSelectors.editAbacRuleConditionsById(this._id ?? ''));\n this.metadata$ = this.condition$.pipe(\n filter((cond): cond is NormalizedCondition => cond !== null && cond !== undefined),\n switchMap((cond: NormalizedCondition) =>\n this.store.select(MetadataSelectors.selectMetadataById(cond.metadata ?? ''))\n )\n );\n }\n\n onChangeOperator(operator: OperatorType, conditionId: string) {\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'operator', value: operator }\n })\n );\n }\n\n onChangeValue(evt: any, conditionId: string): void {\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'value', value: evt.target.value }\n })\n );\n }\n\n onSelectMetadataUser(conditionId: string, operator: OperatorType | undefined, metadata: IMetadata) {\n this.metadataUserOpen = false;\n const value =\n operator === 'IN' || operator === 'NOT_IN'\n ? `\\${user.metadata('${metadata.name}')}`\n : `\\${user.metadata('${metadata.name}').getFirst()}`;\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'value', value }\n })\n );\n }\n\n onDeleteMetadataCondition(conditionId: string, parentId: string): void {\n this.deleteConditionOpen = false;\n this.store.dispatch(\n AbacRulesActions.removeEditAbacRuleConditionFromComposed({ conditionId: parentId, childrenId: conditionId })\n );\n }\n}\n","@if (condition$ | async; as condition) {\n @if (metadata$ | async; as metadata) {\n <div class=\"o-pry-metadata-condition\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n (click)=\"deleteConditionOpen = true\"\n [pryOverlay]=\"deleteConditionTpl\"\n [(overlayOpen)]=\"deleteConditionOpen\"\n >\n @if (!readonly) {\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n }\n <span class=\"u-visually-hidden\">???</span>\n </button>\n <ng-template #deleteConditionTpl>\n <button class=\"m-pry-overlay-item\" (click)=\"onDeleteMetadataCondition(condition.id, condition.parentId)\">\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </ng-template>\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"metadata_name\">Name</label>\n <input id=\"metadata_name\" class=\"a-form-field\" type=\"text\" [value]=\"metadata.name\" readonly />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"metadata_operator\">???</label>\n <pry-select\n id=\"metadata_operator\"\n [disabled]=\"readonly\"\n [style.width.px]=\"160\"\n [items]=\"operators$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n [ngModel]=\"condition.operator\"\n (ngModelChange)=\"onChangeOperator($event, condition.id)\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_value\">???</label>\n <input\n id=\"condition_value\"\n class=\"a-form-field\"\n [readonly]=\"readonly\"\n type=\"text\"\n [style.width.px]=\"200\"\n [value]=\"condition.value\"\n (focusout)=\"onChangeValue($event, condition.id)\"\n />\n </div>\n @if (!readonly) {\n <button\n type=\"button\"\n aria-pressed=\"false\"\n class=\"a-btn a-btn--select -size-sm\"\n [pryOverlay]=\"metadataUserTpl\"\n [(overlayOpen)]=\"metadataUserOpen\"\n (click)=\"metadataUserOpen = true\"\n >\n {{ '@pry.admin.abac-rules.metadataUser' | i18n }}\n </button>\n }\n <ng-template #metadataUserTpl>\n <div class=\"m-pry-overlay-wrapper\">\n @for (metadataUser of metadataUsers$ | async; track metadataUser) {\n <button class=\"m-pry-overlay-item\" (click)=\"onSelectMetadataUser(condition.id, condition.operator, metadataUser)\">\n {{ metadataUser.name }}\n </button>\n }\n </div>\n </ng-template>\n </div>\n } @else {\n Loading ...\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable, of } from 'rxjs';\nimport { AbacRulesActions } from '../../store/abac-rules.actions';\nimport { AbacRuleType, ConditionType, NormalizedCondition } from '../../store/abac-rules.model';\nimport { AbacRulesSelectors } from '../../store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-composed-condition',\n templateUrl: './composed-condition.component.html'\n})\nexport class ComposedConditionComponent {\n readonly AND: ConditionType = 'AND';\n readonly OR: ConditionType = 'OR';\n readonly ATTRIBUTE: ConditionType = 'ATTRIBUTE';\n readonly METADATA: ConditionType = 'METADATA';\n\n editAbacRuleType$: Observable<AbacRuleType | undefined>;\n\n @Input() set id(val: string) {\n this._id = val;\n this.condition$ = this.store.select(AbacRulesSelectors.editAbacRuleConditionsById(this._id));\n }\n\n private _id!: string;\n condition$: Observable<NormalizedCondition | null> = of(null);\n\n @Input() readonly = false;\n @Input() rootElement = false;\n\n panelOpen = false;\n\n isDisabled: boolean = false;\n\n constructor(private store: Store<any>) {\n this.editAbacRuleType$ = this.store.select(AbacRulesSelectors.editAbacRuleType);\n }\n\n onAddNewAttribute(evt: { attribute: string; class: string }, conditionId: string): void {\n this.panelOpen = false;\n this.store.dispatch(\n AbacRulesActions.createEditAbacRuleAttributeCondition({\n attributeId: evt.attribute,\n classId: evt.class,\n parentId: conditionId\n })\n );\n }\n\n onAddNewMetadata(id: string, conditionId: string): void {\n this.panelOpen = false;\n this.store.dispatch(\n AbacRulesActions.createEditAbacRuleMetadataCondition({ metadataId: id, parentId: conditionId })\n );\n }\n\n onAddNewNestedCondition(conditionId: string): void {\n this.store.dispatch(AbacRulesActions.createEditAbacRuleNestedCondition({ parentId: conditionId }));\n }\n\n onChangeConditionType(conditionType: ConditionType, conditionId: string): void {\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'type', value: conditionType }\n })\n );\n }\n}\n","@if (condition$ | async; as condition) {\n @if (condition.type === OR || condition.type === AND) {\n <div class=\"o-pry-composed-condition-wrapper\" [class.root-element]=\"rootElement\">\n <div class=\"o-pry-composed-condition\">\n <div class=\"o-pry-composed-condition__type -vertical-bar\">\n <div class=\"o-pry-composed-condition__type__content\">\n <pry-toggle\n leftword=\"ET\"\n rightword=\"OU\"\n [ngModel]=\"condition.type === AND\"\n (ngModelChange)=\"onChangeConditionType($event ? AND : OR, condition.id)\"\n [alwaysActive]=\"true\"\n [disabled]=\"readonly\"\n ></pry-toggle>\n </div>\n </div>\n <div class=\"o-pry-composed-condition__content\">\n @for (id of condition.composed; track id) {\n <pry-composed-condition [readonly]=\"readonly\" [id]=\"id\"></pry-composed-condition>\n }\n @if (!readonly) {\n @if (editAbacRuleType$ | async; as ruleType) {\n <div>\n <button\n type=\"button\"\n aria-pressed=\"false\"\n class=\"a-btn a-btn--iconcircle-text\"\n (click)=\"panelOpen = true\"\n [pryOverlay]=\"selectOverlay\"\n [(overlayOpen)]=\"panelOpen\"\n pryOverlayPosition=\"start-bottom\"\n >\n <span class=\"a-btn--iconcircle-text__icon-wrapper\">\n <pry-icon iconSvg=\"add\" [height]=\"14\" [width]=\"14\"></pry-icon>\n </span>\n <span>\n {{\n '@pry.admin.abac-rules.form.' + (ruleType === ATTRIBUTE ? 'addAttribute' : 'addMetadata') | i18n\n }}\n </span>\n </button>\n </div>\n <ng-template #selectOverlay>\n @if (ruleType === ATTRIBUTE) {\n <pry-abac-select-attribute\n (attributeSelected)=\"onAddNewAttribute($event, condition.id)\"\n ></pry-abac-select-attribute>\n } @else {\n <pry-abac-select-metadata\n (metadataSelected)=\"onAddNewMetadata($event, condition.id)\"\n ></pry-abac-select-metadata>\n }\n </ng-template>\n }\n }\n </div>\n </div>\n @if (!readonly) {\n <div class=\"o-pry-composed-condition__add-item\">\n <button\n type=\"button\"\n aria-pressed=\"false\"\n class=\"a-btn a-btn--iconcircle-text\"\n (click)=\"onAddNewNestedCondition(condition.id)\"\n >\n <span class=\"a-btn--iconcircle-text__icon-wrapper\">\n <pry-icon iconSvg=\"add\" [height]=\"14\" [width]=\"14\"></pry-icon>\n </span>\n <span>\n {{ '@pry.admin.abac-rules.form.addGroup' | i18n }}\n </span>\n </button>\n </div>\n }\n </div>\n } @else {\n @if (condition.type === METADATA) {\n <pry-metadata-condition [readonly]=\"readonly\" [id]=\"condition.id\"></pry-metadata-condition>\n }\n @if (condition.type === ATTRIBUTE) {\n <pry-attribute-condition [readonly]=\"readonly\" [id]=\"condition.id\"></pry-attribute-condition>\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { PredicatesSelectors } from '../../admin-predicates/store/predicates.selectors';\nimport { AbacRulesActions } from '../store/abac-rules.actions';\nimport { AbacRule, AbacRuleType, ConditionType } from '../store/abac-rules.model';\nimport { AbacRulesSelectors } from '../store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-admin-abac-rules-form',\n templateUrl: './admin-abac-rules-form.component.html'\n})\nexport class AdminAbacRulesFormComponent {\n readonly ATTRIBUTE: ConditionType = 'ATTRIBUTE';\n readonly METADATA: ConditionType = 'METADATA';\n @Input() readonly = false;\n @Input() edit = false;\n\n predicates$: Observable<Predicate[]>;\n editAbacRuleType$: Observable<AbacRuleType | undefined>;\n\n isSubmitted = false;\n\n editAbacRuleConditionsMasterId$: Observable<string | null>;\n typeSelected$: Observable<string | undefined>;\n editAbacRule$: Observable<AbacRule | null>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.predicates$ = this.store.select(PredicatesSelectors.predicates);\n this.editAbacRule$ = this.store.select(AbacRulesSelectors.editAbacRule);\n this.editAbacRuleType$ = this.store.select(AbacRulesSelectors.editAbacRuleType);\n this.editAbacRuleConditionsMasterId$ = this.store.select(AbacRulesSelectors.editAbacRuleConditionsMasterId);\n this.typeSelected$ = this.store.select(AbacRulesSelectors.editAbacRuleConditionsTypeSelected);\n }\n\n toPredicate(item: Predicate): Predicate {\n return item;\n }\n\n onChangeAbacRuleProperty(property: keyof AbacRule, value: string): void {\n this.store.dispatch(AbacRulesActions.updateEditAbacRuleByProperty({ property, value }));\n }\n\n onCreateAbacRule(form: NgForm): void {\n this.isSubmitted = true;\n if (form.valid) {\n this.isSubmitted = false;\n const backPath = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(AbacRulesActions.saveEditAbacRule({ redirect: backPath.toString() }));\n }\n }\n\n goBack() {\n const backPath = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(AbacRulesActions.cancelAbacRuleEdition({ redirect: backPath.toString() }));\n }\n}\n","@if (editAbacRule$ | async; as rule) {\n <form class=\"o-form\" #abacRuleForm=\"ngForm\">\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"name-label\" for=\"inputName\">\n {{ '@pry.admin.abac-rules.form.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"inputName\"\n type=\"text\"\n [ngModel]=\"rule.name\"\n (ngModelChange)=\"onChangeAbacRuleProperty('name', $event)\"\n class=\"a-form-field\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"50\"\n required\n [readonly]=\"readonly\"\n [attr.aria-labelledby]=\"isSubmitted && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && name?.invalid\"\n />\n @if (isSubmitted && name.invalid) {\n <label\n class=\"a-label a-label--help -error\"\n id=\"name-error\"\n for=\"inputName\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n }\n </div>\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.status' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n <div class=\"m-form-radio-group\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleTrue\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"true\"\n />\n <label for=\"newRuleTrue\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusActive' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleFalse\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"false\"\n />\n <label for=\"newRuleFalse\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusInactive' | i18n }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abac-rules-description\">{{\n '@pry.admin.abac-rules.form.description' | i18n\n }}</label>\n <textarea\n name=\"description\"\n id=\"abac-rules-description\"\n [ngModel]=\"rule.description\"\n (ngModelChange)=\"onChangeAbacRuleProperty('description', $event)\"\n class=\"a-form-field\"\n maxlength=\"90\"\n [readonly]=\"readonly\"\n ></textarea>\n </div>\n <div class=\"m-form-label-field\">\n <label id=\"predicate-label\" for=\"predicate\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.predicate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"predicate\"\n [attr.aria-labelledby]=\"\n isSubmitted && abacRuleForm.form.get('predicate')?.invalid\n ? 'predicate-label predicate-error'\n : 'predicate-label'\n \"\n [disabled]=\"readonly\"\n [items]=\"predicates$ | async\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [template]=\"templateOption\"\n name=\"predicate\"\n [ngModel]=\"rule.predicate\"\n (ngModelChange)=\"onChangeAbacRuleProperty('predicate', $event)\"\n [isForm]=\"!readonly\"\n [attr.aria-invalid]=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n required\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n @if (toPredicate(item); as item) {\n <div class=\"u-display-flex -column\">\n <span>#{{ item.id }}</span>\n <span>{{ item.name }}</span>\n <span>{{ item.value }}</span>\n </div>\n }\n </ng-template>\n @if (isSubmitted && abacRuleForm.form.get('predicate')?.invalid) {\n <label\n class=\"a-label a-label--help -error\"\n id=\"predicate-error\"\n for=\"predicate\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n }\n </div>\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n <label>{{ '@pry.admin.abac-rules.form.type' | i18n }}</label> *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n <div class=\"m-form-radio-group\">\n @if (typeSelected$ | async) {\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"METADATA\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"ATTRIBUTE\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n @if (!readonly) {\n <span style=\"font-size: 12px; font-style: italic\">{{\n '@pry.admin.abac-rules.form.typeSelected' | i18n\n }}</span>\n }\n } @else {\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', METADATA)\"\n value=\"METADATA\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', ATTRIBUTE)\"\n value=\"ATTRIBUTE\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n }\n </div>\n </fieldset>\n </div>\n </div>\n @if (editAbacRuleConditionsMasterId$ | async; as masterId) {\n <div class=\"row\">\n <div class=\"col\">\n <pry-composed-condition\n class=\"o-component-pry-composed-condition\"\n style=\"margin: 1rem\"\n [rootElement]=\"true\"\n [id]=\"masterId\"\n [readonly]=\"readonly\"\n ></pry-composed-condition>\n </div>\n </div>\n }\n @if (!readonly) {\n <div class=\"m-btn-group -align-center -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"onCreateAbacRule(abacRuleForm)\">\n {{ '@pry.admin.' + (edit ? 'edit' : 'create') | i18n }}\n </button>\n </div>\n }\n </form>\n }\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ClassActions, FieldActions } from '@provoly/dashboard';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { PredicatesActions } from '../../admin-predicates/store/predicates.actions';\nimport { AbacRulesActions } from '../store/abac-rules.actions';\n\n@Component({\n selector: 'pry-admin-abac-rules-edit',\n templateUrl: './admin-abac-rules-edit.component.html'\n})\nexport class AdminAbacRulesEditComponent implements OnInit, OnDestroy {\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.store.dispatch(MetadataActions.loadMetadata());\n this.store.dispatch(MetadataActions.loadUserProfile());\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n const backPath = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: backPath.toString() }),\n label: 'back',\n icon: 'arrow_back'\n }\n ]\n })\n );\n const ruleId = params['id'];\n this.store.dispatch(AbacRulesActions.fetchAbacRule({ id: ruleId }));\n });\n }\n\n ngOnDestroy(): void {\n this.store.dispatch(AbacRulesActions.resetEditAbacRule());\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.abac-rules.title.edit' | i18n }}</h1>\n <pry-admin-abac-rules-form [edit]=\"true\"></pry-admin-abac-rules-form>\n</div>\n","import { Injectable } from '@angular/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AbacRule, AbacRulesConditions, Condition, NormalizedCondition, OperatorType } from './abac-rules.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AbacRulesService {\n initializeNewAbacRule(): AbacRule {\n return {\n id: uuidv4(),\n name: '',\n type: 'METADATA',\n description: '',\n active: true\n } as AbacRule;\n }\n\n initializeCondition(parentId: string | null = null, conditionId: string | null = null): NormalizedCondition {\n const id = uuidv4();\n return {\n id: conditionId ?? id,\n parentId: parentId ?? id,\n type: 'AND'\n } as NormalizedCondition;\n }\n\n getMetadataCondition(\n metadata: string,\n parentId: string,\n operator: OperatorType = 'EQUALS',\n value: any = ''\n ): NormalizedCondition {\n const id = uuidv4();\n return {\n id,\n metadata,\n parentId,\n operator: operator,\n type: 'METADATA',\n value: value\n } as NormalizedCondition;\n }\n\n getAttributeCondition(\n attribute: string,\n classId: string,\n parentId: string,\n operator: OperatorType = 'EQUALS',\n value: any = ''\n ): NormalizedCondition {\n const id = uuidv4();\n return {\n id,\n attribute,\n parentId,\n class: classId,\n operator: operator,\n type: 'ATTRIBUTE',\n value: value\n } as NormalizedCondition;\n }\n\n buildPayloadForAbacRule(rule: AbacRule, conditions: AbacRulesConditions): AbacRule {\n const condition = this.buildConditionsForAbacRule(conditions);\n return condition ? { ...rule, condition } : { ...rule };\n }\n\n buildConditionsForAbacRule(conditions: AbacRulesConditions): Condition | null {\n if (!conditions.masterId) {\n return null;\n }\n return this.mapNormalizedConditionToCondition(conditions.entities[conditions.masterId], conditions);\n }\n\n mapNormalizedConditionToCondition(cond: NormalizedCondition, tree: AbacRulesConditions): Condition {\n return {\n type: cond.type,\n attribute: cond.attribute,\n composed: cond.composed?.map((id) => this.mapNormalizedConditionToCondition(tree.entities[id], tree)),\n metadata: cond.metadata,\n operator: cond.operator,\n value: cond.value\n };\n }\n\n mapAbacRuleToEditAbacRule(rule: AbacRule): { rule: AbacRule; conditions: AbacRulesConditions } {\n const editRule: AbacRule = {\n id: rule.id,\n active: rule.active,\n description: rule.description,\n name: rule.name,\n predicate: rule.predicate,\n type: rule.type\n };\n const masterId = uuidv4();\n const conditions = rule.condition\n ? this.createNormalizedConditions(rule.condition, masterId, masterId).conditions\n : [this.initializeCondition(masterId, masterId)];\n const editRuleCondtitions: AbacRulesConditions = {\n masterId,\n ids: conditions.map((cond) => cond.id),\n entities: conditions.reduce((acc, cond) => ({ ...acc, [cond.id]: cond }), {})\n };\n return {\n rule: editRule,\n conditions: editRuleCondtitions\n };\n }\n\n createNormalizedConditions(\n cond: Condition,\n parentId: string,\n masterId: string | null = null\n ): { id: string; conditions: NormalizedCondition[] } {\n if (cond.type === 'AND' || cond.type === 'OR') {\n const id = masterId ?? uuidv4();\n if (cond.composed) {\n const children = cond.composed.map((cond) => this.createNormalizedConditions(cond, id));\n const ids = children.map((child) => child.id);\n const normalizedChildren = children.reduce(\n (acc, res) => [...acc, ...res.conditions],\n [] as NormalizedCondition[]\n );\n return {\n id,\n conditions: [\n {\n id,\n parentId: parentId,\n type: cond.type,\n composed: ids\n },\n ...normalizedChildren\n ]\n };\n }\n return {\n id,\n conditions: [\n {\n id,\n parentId: parentId,\n type: cond.type\n }\n ]\n };\n } else if (cond.type === 'ATTRIBUTE') {\n const id = masterId ?? uuidv4();\n return {\n id,\n conditions: [\n {\n id,\n parentId,\n type: 'ATTRIBUTE',\n attribute: cond.attribute,\n operator: cond.operator,\n value: cond.value\n }\n ]\n };\n } else {\n const id = masterId ?? uuidv4();\n return {\n id,\n conditions: [\n {\n id: id,\n parentId,\n type: 'METADATA',\n metadata: cond.metadata,\n operator: cond.operator,\n value: cond.value\n }\n ]\n };\n }\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ClassActions, FieldActions } from '@provoly/dashboard';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\nimport { PredicatesActions } from '../../admin-predicates/store/predicates.actions';\nimport { AbacRulesActions } from '../store/abac-rules.actions';\nimport { AbacRulesService } from '../store/abac-rules.service';\n\n@Component({\n selector: 'pry-admin-abac-rules-new',\n templateUrl: './admin-abac-rules-new.component.html'\n})\nexport class AdminAbacRulesNewComponent implements OnDestroy {\n constructor(\n private store: Store<any>,\n private abacRuleService: AbacRulesService\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.store.dispatch(MetadataActions.loadMetadata());\n this.store.dispatch(MetadataActions.loadUserProfile());\n const newRule = this.abacRuleService.initializeNewAbacRule();\n this.store.dispatch(AbacRulesActions.initEditAbacRule({ rule: newRule }));\n }\n\n ngOnDestroy(): void {\n this.store.dispatch(AbacRulesActions.resetEditAbacRule());\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.abac-rules.title.add' | i18n }}</h1>\n <pry-admin-abac-rules-form [readonly]=\"false\" [edit]=\"false\"></pry-admin-abac-rules-form>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ClassActions, FieldActions } from '@provoly/dashboard';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { PredicatesActions } from '../../admin-predicates/store/predicates.actions';\nimport { AbacRulesActions } from '../store/abac-rules.actions';\n\n@Component({\n selector: 'pry-admin-abac-rules-view',\n templateUrl: './admin-abac-rules-view.component.html'\n})\nexport class AdminAbacRulesViewComponent implements OnInit {\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.store.dispatch(MetadataActions.loadMetadata());\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n const path = this.router.createUrlTree(['.', 'edit'], { relativeTo: this.route });\n const backPath = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: backPath.toString() }),\n label: 'back',\n icon: 'arrow_back'\n },\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'abac_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n const ruleId = params['id'];\n this.store.dispatch(AbacRulesActions.fetchAbacRule({ id: ruleId }));\n });\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-1\">{{ '@pry.admin.abac-rules.title.view' | i18n }}</h1>\n <pry-admin-abac-rules-form [readonly]=\"true\"></pry-admin-abac-rules-form>\n</div>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { PredicatesActions } from '../admin-predicates/store/predicates.actions';\nimport { AbacRulesActions } from './store/abac-rules.actions';\nimport { AbacRule } from './store/abac-rules.model';\nimport { AbacRulesSelectors } from './store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-admin-abac-rules',\n templateUrl: './admin-abac-rules.component.html'\n})\nexport class AdminAbacRulesComponent {\n rules$: Observable<AbacRule[]>;\n loading$: Observable<boolean>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(AbacRulesActions.loadAbacRules());\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.rules$ = this.store.select(AbacRulesSelectors.abacRules);\n this.loading$ = this.store.select(AbacRulesSelectors.loading);\n const newAbacRulePath = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: newAbacRulePath.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'abac_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n goToSelectRule(rule: AbacRule) {\n const path = this.router.createUrlTree(['.', `${rule.id}`], { relativeTo: this.route });\n this.store.dispatch(AdminActions.routeTo({ path: path.toString() }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.abac-rules.title.list' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.abac-rules.title.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.abac-rules.form.name' | i18n }}</th>\n <th prySortHeader=\"type\">{{ '@pry.admin.abac-rules.form.type' | i18n }}</th>\n <th prySortHeader=\"active\">{{ '@pry.admin.abac-rules.form.status' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (rule of rules$ | async | prySortData: sortActive : sortDirection; track rule) {\n <tr (click)=\"goToSelectRule(rule)\">\n <td class=\"view-details\">\n <button\n [id]=\"'button-arule-' + rule.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ rule.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ rule.name }}</td>\n <td>\n {{ '@pry.admin.abac-rules.form.' + (rule.type === 'METADATA' ? 'typeMetadata' : 'typeAttribute') | i18n }}\n </td>\n <td>\n <span class=\"a-badge\" [ngClass]=\"{ '-status-ok': rule.active, '-status-inactive': !rule.active }\">\n {{\n (rule.active ? '@pry.admin.abac-rules.form.statusActive' : '@pry.admin.abac-rules.form.statusInactive')\n | i18n\n }}\n </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { Attribute, AttributeExtended, Category, Class } from '@provoly/dashboard';\n\nexport const AdminClassActions = {\n updateToolbox: createAction('[Admin/Classes] Update Toolbox Class'),\n\n saveInterClass: createAction('[Admin/Classes] Save Inter Class', props<{ class: Class; route: string }>()),\n resetInterClass: createAction('[Admin/Classes] Reset Inter Class'),\n\n saveClass: createAction('[Admin/Classes] Save Class', props<{ class: Class; route: string }>()),\n saveClassSuccess: createAction('[Admin/Classes Api] Save Class Success', props<{ route: string }>()),\n saveClassFailure: createAction('[Admin/Classes Api] Save Class Failure', props<{ error: any }>()),\n\n saveCategory: createAction('[Admin/Classes] Save Category', props<{ category: Category }>()),\n saveCategorySuccess: createAction('[Admin/Classes Api] Save Category Success'),\n saveCategoryFailure: createAction('[Admin/Classes Api] Save Category Failure', props<{ error: any }>()),\n\n selectClass: createAction('[Admin/Classes] Select Class', props<{ clazz: Class }>()),\n selectClassFailure: createAction('[Admin/Classes Api] Select Class Failure', props<{ error: any }>()),\n\n unselectClass: createAction('[Admin/Classes] Unselect Class'),\n\n deleteClass: createAction('[Admin/Classes] Delete Class', props<{ id: string; route: string }>()),\n deleteClassSuccess: createAction('[Admin/Classes Api] Delete Class Success', props<{ route: string }>()),\n deleteClassFailure: createAction('[Admin/Classes Api] Delete Class Failure', props<{ error: any }>()),\n\n deleteAttributeForClass: createAction(\n '[Admin/Classes] Delete Attribute for Class',\n props<{ classId: string; attrId: string; backPath: string; addAttrPath: string }>()\n ),\n deleteAttributeForClassSuccess: createAction(\n '[Admin/Classes Api] Delete Attribute for Class Success',\n props<{ classId: string; backPath: string; addAttrPath: string }>()\n ),\n deleteAttributeForClassFailure: createAction(\n '[Admin/Classes Api] Delete Attribute for Class Failure',\n props<{ error: any }>()\n ),\n\n selectAttribute: createAction(\n '[Admin/Classes] Select current Attribute',\n props<{ attrExtended: AttributeExtended }>()\n ),\n unselectAttribute: createAction('[Admin/Classes] Unselect current Attribute'),\n\n saveAttributeForClass: createAction(\n '[Admin/Classes] Save Attribute for Selected Class',\n props<{ classId: string; attribute: Attribute; route: string }>()\n ),\n saveAttributeForClassSuccess: createAction(\n '[Admin/Classes Api] Save Attribute for Selected Class Success',\n props<{ route: string }>()\n ),\n saveAttributeForClassFailure: createAction(\n '[Admin/Classes Api] Save Attribute for Selected Class Failure',\n props<{ error: any }>()\n ),\n back: createAction('[Admin/Classes] back', props<{ path: string }>()),\n openModal: createAction('[Class] Open modal'),\n closeModal: createAction('[Class] Close modal'),\n confirmClassDeletion: createAction('[Class] Open modal for deleting class', props<{ id: string; path: string }>()),\n confirmAttributeDeletion: createAction(\n '[Class] Open modal for attribute deletion',\n props<{\n classId: string;\n attrId: string;\n backPath: string;\n addAttrPath: string;\n }>()\n ),\n getStorageOptions: createAction('[Admin/Classes] Get Storage Options List'),\n getStorageOptionsSuccess: createAction(\n '[Admin/Classes] Get Storage Options List Success',\n props<{ storageOptions: string[] }>()\n ),\n getStorageOptionsFailure: createAction('[Admin/Classes] Get Storage Options List Failure', props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { AttributeExtended, Class } from '@provoly/dashboard';\nimport { AdminClassActions } from './admin-class.actions';\n\nexport const classesFeatureKey = '@pry/admin/classes';\n\nexport interface AdminClassState {\n loading: boolean;\n selectedClass?: Class;\n selectedAttribute?: AttributeExtended;\n interClass?: Class;\n openModal: boolean;\n storageOptions: string[];\n}\n\nexport const initialClassState: AdminClassState = {\n loading: false,\n openModal: false,\n storageOptions: ['ELASTIC']\n};\n\nexport const classReducer = createReducer(\n initialClassState,\n on(AdminClassActions.selectClass, (state, action) => ({\n ...state,\n selectedClass: action.clazz\n })),\n on(AdminClassActions.unselectClass, (state, action) => ({\n ...state,\n selectedClass: undefined\n })),\n on(AdminClassActions.selectAttribute, (state, action) => ({\n ...state,\n selectedAttribute: action.attrExtended\n })),\n on(AdminClassActions.unselectAttribute, (state, action) => ({\n ...state,\n selectedAttribute: undefined\n })),\n on(AdminClassActions.saveInterClass, (state, action) => ({\n ...state,\n interClass: action.class\n })),\n on(AdminClassActions.saveClassSuccess, (state, action) => ({\n ...state,\n interClass: undefined\n })),\n on(AdminClassActions.back, (state) => ({\n ...state,\n interClass: undefined,\n selectedClass: undefined\n })),\n on(AdminClassActions.resetInterClass, (state) => ({\n ...state,\n interClass: undefined\n })),\n on(AdminClassActions.openModal, (state) => ({\n ...state,\n openModal: true\n })),\n on(AdminClassActions.closeModal, (state) => ({\n ...state,\n openModal: false\n })),\n on(AdminClassActions.deleteAttributeForClass, (state) => ({\n ...state,\n selectedAttribute: undefined\n })),\n on(AdminClassActions.getStorageOptionsSuccess, (state, action) => ({\n ...state,\n storageOptions: action.storageOptions\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromClass from './admin-class.reducer';\n\nconst feature = createFeatureSelector<fromClass.AdminClassState>(fromClass.classesFeatureKey);\n\nconst loading = createSelector(feature, (state) => state?.loading);\nconst selectedClass = createSelector(feature, (state) => state?.selectedClass);\nconst selectedClassId = createSelector(selectedClass, (state) => state?.id);\nconst selectedAttribute = createSelector(feature, (state) => state?.selectedAttribute);\nconst selectedAttributeId = createSelector(selectedAttribute, (state) => state?.id);\nconst interClass = createSelector(feature, (state) => state?.interClass);\nconst interClassId = createSelector(interClass, (state) => state?.id);\nconst openModal = createSelector(feature, (state) => state.openModal);\nconst storageOptions = createSelector(feature, (state) => state.storageOptions);\n\nexport const AdminClassSelectors = {\n feature,\n loading,\n selectedClass,\n selectedClassId,\n selectedAttribute,\n selectedAttributeId,\n interClass,\n interClassId,\n openModal,\n storageOptions\n};\n","import {\n Component,\n ComponentRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n AttributeSimpleValue,\n BaseTooltipComponent,\n Class,\n ClassSelectors,\n ConfigActions,\n ConfigSelectors,\n Field,\n FieldSelectors,\n Item,\n PryI18nService,\n SubscriptionnerDirective,\n TooltipFactoryService,\n TooltipOfClass\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { v4 } from 'uuid';\n\n@Component({\n selector: 'pry-admin-classes-customize-tooltip',\n templateUrl: './admin-classes-customize-tooltip.component.html'\n})\nexport class AdminClassesCustomizeTooltipComponent extends SubscriptionnerDirective implements OnDestroy {\n @ViewChild('example', { read: ViewContainerRef }) example!: ViewContainerRef;\n currentClassConfig: TooltipOfClass = { type: 'default' };\n possibleTooltipTypes$: Observable<{ value: string; label: string }[]>;\n advancedTooltip: boolean = false;\n possibleNonAttributesFields = [\n {\n name: 'id',\n id: 'id'\n },\n {\n name: 'oClass',\n id: 'oClass'\n }\n ] as Attribute[];\n @Output() backPressed = new EventEmitter<void>();\n private _currentClass$ = new BehaviorSubject<Class>({} as Class);\n strOptions: string = '';\n tmpComponent?: ComponentRef<BaseTooltipComponent>;\n defs: { [p: string]: TooltipOfClass } = {};\n noTooltip: boolean = false;\n classes$: Observable<Class[]>;\n fields$: Observable<Field[]>;\n attributesOfClass$: Observable<Attribute[]>;\n mockData: any;\n attributes: Attribute[] = [];\n\n @Input() set currentClass(clazz: Class | null | undefined) {\n this._currentClass$.next(clazz ?? ({} as Class));\n this.currentClassConfig = this.removeUnknown(\n structuredClone(this.defs[this.currentClass.id] ?? { type: 'default' })\n );\n }\n\n get currentClass(): Class {\n return this._currentClass$.value;\n }\n\n constructor(\n private tooltipFactoryService: TooltipFactoryService,\n private injector: Injector,\n private translateService: PryI18nService,\n private store: Store\n ) {\n super();\n this.possibleTooltipTypes$ = this.tooltipFactoryService.types$.pipe(\n map((types) =>\n types.map((type) => ({\n value: type,\n label: this.translateService.instant('@pry.tooltip.' + type)\n }))\n )\n );\n this.subscriptions.add(\n this.store.select(ConfigSelectors.tooltipDefinitions).subscribe((defs) => {\n this.defs = defs;\n this.currentClassConfig = structuredClone(defs[this.currentClass.id] ?? { type: 'default' });\n })\n );\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.attributesOfClass$ = combineLatest([this._currentClass$, this.classes$]).pipe(\n map(([clazz, classes]) => classes.find((cl) => cl.id === clazz.id)?.attributes ?? []),\n map((attrs) => [...attrs, ...this.possibleNonAttributesFields].sort((f1, f2) => f1.name.localeCompare(f2.name)))\n );\n this.subscriptions.add(\n this.attributesOfClass$.subscribe((attrs) => {\n this.attributes = attrs;\n this.mockData = attrs\n .map((attr) => ({\n [attr.technicalName]: {\n type: 'VALUE',\n value:\n '«' + this.translateService.instant('@pry.admin.customize.exemple', { expr: attr.technicalName }) + '»',\n visible: true\n } as AttributeSimpleValue\n }))\n .reduce((p, c) => ({ ...p, attributes: { ...p.attributes, ...c } }), {\n oClass: this.currentClass.id,\n id: v4(),\n label: '«' + this.translateService.instant('@pry.admin.customize.exemple', { expr: 'label' }) + '»',\n attributes: {} as { [key: string]: AttributeSimpleValue }\n } as Item);\n })\n );\n }\n\n tooltipTypeChanged($event: any) {\n this.currentClassConfig.type = $event;\n if (this.currentClassConfig.type === 'attribute') {\n this.currentClassConfig.options = { attributes: this.attributes.map((attr) => attr.id) };\n } else {\n this.currentClassConfig.options = {};\n }\n this.strOptions = JSON.stringify(this.currentClassConfig.options);\n this.updateExample();\n }\n\n optionsChanged() {\n this.currentClassConfig.options = JSON.parse(this.strOptions);\n if (this.tmpComponent) {\n this.tmpComponent.instance.context = this.currentClassConfig.options;\n }\n this.updateExample();\n }\n\n updateExample() {\n this.example?.clear();\n const component$ = this.tooltipFactoryService.generateTooltip(\n this.currentClassConfig.type,\n this.injector,\n this.example\n );\n component$.subscribe((component) => {\n this.noTooltip = !component;\n if (component) {\n component.instance.data.item = this.mockData;\n\n this.tmpComponent = component;\n\n component.instance.context = this.currentClassConfig.options;\n }\n });\n }\n\n updateTemplate() {\n this.store.dispatch(\n ConfigActions.saveTooltip({\n definitions: { [this.currentClass.id]: this.currentClassConfig }\n })\n );\n this.goBack();\n }\n\n goBack() {\n this.backPressed.emit();\n }\n\n changeAttributes($event: any) {\n this.currentClassConfig.options.attributes = $event;\n setTimeout(() => this.updateExample(), 100);\n }\n\n private removeUnknown(config: TooltipOfClass): TooltipOfClass {\n if (config.type === 'attribute') {\n const toRemove: string[] = [];\n config.options.attributes.forEach((attr: string) => {\n if (!this.attributes.map((attr) => attr.id).includes(attr)) {\n toRemove.push(attr);\n }\n });\n config.options.attributes = config.options.attributes.filter((attr: string) => !toRemove.includes(attr));\n }\n return config;\n }\n}\n","<div>\n <div class=\"m-form-label-field -width-xl\">\n <label class=\"a-label\" for=\"tooltip_type\">{{ '@pry.admin.customize.type' | i18n }}</label>\n <pry-select\n id=\"tooltip_type\"\n (ngModelChange)=\"tooltipTypeChanged($event)\"\n [ngModel]=\"currentClassConfig.type\"\n [items]=\"possibleTooltipTypes$ | async\"\n bindValue=\"value\"\n bindLabel=\"label\"\n ></pry-select>\n </div>\n\n <div>\n <pry-checkbox [(ngModel)]=\"advancedTooltip\">{{ '@pry.admin.customize.advanced' | i18n }}</pry-checkbox>\n </div>\n\n @if (!advancedTooltip && currentClassConfig.type === 'attribute') {\n <div class=\"m-form-label-field -width-xl\">\n <label class=\"a-label\" for=\"customize_simplified\">{{ '@pry.admin.customize.simplified' | i18n }}</label>\n <pry-select\n id=\"customize_simplified\"\n (ngModelChange)=\"changeAttributes($event)\"\n [ngModel]=\"currentClassConfig.options.attributes\"\n [items]=\"attributesOfClass$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n bindLabel=\"name\"\n bindValue=\"id\"\n ></pry-select>\n </div>\n }\n\n @if (advancedTooltip) {\n <textarea\n cols=\"100\"\n rows=\"15\"\n class=\"a-form-field\"\n [(ngModel)]=\"strOptions\"\n (focusout)=\"optionsChanged()\"\n ></textarea>\n }\n</div>\n\n<div class=\"m-tooltip m-tooltip--example\" [class.-hidden]=\"noTooltip\">\n <div #example></div>\n</div>\n\n<div class=\"m-btn-group -width-md\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" (click)=\"updateTemplate()\">\n {{ '@pry.admin.customize.update' | i18n }}\n </button>\n</div>\n","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n compareOperationFunctions,\n ConfigActions,\n ConfigSelectors,\n DEFAULT_ICON_URL,\n IconDefinitions,\n IconOptions,\n IconPosition,\n PryI18nService,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { distinctUntilChanged } from 'rxjs';\n\nconst DEFAULT_RULE = {\n isDefault: true,\n iconUrl: DEFAULT_ICON_URL,\n iconSize: [25, 25]\n};\n\n@Component({\n selector: 'pry-admin-classes-customize-symbol',\n templateUrl: './admin-classes-customize-symbol.component.html'\n})\nexport class AdminClassesCustomizeSymbolComponent extends SubscriptionnerDirective implements OnDestroy {\n @Output() backPressed = new EventEmitter<void>();\n private _currentClass: Class = {} as Class;\n definitions: IconOptions[] = [];\n initialDefinitions?: IconOptions[] = undefined;\n baseDefs: IconDefinitions = {};\n positions = Object.values(IconPosition).map((pos) => ({\n label: '@pry.admin.position.' + pos,\n value: pos\n }));\n fieldsForClass: Attribute[] = [];\n operations = Object.keys(compareOperationFunctions).map((op) => ({\n label: '@pry.admin.classes.operations.' + op,\n name: op\n }));\n sizes = [25, 50, 100].map((size) => ({\n label: `${size}x${size}`,\n value: size\n }));\n\n @Input() set currentClass(clazz: Class | null | undefined) {\n this._currentClass = clazz ?? ({} as Class);\n this.definitions = !!this.baseDefs ? structuredClone(this.baseDefs[clazz?.id ?? ''] ?? [DEFAULT_RULE]) : [];\n this.definitions.sort((def1, def2) => (def1.isDefault ? -1 : 1) - (def2.isDefault ? -1 : 1));\n if (!this.initialDefinitions && !!this.baseDefs) {\n this.initialDefinitions = structuredClone(this.definitions);\n }\n this.fieldsForClass = [...(clazz ?? { attributes: [] }).attributes].sort((attr1, attr2) =>\n attr1.name.localeCompare(attr2.name)\n );\n }\n\n get currentClass() {\n return this._currentClass;\n }\n\n constructor(\n private translateService: PryI18nService,\n private store: Store\n ) {\n super();\n this.subscriptions.add(\n this.store\n .select(ConfigSelectors.iconDefinitions)\n .pipe(distinctUntilChanged((a, b) => equal(a, b)))\n .subscribe((defs) => {\n this.baseDefs = defs;\n this.definitions = !!defs ? structuredClone(defs[this.currentClass?.id ?? ''] ?? [DEFAULT_RULE]) : [];\n this.definitions.sort((def1, def2) => (def1.isDefault ? -1 : 1) - (def2.isDefault ? -1 : 1));\n if (!this.initialDefinitions && !!defs) {\n this.initialDefinitions = structuredClone(this.definitions);\n }\n })\n );\n }\n\n changeForImage(icon: string, i: number) {\n this.definitions[i].iconUrl = icon;\n this.store.dispatch(\n ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } })\n );\n }\n\n changePosition($event: any, i: number) {\n this.definitions[i].position = $event;\n }\n\n changeAttrName($event: any, i: number) {\n // @ts-ignore\n this.definitions[i].rule.attributeName = $event;\n }\n\n changeValue($event: any, i: number) {\n // @ts-ignore\n this.definitions[i].rule.value = $event;\n }\n\n changeOperation($event: any, i: number) {\n // @ts-ignore\n this.definitions[i].rule.operation = $event;\n }\n\n toggleRule(i: number) {\n if (!this.definitions[i].rule) {\n this.definitions[i].rule = { attributeName: '', value: '', operation: 'EQUALS' };\n } else {\n this.definitions[i].rule = undefined;\n }\n this.store.dispatch(\n ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } })\n );\n }\n\n goBack() {\n this.backPressed.emit();\n }\n\n changeIcon(i: number, $event: string) {\n this.definitions[i].iconUrl = $event;\n }\n\n changeSize($event: number) {\n const defaultRule = this.definitions.find((def) => def.isDefault);\n if (defaultRule) {\n defaultRule.iconSize = [$event, $event];\n }\n }\n\n valid() {\n this.store.dispatch(ConfigActions.saveIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } }));\n this.initialDefinitions = structuredClone(this.definitions);\n this.goBack();\n }\n\n addRule() {\n this.definitions.push({ iconUrl: DEFAULT_ICON_URL, iconSize: [25, 25] });\n this.store.dispatch(\n ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } })\n );\n }\n\n removeRule(i: number) {\n this.definitions.splice(i, 1);\n this.store.dispatch(\n ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } })\n );\n }\n\n restoreSymbols() {\n this.store.dispatch(\n ConfigActions.updateIcons({\n definitions: { [this.currentClass?.id ?? '']: this.initialDefinitions ?? this.definitions }\n })\n );\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.restoreSymbols();\n }\n\n move(index: number, nextIndex: number) {\n const tmp = this.definitions[index];\n this.definitions[index] = this.definitions[nextIndex];\n this.definitions[nextIndex] = tmp;\n this.store.dispatch(\n ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } })\n );\n }\n}\n","<ul class=\"m-rule-wrapper\">\n @for (definition of definitions; track definition; let i = $index) {\n <li\n [class.m-rule--default]=\"definition.isDefault\"\n class=\"m-rule\"\n >\n <div class=\"m-rule__header\">\n <h3 class=\"a-h3\">\n {{ '@pry.admin.rule' | i18n : { id: i + 1 } }}\n <span>{{ definition.isDefault ? ('@pry.admin.defaultRule' | i18n) : '' }}</span>\n </h3>\n @if (!definition.isDefault) {\n <div class=\"m-rule__actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i <= 1\"\n [disabled]=\"i <= 1\"\n (click)=\"move(i, i - 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i >= definitions.length - 1\"\n [disabled]=\"i >= definitions.length - 1\"\n (click)=\"move(i, i + 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"removeRule(i)\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </div>\n }\n </div>\n <div>\n <pry-select-image [iconUrl]=\"definition.iconUrl\" (changed)=\"changeForImage($event, i)\"></pry-select-image>\n @if (definition.isDefault) {\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"size\">{{ '@pry.admin.size' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSize($event)\"\n [items]=\"sizes\"\n [ngModel]=\"definition.iconSize[0]\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"size\"\n ></pry-select>\n </div>\n }\n @if (!definition.isDefault) {\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"display_mode\">{{ '@pry.admin.displayModeImage' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePosition($event, i)\"\n [items]=\"positions\"\n [ngModel]=\"definition.position\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"display_mode\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"!!definition.rule\" (click)=\"toggleRule(i)\">{{\n '@pry.admin.classes.condition' | i18n\n }}</pry-checkbox>\n </div>\n }\n @if (!!definition.rule && !definition.isDefault) {\n <div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_attrname\">{{ '@pry.admin.classes.attrName' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAttrName($event, i)\"\n [items]=\"fieldsForClass\"\n [ngModel]=\"definition.rule.attributeName\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"classes_attrname\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_operation\">{{ '@pry.admin.classes.operation' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event, i)\"\n [items]=\"operations\"\n [ngModel]=\"definition.rule.operation\"\n bindLabel=\"label\"\n bindValue=\"name\"\n id=\"classes_operation\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_value\">{{ '@pry.admin.classes.value' | i18n }}</label>\n <input\n id=\"classes_value\"\n type=\"text\"\n class=\"a-form-field\"\n (ngModelChange)=\"changeValue($event, i)\"\n [ngModel]=\"definition.rule.value\"\n />\n </div>\n </div>\n }\n </div>\n </li>\n }\n</ul>\n\n<button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"addRule()\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n Ajouter une règle\n</button>\n\n<div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"restoreSymbols(); goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.customize.updateIcons' | i18n\"\n (click)=\"valid()\"\n ></button>\n</div>\n","import { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { Component, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Class,\n ClassActions,\n ClassSelectors,\n ConfigActions,\n ConfigSelectors,\n Field,\n FieldActions,\n FieldSelectors,\n ItemUtils,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { combineLatest, combineLatestWith, map, Observable, of, switchMap } from 'rxjs';\nimport { AdminClassActions } from '../store/admin-class.actions';\nimport { AdminClassSelectors } from '../store/admin-class.selectors';\n\n@Component({\n selector: 'pry-admin-classes-customize',\n templateUrl: './admin-classes-customize.component.html'\n})\nexport class AdminClassesCustomizeComponent extends SubscriptionnerDirective implements OnDestroy {\n currentClass$: Observable<Class | undefined>;\n currentClass: Class = {} as Class;\n defaultAttributes: string[] = [];\n otherAttributes: string[] = [];\n currentPropertiesConfig$: Observable<string[]>;\n currentTilePropertiesConfig$: Observable<string[]>;\n classes$: Observable<Class[]> = of([]);\n defaultTileAttributes: string[] = [];\n otherTileAttributes: string[] = [];\n maxTilesAttributes = 5;\n fields$: Observable<Field[]>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n super();\n this.subscriptions.add(\n this.route.params.subscribe((params) =>\n this.store.dispatch(AdminClassActions.selectClass({ clazz: { id: params['id'] } as Class }))\n )\n );\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(ConfigActions.loadCustomization({}));\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.currentClass$ = combineLatest([\n this.store.select(AdminClassSelectors.selectedClass),\n this.store.select(ClassSelectors.classes)\n ]).pipe(switchMap(([clazz, _]) => this.store.select(ClassSelectors.classById(clazz?.id ?? ''))));\n this.subscriptions.add(this.currentClass$.subscribe((clazz) => (this.currentClass = clazz ?? ({} as Class))));\n this.currentPropertiesConfig$ = this.store.select(ConfigSelectors.tableDefaultAttributesDefinitions).pipe(\n combineLatestWith(this.currentClass$, this.fields$),\n map(([defs, clazz, fields]) =>\n ItemUtils.getClassNonGeoAttributesNames((clazz ?? { attributes: [] }) as Class, defs, fields)\n )\n );\n this.subscriptions.add(\n this.currentPropertiesConfig$.pipe(combineLatestWith(this.currentClass$)).subscribe(([attrs, clazz]) => {\n this.defaultAttributes = structuredClone(attrs);\n this.otherAttributes = (clazz ?? { attributes: [] }).attributes\n .filter((attr) => !attrs.includes(attr.name))\n .map((attr) => attr.name);\n })\n );\n this.currentTilePropertiesConfig$ = this.store.select(ConfigSelectors.tileAttributesDefinitions).pipe(\n combineLatestWith(this.currentClass$, this.fields$),\n map(([defs, clazz, fields]) =>\n ItemUtils.getClassNonGeoAttributesNames((clazz ?? { attributes: [] }) as Class, defs, fields)\n ),\n map((attrs) => attrs.filter((_, i) => i < this.maxTilesAttributes))\n );\n this.subscriptions.add(\n this.currentTilePropertiesConfig$.pipe(combineLatestWith(this.currentClass$)).subscribe(([attrs, clazz]) => {\n this.defaultTileAttributes = structuredClone(attrs);\n this.otherTileAttributes = (clazz ?? { attributes: [] }).attributes\n .filter((attr) => !attrs.includes(attr.name))\n .map((attr) => attr.name);\n })\n );\n this.subscriptions.add(\n this.store.select(ConfigSelectors.maxAttributesInTiles).subscribe((max) => {\n this.maxTilesAttributes = max;\n })\n );\n }\n\n goBack() {\n const path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n this.store.dispatch(AdminClassActions.back({ path: path.toString() }));\n }\n\n drop(event: CdkDragDrop<string[]>) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n }\n const toSort = event.previousContainer.id === 'cdk-drop-list-1' ? event.previousContainer : event.container;\n toSort.data.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));\n }\n\n updateTableAttrs() {\n this.store.dispatch(\n ConfigActions.saveTableDefaultAttributes({\n definitions: { [this.currentClass.id]: this.defaultAttributes.sort() }\n })\n );\n this.goBack();\n }\n\n updateTileAttrs() {\n this.store.dispatch(\n ConfigActions.saveTileAttributes({\n definitions: { [this.currentClass.id]: this.defaultTileAttributes }\n })\n );\n this.goBack();\n }\n\n isTileConfValid() {\n return this.defaultTileAttributes.length > 0 && this.defaultTileAttributes.length <= this.maxTilesAttributes;\n }\n}\n","<div class=\"o-pry-admin-classes-customize\">\n <h1 class=\"a-h1\" id=\"tab-custom\">{{ '@pry.admin.customize.title' | i18n }}</h1>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"customizeTemplate\" name=\"customize.template\"></pry-tab>\n <pry-tab [templateRef]=\"customizeTable\" name=\"customize.table\"></pry-tab>\n <pry-tab [templateRef]=\"customizeSymbol\" name=\"classes.rules\"></pry-tab>\n <pry-tab [templateRef]=\"customizeTile\" name=\"customize.tile\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #customizeTemplate>\n <pry-admin-classes-customize-tooltip\n (backPressed)=\"goBack()\"\n [currentClass]=\"currentClass$ | async\"\n ></pry-admin-classes-customize-tooltip>\n </ng-template>\n <ng-template #customizeTable>\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.tableAttrs' | i18n }}</h2>\n <div\n cdkDropList\n #defaultList=\"cdkDropList\"\n [cdkDropListData]=\"defaultAttributes\"\n [cdkDropListConnectedTo]=\"[notDefaultList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (item of defaultAttributes; track item) {\n <div class=\"item\" cdkDrag>{{ item }}</div>\n }\n </div>\n </div>\n\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.noTableAttrs' | i18n }}</h2>\n <div\n cdkDropList\n #notDefaultList=\"cdkDropList\"\n [cdkDropListData]=\"otherAttributes\"\n [cdkDropListConnectedTo]=\"[defaultList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (item of otherAttributes; track item) {\n <div class=\"item\" cdkDrag>{{ item }}</div>\n }\n </div>\n </div>\n\n <div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" (click)=\"updateTableAttrs()\">\n {{ '@pry.admin.customize.updateTable' | i18n }}\n </button>\n </div>\n </ng-template>\n <ng-template #customizeSymbol>\n <pry-admin-classes-customize-symbol\n (backPressed)=\"goBack()\"\n [currentClass]=\"currentClass$ | async\"\n ></pry-admin-classes-customize-symbol>\n </ng-template>\n <ng-template #customizeTile>\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.tile' | i18n }}</h2>\n <div\n cdkDropList\n #defaultTilesList=\"cdkDropList\"\n [cdkDropListData]=\"defaultTileAttributes\"\n [cdkDropListConnectedTo]=\"[notDefaultTilesList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (item of defaultTileAttributes; track item) {\n <div class=\"item\" cdkDrag>{{ item }}</div>\n }\n </div>\n </div>\n\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.noTileAttrs' | i18n }}</h2>\n <div\n cdkDropList\n #notDefaultTilesList=\"cdkDropList\"\n [cdkDropListData]=\"otherTileAttributes\"\n [cdkDropListConnectedTo]=\"[defaultTilesList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (item of otherTileAttributes; track item) {\n <div class=\"item\" cdkDrag>{{ item }}</div>\n }\n </div>\n </div>\n\n <div>\n @if (!isTileConfValid()) {\n <p>{{ '@pry.admin.customize.tileHint' | i18n : { max: maxTilesAttributes } }}</p>\n }\n </div>\n\n <div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" (click)=\"updateTileAttrs()\" [disabled]=\"!isTileConfValid()\">\n {{ '@pry.admin.customize.updateTile' | i18n }}\n </button>\n </div>\n </ng-template>\n</div>\n","import { Component } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { AdminActions } from '../store/admin.actions';\nimport { AdminState } from '../store/admin.reducer';\n\n@Component({\n selector: 'pry-admin',\n templateUrl: './admin.component.html'\n})\nexport class PryAdminComponent extends SubscriptionnerDirective {\n limit?: string;\n\n constructor(private store: Store<AdminState>, private route: ActivatedRoute) {\n super();\n this.store.dispatch(AdminActions.resetActions());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.subscriptions.add(this.route.data.subscribe((data) => (this.limit = data['limitMenu'])));\n }\n}\n\nexport function noWhitespaceValidator(control: AbstractControl) {\n const isWhitespace = (control.value || '').trim().length < 3 && /\\s/.test(control.value);\n const isValid = !isWhitespace;\n return isValid ? null : { whitespace: true };\n}\n","<h2 class=\"admin__title\">{{ (!limit ? '@pry.admin.title' : '@pry.admin.menus.' + limit) | i18n }}</h2>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassActions, ClassSelectors, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\nimport { noWhitespaceValidator } from '../../../components/admin.component';\nimport { AdminClassActions } from '../store/admin-class.actions';\nimport { AdminClassSelectors } from '../store/admin-class.selectors';\n\n@Component({\n selector: 'pry-admin-classes-form',\n templateUrl: './admin-classes-form.component.html'\n})\nexport class AdminClassesFormComponent extends SubscriptionnerDirective implements OnInit, OnDestroy {\n classNames$?: Observable<string[]>;\n nameAlreadyExists$?: Observable<boolean>;\n storageOptions$: Observable<string[]>;\n\n sub = new Subscription();\n\n isSubmitted = false;\n classForm: UntypedFormGroup;\n _currentClass?: Class;\n\n @Input() set currentClass(val: Class) {\n this._currentClass = val;\n if (!!this._currentClass) {\n this.classForm.controls['storage'].disable({ onlySelf: true });\n } else {\n this.classForm.controls['storage'].enable({ onlySelf: true });\n }\n }\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder\n ) {\n super();\n this.classForm = this.formBuilder.group({\n id: [uuid()],\n name: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(100), noWhitespaceValidator]],\n description: [{ value: '', disabled: true }],\n storage: ['ELASTIC']\n });\n this.store.dispatch(AdminClassActions.getStorageOptions());\n this.storageOptions$ = this.store.select(AdminClassSelectors.storageOptions);\n }\n\n ngOnInit(): void {\n this.store.dispatch(ClassActions.load({}));\n this.classNames$ = this.store\n .select(ClassSelectors.classes)\n .pipe(map((classes: Class[]) => classes.map((clazz: Class) => clazz.name.toLowerCase())));\n this.nameAlreadyExists$ = combineLatest([\n this.classForm.get('name')?.valueChanges as Observable<string>,\n this.classNames$\n ]).pipe(\n map(([value, classNames]) => classNames.includes(value.toLowerCase()) && value != this._currentClass?.name)\n );\n this.subscriptions.add(\n this.nameAlreadyExists$.subscribe((value) => {\n if (value) {\n this.classForm.controls['name'].setErrors({ 'same-name': true });\n }\n return value;\n })\n );\n\n if (this._currentClass) {\n this.classForm.patchValue({\n id: this._currentClass.id,\n name: this._currentClass.name,\n storage: this._currentClass.storage\n });\n }\n }\n\n goBack() {\n const redirectPath = this._currentClass ? '../..' : '..';\n const path = this.router.createUrlTree([redirectPath], { relativeTo: this.route });\n this.store.dispatch(AdminClassActions.back({ path: path.toString() }));\n }\n\n addClass() {\n this.classForm.patchValue({\n name: this.classForm.value.name.trim()\n });\n this.isSubmitted = true;\n if (this.classForm.valid) {\n this.isSubmitted = false;\n let classToSave = this.classForm.getRawValue();\n if (this._currentClass) {\n classToSave = {\n ...this._currentClass,\n name: this.classForm.value.name\n } as Class;\n let path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n this.store.dispatch(AdminClassActions.saveClass({ class: classToSave, route: path.toString() }));\n } else {\n classToSave.attributes = [];\n let path = this.router.createUrlTree(['..', classToSave.id], { relativeTo: this.route });\n this.store.dispatch(AdminClassActions.saveInterClass({ class: classToSave, route: path.toString() }));\n }\n }\n }\n}\n","<form class=\"o-form\" [formGroup]=\"classForm\" (ngSubmit)=\"addClass()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.classes.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n [attr.aria-labelledby]=\"isSubmitted && classForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n class=\"a-form-field\"\n formControlName=\"name\"\n id=\"name\"\n required\n type=\"text\"\n [attr.aria-invalid]=\"isSubmitted && classForm.get('name')?.invalid\"\n />\n @if (isSubmitted && classForm.get('name')?.invalid) {\n <label\n id=\"name-error\"\n for=\"name\"\n class=\"a-label a-label--help -error\"\n >\n @if (classForm.get('name')?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (classForm.get('name')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (classForm.get('name')?.hasError('minlength')) {\n <span>{{ '@pry.admin.minLength' | i18n: { len: 3 } }}</span>\n }\n @if (classForm.get('name')?.hasError('maxlength')) {\n <span>{{\n '@pry.admin.maxLength' | i18n: { len: 100 }\n }}</span>\n }\n @if (classForm.get('name')?.hasError('whitespace')) {\n <span>{{ '@pry.admin.noWhitespace' | i18n }}</span>\n }\n </label>\n }\n </div>\n <div class=\"u-display-flex -row -align-center\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"storage_options\">\n {{ '@pry.admin.storage.label' | i18n }}\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n [items]=\"storageOptions$ | async\"\n i18nPrefix=\"@pry.admin.storage.options.\"\n formControlName=\"storage\"\n id=\"storage_options\"\n ></pry-select>\n </div>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-md\"\n [attr.data-tooltip]=\"'@pry.admin.storage.description.' + classForm.get('storage')?.value | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(_currentClass ? '@pry.admin.edit' : '@pry.admin.next') | i18n\"\n ></button>\n </div>\n</form>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassActions, ClassSelectors } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-admin-classes-edit',\n templateUrl: './admin-classes-edit.component.html'\n})\nexport class AdminClassesEditComponent implements OnInit {\n currentClass$?: Observable<Class | undefined>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n }\n\n ngOnInit(): void {\n this.route.params.subscribe(\n (params) => (this.currentClass$ = this.store.select(ClassSelectors.classById(params['id'])))\n );\n }\n}\n","@if (currentClass$ | async; as currentClass) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.classes.rename' | i18n }}</h1>\n <pry-admin-classes-form [currentClass]=\"currentClass\"></pry-admin-classes-form>\n </div>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-classes-new',\n templateUrl: './admin-classes-new.component.html'\n})\nexport class AdminClassesNewComponent {}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.classes.add' | i18n }}</h1>\n <pry-admin-classes-form></pry-admin-classes-form>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { Category, Dataset, MissingGroupsByEntity } from '@provoly/dashboard';\n\nexport const AdminDatasetActions = {\n failure: createAction('[Dataset] Failure effect Dataset', props<{ error: any }>()),\n create: createAction('[Dataset] Create Dataset', props<{ dataset: Dataset; route: string }>()),\n update: createAction('[Dataset] Update Dataset', props<{ dataset: Dataset; route?: string }>()),\n confirmDatasetDeletion: createAction(\n '[Dataset] Confirm deletion',\n props<{ name: string; route: string; addRoute: string }>()\n ),\n delete: createAction('[Dataset] Delete Dataset', props<{ name: string; route: string; addRoute: string }>()),\n deleted: createAction('[Dataset] Dataset is deleted call to admin', props<{ addRoute: string }>()),\n\n selectDataset: createAction('[Dataset] Open Dataset details', props<{ dataset: Dataset }>()),\n unselectDataset: createAction('[Dataset] Unselect Dataset'),\n getDatasetById: createAction('[Dataset] Get Dataset by ID', props<{ id: string }>()),\n getDatasetByIdSuccess: createAction('[Dataset] Get Dataset by Id Success', props<{ data: Dataset }>()),\n getDatasetByIdFailure: createAction('[Dataset] Get Dataset by Id Failure', props<{ error: any }>()),\n openNewDataset: createAction('[Dataset] Open New Dataset', props<{ route: string }>()),\n setMissingGroups: createAction('[Dataset] Set Missing Groups', props<{ missingGroups?: MissingGroupsByEntity }>()),\n addCategory: createAction('[Dataset] Add Category', props<{ category: Category }>())\n};\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AdminDatasetActions } from '../../admin-dataset/store/admin-dataset.actions';\nimport {\n Category,\n CategoryActions,\n CategorySelectors,\n DataSourceActions,\n DataSourceSelectors\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { v4 as uuid } from 'uuid';\nimport { AdminClassActions } from '../../admin-classes/store/admin-class.actions';\n\n@Component({\n selector: 'pry-add-category-modal',\n templateUrl: './add-category-modal.component.html'\n})\nexport class AddCategoryModalComponent implements OnInit {\n categories$!: Observable<Category[]>;\n filteredCategories$!: Observable<Category[]>;\n catToAdd = {\n id: uuid(),\n name: ''\n };\n search$ = new BehaviorSubject<string | undefined>(undefined);\n\n @Input({ required: true }) entityType!: 'attribute' | 'dataset';\n @Output() closeModal = new EventEmitter<void>();\n @Output() category = new EventEmitter<Category>();\n\n actions = {\n attribute: {\n load: () => this.store.dispatch(CategoryActions.load({})),\n select: () => this.store.select(CategorySelectors.categories),\n add: (category: Category) => this.store.dispatch(AdminClassActions.saveCategory({ category }))\n },\n dataset: {\n load: () => this.store.dispatch(DataSourceActions.dataset.getCategories()),\n select: () => this.store.select(DataSourceSelectors.categories),\n add: (category: Category) => this.store.dispatch(AdminDatasetActions.addCategory({ category }))\n }\n };\n\n constructor(private store: Store<any>) {}\n\n ngOnInit() {\n this.loadCategories();\n this.categories$ = this.selectCategories();\n this.filteredCategories$ = combineLatest([this.categories$, this.search$]).pipe(\n map(([categories, search]) =>\n search\n ? categories.filter((category) => category.name.toLowerCase().includes(search?.toLowerCase()))\n : categories\n )\n );\n }\n\n loadCategories(): void {\n this.actions[this.entityType].load();\n }\n\n selectCategories(): Observable<Category[]> {\n return this.actions[this.entityType].select();\n }\n\n addCategory(): void {\n this.actions[this.entityType].add(this.catToAdd);\n this.selectCategory(this.catToAdd);\n }\n\n selectCategory(category: Category) {\n this.category.emit(category);\n this.closeModal.emit();\n }\n\n search($event: Event) {\n this.search$.next(($event.target as HTMLInputElement).value);\n }\n}\n","<div class=\"o-modal o-modal--selector\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.admin.shared.categoryModal.' + entityType + '.select' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeModal.emit()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <form (ngSubmit)=\"addCategory()\">\n <div class=\"m-form-label-field selector\">\n <label class=\"a-label\" for=\"name-search\">{{\n '@pry.admin.shared.categoryModal.' + entityType + '.searchOrCreate' | i18n\n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n (input)=\"search($event)\"\n [(ngModel)]=\"catToAdd.name\"\n name=\"name\"\n id=\"name-search\"\n />\n </div>\n <div>\n <h3>\n {{ '@pry.admin.shared.categoryModal.' + entityType + '.name' | i18n }}\n </h3>\n <div class=\"u-display-flex -column\">\n @for (category of filteredCategories$ | async; track category.id) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--ghost -no-padding u-display-flex -justify-start -width-full\"\n (click)=\"selectCategory(category)\"\n >\n <span class=\"u-visually-hidden\">{{\n '@pry.admin.shared.categoryModal.' + entityType + '.selectIt' | i18n\n }}</span>\n {{ category.name }}\n </button>\n }\n </div>\n </div>\n @if ((categories$ | async)?.length === 0) {\n <span>{{ '@pry.admin.shared.categoryModal.noCategories' | i18n }}</span>\n } @else if ((filteredCategories$ | async)?.length === 0) {\n <div class=\"u-display-flex -column\">\n <p class=\"a-p\">\n <strong>{{ catToAdd.name }} </strong>\n <span [innerHTML]=\"'@pry.admin.shared.categoryModal.' + entityType + '.add' | i18n\"></span>\n </p>\n <button type=\"submit\" class=\"a-btn a-btn--primary u-self-center\">\n {{ '@pry.admin.shared.categoryModal.' + entityType + '.create' | i18n }}\n </button>\n </div>\n }\n </form>\n</div>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Category,\n CategoryActions,\n CategorySelectors,\n Class,\n DEFAULT_CATEGORY_UUID,\n Field,\n FIELD_I18N,\n FieldActions,\n FieldSelectors,\n PryDialogService,\n PryI18nService,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { combineLatest, debounceTime, distinctUntilChanged, map, Observable, startWith } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\nimport { noWhitespaceValidator } from '../../../../components/admin.component';\nimport { AdminActions } from '../../../../store/admin.actions';\nimport { AdminClassActions } from '../../store/admin-class.actions';\nimport { AddCategoryModalComponent } from '../../../shared/add-category-modal/add-category-modal.component';\n\n@Component({\n selector: 'pry-admin-attributes-form',\n templateUrl: './admin-attributes-form.component.html'\n})\nexport class AdminAttributesFormComponent extends SubscriptionnerDirective implements OnInit, OnDestroy {\n attrForm: UntypedFormGroup;\n\n attributeNames?: string[];\n attributeTechnicalNames?: string[];\n nameAlreadyExists$?: Observable<boolean>;\n technicalNameAlreadyExists$?: Observable<boolean>;\n nameAlreadyExists = false;\n technicalNameAlreadyExists = false;\n\n fields$: Observable<Field[]>;\n selectedFieldTypeDescription$!: Observable<string>;\n categories$: Observable<Category[]>;\n\n @Input() selectedClass?: Class;\n @Input() interClass?: Class;\n @Input() selectedAttribute?: Attribute;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder,\n private i18nService: PryI18nService,\n private dialog: PryDialogService\n ) {\n super();\n this.store.dispatch(FieldActions.load({}));\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.store.dispatch(CategoryActions.load({}));\n this.categories$ = this.store.select(CategorySelectors.categories);\n\n this.attrForm = this.formBuilder.group({\n id: [uuid()],\n technicalName: [\n '',\n [Validators.required, Validators.minLength(2), Validators.maxLength(100), noWhitespaceValidator]\n ],\n name: ['', [Validators.maxLength(50), noWhitespaceValidator]],\n description: [{ value: '', disabled: true }],\n field: ['', [Validators.required]],\n category: [DEFAULT_CATEGORY_UUID],\n multiValued: [false]\n });\n }\n\n ngOnInit(): void {\n this.attributeNames = this.interClass?.attributes.map((attr: Attribute) => attr.name);\n this.attributeTechnicalNames = this.interClass?.attributes.map((attr: Attribute) => attr.technicalName);\n\n if (this.selectedClass) {\n this.attributeNames = this.selectedClass.attributes.map((attr: Attribute) => attr.name);\n this.attributeTechnicalNames = this.selectedClass.attributes.map((attr: Attribute) => attr.technicalName);\n\n if (this.selectedAttribute) {\n this.attrForm.patchValue({\n id: this.selectedAttribute.id,\n technicalName: this.selectedAttribute.technicalName,\n name: this.selectedAttribute.name ?? this.selectedAttribute.technicalName,\n field: this.selectedAttribute.field,\n category: this.selectedAttribute.category\n });\n this.attrForm.controls['field'].disable();\n }\n }\n\n if (this.attributeNames) {\n this.nameAlreadyExists$ = this.attrForm\n .get('name')!\n .valueChanges.pipe(\n map((value) => !!this.attributeNames?.includes(value) && value != this.selectedAttribute?.name)\n );\n this.subscriptions.add(this.nameAlreadyExists$.subscribe((value) => (this.nameAlreadyExists = value)));\n }\n\n this.subscriptions.add(\n this.attrForm\n .get('technicalName')!\n .valueChanges.pipe(distinctUntilChanged(), debounceTime(500))\n .subscribe((value) => {\n this.attrForm.patchValue({\n name: value.slice(0, 50)\n });\n })\n );\n\n if (this.attributeTechnicalNames) {\n this.technicalNameAlreadyExists$ = this.attrForm\n .get('technicalName')!\n .valueChanges.pipe(\n map(\n (value) => !!this.attributeTechnicalNames?.includes(value) && value != this.selectedAttribute?.technicalName\n )\n );\n this.subscriptions.add(\n this.technicalNameAlreadyExists$.subscribe((value) => {\n this.technicalNameAlreadyExists = value;\n })\n );\n }\n\n this.selectedFieldTypeDescription$ = combineLatest([\n this.attrForm.get('field')!.valueChanges.pipe(startWith(this.attrForm.get('field')?.value)),\n this.fields$\n ]).pipe(\n map(([selectedFieldId, fields]) =>\n !selectedFieldId\n ? ''\n : FIELD_I18N.information +\n fields.find(\n (field) => field.id === (typeof selectedFieldId === 'string' ? selectedFieldId : selectedFieldId.id)\n )?.type\n )\n );\n }\n\n goBack() {\n const redirectPath = this.selectedAttribute ? '../..' : '..';\n const path = this.router.createUrlTree([redirectPath], { relativeTo: this.route });\n this.store.dispatch(AdminActions.routeTo({ path: path.toString() }));\n }\n\n addAttribute() {\n this.attrForm.patchValue({\n name: this.attrForm.value.name.trim()\n });\n\n if (!this.attrForm.value.name) {\n this.attrForm.patchValue({\n name: this.attrForm.value.technicalName.slice(0, 50)\n });\n }\n\n if (this.attrForm.valid) {\n let attrToSave = this.attrForm.getRawValue() as Attribute;\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n\n if (this.selectedAttribute) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n\n if (this.selectedClass) {\n this.store.dispatch(\n AdminClassActions.saveAttributeForClass({\n classId: this.selectedClass.id,\n attribute: attrToSave,\n route: path.toString()\n })\n );\n } else if (this.interClass) {\n let interAttribute = Object.assign([], this.interClass.attributes);\n let interClassUpdated = { ...this.interClass };\n interAttribute.push(attrToSave);\n interClassUpdated.attributes = interAttribute;\n this.store.dispatch(AdminClassActions.saveInterClass({ class: interClassUpdated, route: path.toString() }));\n }\n }\n }\n\n openModal() {\n const ref = this.dialog.open(AddCategoryModalComponent);\n ref.component!.entityType = 'attribute';\n this.subscriptions.add(\n ref.component!.category.subscribe((category) => {\n this.attrForm.patchValue({\n category: category.id\n });\n })\n );\n this.subscriptions.add(ref.component!.closeModal.subscribe(() => ref.close()));\n }\n\n protected readonly FIELD_I18N = FIELD_I18N;\n}\n","<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_technicalName\">{{ '@pry.admin.classes.attributes.technicalName' | i18n }}</label>\n <input id=\"attr_technicalName\" type=\"text\" class=\"a-form-field\" formControlName=\"technicalName\" required />\n @if (technicalNameAlreadyExists$ | async) {\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n }\n @if (attrForm.get('technicalName')?.invalid) {\n <div>\n @if (attrForm.get('technicalName')?.dirty && attrForm.get('technicalName')?.hasError('required')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n }\n @if (attrForm.get('technicalName')?.hasError('minlength')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.minLength' | i18n: { len: 2 }\n }}</label>\n </div>\n }\n @if (attrForm.get('technicalName')?.hasError('maxlength')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.maxLength' | i18n: { len: 100 }\n }}</label>\n </div>\n }\n @if (\n attrForm.get('technicalName')?.hasError('whitespace') && !attrForm.get('technicalName')?.hasError('minlength')\n ) {\n <div\n >\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.noWhitespace' | i18n\n }}</label>\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" />\n @if (nameAlreadyExists$ | async) {\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n }\n @if (attrForm.get('name')?.invalid) {\n <div>\n @if (attrForm.get('name')?.hasError('maxlength')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n: { len: 50 }\n }}</label>\n </div>\n }\n @if (attrForm.get('name')?.hasError('whitespace')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"type\"\n formControlName=\"field\"\n [items]=\"fields$ | async\"\n [autocomplete]=\"true\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n required=\"true\"\n [template]=\"templateOption\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"aligned-option\">\n <p>{{ item.name }}</p>\n @if (item.crs) {\n <div class=\"a-chip\">{{ item.crs }}</div>\n }\n </div>\n </ng-template>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-lg u-self-center u-flex-shrink-0\"\n [attr.data-tooltip]=\"(selectedFieldTypeDescription$ | async) ?? '' | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n @if (attrForm.get('field')?.invalid) {\n <div>\n @if (attrForm.get('field')?.dirty && attrForm.get('field')?.hasError('required')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"type\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</label>\n <pry-select\n id=\"category\"\n class=\"form-control\"\n formControlName=\"category\"\n [items]=\"categories$ | async\"\n (click)=\"openModal()\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n *pryAccess=\"{ module: 'admin', page: 'classes', action: 'add_attribute' }\"\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"attrForm.invalid || nameAlreadyExists || technicalNameAlreadyExists\"\n [innerHTML]=\"(selectedAttribute ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n</form>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Attribute, Class, ClassActions, ClassSelectors } from '@provoly/dashboard';\nimport { map, Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-admin-attributes-edit',\n templateUrl: './admin-attributes-edit.component.html'\n})\nexport class AdminAttributesEditComponent implements OnInit {\n selectedClass$?: Observable<Class>;\n selectedAttribute$?: Observable<Attribute | undefined>;\n\n constructor(\n private store: Store<any>,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.selectedClass$ = this.store.select(ClassSelectors.classById(params['id']));\n this.selectedAttribute$ = this.selectedClass$.pipe(\n map((selectedClass) => selectedClass.attributes.find((attr) => attr.id == params['attrId']))\n );\n });\n }\n}\n","@if (selectedClass$ | async; as selectedClass) {\n <div class=\"classes-container\">\n @if (selectedAttribute$ | async; as selectedAttribute) {\n <div>\n <h2 class=\"classes__title\" [innerHTML]=\"'@pry.admin.classes.attributes.edit' | i18n\"></h2>\n <pry-admin-attributes-form\n [selectedClass]=\"selectedClass\"\n [selectedAttribute]=\"selectedAttribute\"\n ></pry-admin-attributes-form>\n </div>\n }\n </div>\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassActions, ClassSelectors } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminClassSelectors } from '../../store/admin-class.selectors';\n\n@Component({\n selector: 'pry-admin-attributes-new',\n templateUrl: './admin-attributes-new.component.html'\n})\nexport class AdminAttributesNewComponent implements OnInit {\n selectedClass$?: Observable<Class>;\n interClass$?: Observable<Class | undefined>;\n\n constructor(\n private store: Store<any>,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.selectedClass$ = this.store.select(ClassSelectors.classById(params['id']));\n this.interClass$ = this.store.select(AdminClassSelectors.interClass);\n });\n }\n}\n","@if (selectedClass$ | async; as selectedClass) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">\n {{ '@pry.admin.classes.title' | i18n: { class: selectedClass.name } }}\n </h1>\n <h2>\n {{ '@pry.admin.classes.attributes.add' | i18n }}\n </h2>\n <pry-admin-attributes-form [selectedClass]=\"selectedClass\"></pry-admin-attributes-form>\n </div>\n}\n\n@if (interClass$ | async; as selectedClass) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\" [innerHTML]=\"'@pry.admin.classes.attributes.add' | i18n: { class: selectedClass.name }\"></h1>\n <pry-admin-attributes-form [interClass]=\"selectedClass\"></pry-admin-attributes-form>\n </div>\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, OnDestroy, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n AttributeExtended,\n BaseToolboxAction,\n Category,\n CategoryActions,\n CategorySelectors,\n Class,\n ClassActions,\n ClassSelectors,\n ConfigActions,\n Field,\n FieldActions,\n FieldSelectors,\n PryI18nService\n} from '@provoly/dashboard';\nimport { combineLatest, filter, map, Observable, of, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminClassActions } from '../store/admin-class.actions';\nimport { AdminClassSelectors } from '../store/admin-class.selectors';\n\n@Component({\n selector: 'pry-admin-classes-view',\n templateUrl: './admin-classes-view.component.html'\n})\nexport class AdminClassesViewComponent implements OnInit, OnDestroy {\n selectedclass$?: Observable<Class>;\n interClass$?: Observable<Class | undefined>;\n attributes$: Observable<Attribute[]> = of([]);\n fields$: Observable<Field[]> = of([]);\n categories$: Observable<Category[]> = of([]);\n attributesExtended$?: Observable<AttributeExtended[]>;\n selectedAttributeId$: Observable<string | undefined>;\n\n interClass?: Class;\n\n sub = new Subscription();\n sortActive? = 'name';\n sortDirection? = 'asc';\n selectedClassId = '';\n backPath: string;\n addAttributePath: string;\n openModal$: Observable<boolean>;\n private overlayRef?: OverlayRef;\n @ViewChild('confirmationModal', { read: TemplateRef }) confirmationModal!: TemplateRef<any>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private i18n: PryI18nService\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(CategoryActions.load({}));\n this.store.dispatch(AdminClassActions.unselectAttribute());\n\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.categories$ = this.store.select(CategorySelectors.categories);\n this.selectedAttributeId$ = this.store.select(AdminClassSelectors.selectedAttributeId);\n this.backPath = this.router.createUrlTree(['..'], { relativeTo: this.route }).toString();\n this.addAttributePath = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route }).toString();\n this.openModal$ = this.store.select(AdminClassSelectors.openModal);\n }\n\n ngOnInit(): void {\n this.interClass$ = this.store.select(AdminClassSelectors.interClass);\n this.sub.add(this.interClass$.subscribe((c) => (this.interClass = c)));\n if (this.interClass) {\n if (this.interClass.attributes.length > 0) {\n this.attributes$ = of(this.interClass.attributes);\n this.attributesExtended$ = this.getAttrExtended();\n }\n } else {\n this.route.params.subscribe((params) => {\n this.selectedClassId = params['id'];\n this.selectedclass$ = this.store.select(ClassSelectors.classById(this.selectedClassId));\n this.attributes$ = this.selectedclass$.pipe(map((selectedClass) => selectedClass.attributes));\n this.attributesExtended$ = this.getAttrExtended();\n });\n }\n this.setClassActions();\n this.sub.add(\n this.openModal$.subscribe((open) => {\n if (open) {\n this.showModal();\n } else {\n this.closeModal();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n private getAttrExtended() {\n return combineLatest([this.attributes$, this.categories$]).pipe(\n filter(([attributes, categories]) => categories.length > 0),\n map(([attributes, categories]) => {\n return attributes.map(\n (attr: Attribute) =>\n ({\n ...attr,\n fieldName: attr.field.name,\n categoryName: attr.category\n ? categories.find((category) => category.id === attr.category)?.name ??\n this.i18n.instant('@pry.admin.attributes.unknownCategory')\n : this.i18n.instant('@pry.admin.attributes.noCategory')\n }) as AttributeExtended\n );\n })\n );\n }\n\n private setClassActions() {\n this.store.dispatch(AdminActions.resetActions());\n let actions = [\n {\n action: AdminClassActions.back({ path: this.backPath }),\n label: 'back',\n icon: 'arrow_back'\n },\n {\n action: AdminActions.routeTo({ path: this.addAttributePath }),\n label: 'addAttribute',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ] as BaseToolboxAction[];\n\n if (this.interClass) {\n actions.push({\n action: AdminClassActions.openModal(),\n label: 'addClass',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n });\n }\n\n this.store.dispatch(\n AdminActions.mainActions({\n actions: actions\n })\n );\n }\n\n private setAttributeActions(attrId: string) {\n this.sub.add(\n this.selectedAttributeId$.subscribe((attributeId) => {\n let editPath = this.router.createUrlTree([attributeId, 'edit'], { relativeTo: this.route }).toString();\n\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminClassActions.back({ path: this.backPath }),\n label: 'back',\n icon: 'arrow_back'\n },\n {\n action: AdminActions.routeTo({ path: editPath }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'fields',\n actionAccess: 'write'\n },\n {\n action: AdminClassActions.confirmAttributeDeletion({\n classId: this.selectedClassId,\n attrId: attrId,\n backPath: this.backPath,\n addAttrPath: this.addAttributePath\n }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n })\n );\n })\n );\n }\n\n selectAttr(attr: AttributeExtended) {\n this.store.dispatch(AdminClassActions.selectAttribute({ attrExtended: attr }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminAttributesSelectComponent' }));\n this.setAttributeActions(attr.id);\n this.store.dispatch(AdminActions.fetchAttributeAssociations({ id: attr.id }));\n }\n\n dispatchCloseModal() {\n this.store.dispatch(AdminClassActions.closeModal());\n }\n\n showModal() {\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['o-modal-wrapper'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe((_) => this.closeModal());\n this.overlayRef.attach(new TemplatePortal(this.confirmationModal, this.viewContainerRef));\n }\n\n closeModal() {\n this.overlayRef?.dispose();\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n }\n\n saveClass() {\n if (this.interClass) {\n this.store.dispatch(AdminClassActions.saveClass({ class: this.interClass, route: this.backPath }));\n }\n this.dispatchCloseModal();\n }\n}\n","@if ((selectedclass$ | async) || (interClass$ | async); as selectedClass) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">\n {{ '@pry.admin.classes.title' | i18n : { class: selectedClass.name } }}\n </h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.classes.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"technicalName\">{{ '@pry.admin.classes.attributes.technicalName' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</th>\n <th prySortHeader=\"field\">{{ '@pry.admin.classes.attributes.field' | i18n }}</th>\n <th prySortHeader=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (attr of attributesExtended$ | async | prySortData : sortActive : sortDirection; track attr) {\n <tr\n (click)=\"selectAttr(attr)\"\n [class.is-selected]=\"(selectedAttributeId$ | async) === attr.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-attr-' + attr.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedAttributeId$ | async) === attr.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-attr-' + attr.id\"\n >\n <span class=\"u-visually-hidden\">{{ attr.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ attr.technicalName }}</td>\n <td>{{ attr.name }}</td>\n <td>{{ attr.fieldName }}</td>\n <td>{{ attr.categoryName }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n}\n\n<ng-template #confirmationModal>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.admin.classes.createClassConfirmMessage' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"dispatchCloseModal()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"saveClass()\">\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"dispatchCloseModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassActions, ClassSelectors, ConfigActions, DatasetCount } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { AdminClassActions } from './store/admin-class.actions';\nimport { AdminClassSelectors } from './store/admin-class.selectors';\n\n@Component({\n selector: 'pry-admin-classes',\n templateUrl: './admin-classes.component.html'\n})\nexport class AdminClassesComponent implements OnInit, OnDestroy {\n classes$: Observable<Class[]>;\n selectedClassId$: Observable<string | undefined>;\n datasetCounts$: Observable<DatasetCount[]>;\n classesInputFlows$: Observable<any[]>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n sub = new Subscription();\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.loadDatasetCount());\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(AdminClassActions.unselectClass());\n this.store.dispatch(AdminClassActions.resetInterClass());\n this.store.dispatch(ConfigActions.loadCustomization({}));\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.selectedClassId$ = this.store.select(AdminClassSelectors.selectedClassId);\n this.datasetCounts$ = this.store.select(ClassSelectors.datasetCounts);\n this.classesInputFlows$ = combineLatest([this.classes$, this.datasetCounts$]).pipe(\n map(([classes, datasetCounts]) => {\n return classes.map((item) => ({\n name: item.name,\n id: item.id,\n count: datasetCounts.find((datasetCount) => datasetCount.id === item.id)?.count || 0\n }));\n })\n );\n }\n\n ngOnInit(): void {\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n viewAttributesClass(clazz: Class) {\n this.store.dispatch(AdminClassActions.selectClass({ clazz: clazz }));\n const path = this.router.createUrlTree(['.', clazz.id], { relativeTo: this.route });\n this.store.dispatch(AdminActions.routeTo({ path: path.toString() }));\n }\n\n selectClass(clazz: Class) {\n this.store.dispatch(AdminActions.fetchClassAssociations({ id: clazz.id }));\n this.store.dispatch(AdminClassActions.selectClass({ clazz: clazz }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminClassesSelectComponent' }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.classes.list' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.classes.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"image\">{{ '@pry.admin.classes.image' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.classes.name' | i18n }}</th>\n <th prySortHeader=\"lines\">{{ '@pry.admin.menus.dataset' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (clazz of classesInputFlows$ | async | prySortData: sortActive : sortDirection; track clazz) {\n <tr\n (click)=\"selectClass(clazz)\"\n [class.is-selected]=\"(selectedClassId$ | async) === clazz.id\"\n >\n <td class=\"view-details\">\n <button\n id=\"button-class-{{ clazz.id }}\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedClassId$ | async) === clazz.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-class-' + clazz.id\"\n >\n <span class=\"u-visually-hidden\">{{ clazz.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"clazz.id | translateId: { type: 'class', output: 'icon' } | async\"\n />\n </td>\n <td>{{ clazz.name }}</td>\n <td>{{ clazz.count }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { Dataset, MissingGroupsByEntity } from '@provoly/dashboard';\nimport { createReducer, on } from '@ngrx/store';\nimport { AdminDatasetActions } from './admin-dataset.actions';\n\nexport const datasetFeatureKey = '@pry/admin/datasets';\n\nexport interface AdminDatasetState {\n isLoading: boolean;\n error?: Error;\n selectedDataset: Dataset | null;\n missingGroups?: MissingGroupsByEntity;\n}\n\nexport const initialDatasetState: AdminDatasetState = {\n isLoading: false,\n selectedDataset: null\n};\n\nexport const datasetReducer = createReducer(\n initialDatasetState,\n on(AdminDatasetActions.getDatasetById, (state, action) => ({\n ...state,\n loading: true\n })),\n on(AdminDatasetActions.getDatasetByIdSuccess, (state, action) => ({\n ...state,\n selectedDataset: action.data,\n loading: false\n })),\n on(AdminDatasetActions.getDatasetByIdFailure, (state, action) => ({\n ...state,\n error: action.error,\n loading: false\n })),\n on(AdminDatasetActions.setMissingGroups, (state, { missingGroups }) => ({\n ...state,\n missingGroups\n })),\n on(AdminDatasetActions.unselectDataset, (state) => ({\n ...state,\n selectedDataset: null\n })),\n on(AdminDatasetActions.selectDataset, (state, action) => ({\n ...state,\n selectedDataset: action.dataset\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { AdminDatasetState, datasetFeatureKey } from './admin-dataset.reducer';\n\nconst selectFeature = createFeatureSelector<AdminDatasetState>(datasetFeatureKey);\n\nconst errors = createSelector(selectFeature, (state) => state.error);\nconst isLoading = createSelector(selectFeature, (state) => state.isLoading);\nconst selectedDatasetId = createSelector(selectFeature, (state) => state?.selectedDataset?.id);\nconst selectedDataset = createSelector(selectFeature, (state) => state?.selectedDataset);\nconst selectedDatasetMetadata = createSelector(selectFeature, (state) => state?.selectedDataset?.metadata ?? []);\nconst selectedDatasetMissingGroups = createSelector(selectFeature, (state) => state?.missingGroups);\n\nexport const AdminDatasetSelectors = {\n selectFeature,\n errors,\n isLoading,\n selectedDataset,\n selectedDatasetMetadata,\n selectedDatasetMissingGroups,\n selectedDatasetId\n};\n","import { Component, ElementRef, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n ClassActions,\n ClassSelectors,\n Dataset,\n DataSourceActions,\n DataSourceSelectors,\n DataSourceState,\n getShareLevel,\n PryI18nService\n} from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { IConfigHeader } from '../admin-metadata/shared/list-metadata/pry-list-metadata.component';\nimport { AdminDatasetActions } from './store/admin-dataset.actions';\nimport { AdminDatasetSelectors } from './store/admin-dataset.selectors';\n\n@Component({\n selector: 'pry-admin-dataset',\n templateUrl: './admin-dataset.component.html'\n})\nexport class AdminDatasetComponent {\n @ViewChild('input') input!: ElementRef;\n datasetList$: Observable<Dataset[]>;\n selectedDataset$: Observable<string | undefined>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n value: string = '';\n configHeader: Array<IConfigHeader>;\n labelDatasetSelected: string = '';\n editOpened: boolean = false;\n loading$: Observable<boolean>;\n\n validateAction: () => void;\n cancelAction: () => void;\n\n constructor(\n private store: Store<DataSourceState>,\n private translateService: PryI18nService,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.loading$ = this.store.select(ClassSelectors.loading);\n this.store.dispatch(DataSourceActions.dataset.loadDataset({}));\n this.store.dispatch(ClassActions.load({}));\n this.validateAction = () => this.validateName(this.labelDatasetSelected);\n this.cancelAction = () => this.cancelEdition();\n this.configHeader = [\n { headerType: 'label', label: this.translateService.instant('@pry.admin.dataset.name') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.dataset.oClass') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.dataset.type') }\n ];\n this.datasetList$ = this.store.select(DataSourceSelectors.datasets);\n this.selectedDataset$ = this.store.select(AdminDatasetSelectors.selectedDatasetId);\n this.store.dispatch(AdminDatasetActions.unselectDataset());\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminDatasetActions.openNewDataset({ route: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n cancelEdition(): void {\n this.toggleEditionDataset();\n this.store.dispatch(AdminDatasetActions.unselectDataset());\n }\n\n toggleEditionDataset(): void {\n this.editOpened = !this.editOpened;\n if (this.editOpened) {\n setTimeout(() => {\n this.input.nativeElement.focus();\n }, 10);\n }\n }\n\n validateName(newLabel: string): void {\n this.toggleEditionDataset();\n }\n\n changeValue($event: any) {\n this.labelDatasetSelected = $event;\n }\n\n selectDataset(dataset: Dataset) {\n this.store.dispatch(AdminActions.fetchDatasetAssociations({ id: dataset.id }));\n this.store.dispatch(AdminDatasetActions.selectDataset({ dataset }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminSelectDatasetComponent' }));\n }\n\n protected readonly getShareLevel = getShareLevel;\n}\n","<div class=\"o-base-container u-display-flex -column\">\n <h1 class=\"a-h1\">{{ '@pry.admin.dataset.title' | i18n }}</h1>\n @if (loading$ | async; as loading) {\n <div class=\"a-page-loader -relative\" [style.display]=\"'flex'\">\n <pry-page-loader></pry-page-loader>\n <p>{{ '@pry.widget.target.loading' | i18n }}...</p>\n </div>\n } @else {\n @if (datasetList$ | async; as datasetList) {\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n @for (conf of configHeader; track conf) {\n <th [prySortHeader]=\"conf.label\">{{ conf.label }}</th>\n }\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (dataset of datasetList | prySortData: sortActive : sortDirection; track dataset) {\n <tr\n (click)=\"selectDataset(dataset)\"\n [class.is-selected]=\"(selectedDataset$ | async) === dataset.id\"\n >\n <td class=\"view-details\">\n <button\n id=\"button-dataset- + {{ dataset.id }}\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedDataset$ | async) === dataset.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-dataset-' + dataset.id\"\n >\n <span class=\"u-visually-hidden\">{{ dataset.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ dataset.name }}</td>\n <td>{{ dataset.oClass | translateId: { type: 'class', output: 'name' } | async }}</td>\n <td>{{ '@pry.admin.dataset.' + dataset.type | i18n }}</td>\n <td>\n <pry-icon\n [iconSvg]=\"getShareLevel(dataset.groups).toLowerCase()\"\n class=\"a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.share.iconLabel.' + getShareLevel(dataset.groups) | i18n\"\n data-tooltip-position=\"left\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n }\n</div>\n\n<pry-modal\n [titleModal]=\"'@pry.toolbox.rename' | i18n\"\n [validateLabel]=\"'@pry.toolbox.manifest.check' | i18n\"\n [validateAction]=\"validateAction\"\n [cancelLabel]=\"'@pry.toolbox.manifest.close' | i18n\"\n [cancelAction]=\"cancelAction\"\n [opened]=\"this.editOpened\"\n >\n <div class=\"field__input\">\n <span>{{ '@pry.toolbox.manifest.name' | i18n }}</span>\n <input\n type=\"text\"\n (keyup.enter)=\"validateName(input.value)\"\n [ngModel]=\"labelDatasetSelected\"\n (ngModelChange)=\"changeValue($event)\"\n #input\n />\n </div>\n</pry-modal>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Category,\n Class,\n ClassActions,\n ClassSelectors,\n Dataset,\n DataSourceActions,\n DataSourceSelectors,\n DataSourceState,\n PryDatasetType,\n PryDialogService,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AdminDatasetActions } from '../store/admin-dataset.actions';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AddCategoryModalComponent } from '../../shared/add-category-modal/add-category-modal.component';\n\n@Component({\n selector: 'pry-admin-form-dataset',\n templateUrl: './admin-form-dataset.component.html'\n})\nexport class AdminFormDatasetComponent extends SubscriptionnerDirective implements OnInit, OnDestroy {\n @Input() dataset$?: Observable<Dataset | null>;\n\n datasetList$: Observable<Dataset[]>;\n datasetList: Dataset[] = [];\n datasetTypes: { label: string; value: string }[] = [];\n classes$: Observable<Class[]>;\n categories$: Observable<Category[]>;\n\n form!: UntypedFormGroup;\n\n isSameName = false;\n isSubmitted = false;\n\n constructor(\n private store: Store<DataSourceState>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder,\n private dialog: PryDialogService\n ) {\n super();\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(DataSourceActions.dataset.loadDataset({}));\n this.store.dispatch(DataSourceActions.dataset.getCategories());\n this.datasetList$ = this.store.select(DataSourceSelectors.datasets);\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.categories$ = this.store.select(DataSourceSelectors.categories);\n\n this.form = this.formBuilder.group({\n id: [uuidv4()],\n name: ['', [Validators.required, Validators.maxLength(100)]],\n oClass: ['', [Validators.required]],\n type: ['', [Validators.required]],\n description: ['', [Validators.maxLength(500)]],\n categories: [[]]\n });\n }\n\n ngOnInit(): void {\n this.isSameName = false;\n this.subscriptions.add(\n this.datasetList$.subscribe((dataset) => {\n this.datasetList = dataset;\n })\n );\n\n this.datasetTypes = Object.keys(PryDatasetType).map((label) => ({\n label: '@pry.admin.dataset.' + label,\n value: label\n }));\n\n this.subscriptions.add(\n this.dataset$?.subscribe((dataset: Dataset | null) => {\n if (dataset) {\n this.form.patchValue({\n id: dataset.id,\n name: dataset.name,\n oClass: dataset.oClass,\n type: dataset.type,\n description: dataset.description,\n categories: dataset.categories\n });\n\n this.form.controls['oClass'].disable();\n this.form.controls['type'].disable();\n }\n })\n );\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath() }));\n }\n\n getPath() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n if (this.dataset$) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n return path.toString();\n }\n\n changeValueName(value: string) {\n this.isSameName = false;\n }\n\n submit() {\n this.isSubmitted = true;\n if (this.form.valid) {\n this.isSubmitted = false;\n if (this.dataset$) {\n const path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n this.store.dispatch(AdminDatasetActions.update({ dataset: this.form.getRawValue(), route: path.toString() }));\n return;\n }\n const path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.isSameName = !!this.datasetList.find(\n (dataset) => this.form.get('name')?.value.toLowerCase() === dataset.name.toLowerCase()\n );\n if (!this.isSameName) {\n this.store.dispatch(AdminDatasetActions.create({ dataset: this.form.getRawValue(), route: path.toString() }));\n }\n }\n }\n\n openModal() {\n const ref = this.dialog.open(AddCategoryModalComponent);\n ref.component!.entityType = 'dataset';\n this.subscriptions.add(\n ref.component!.category.subscribe((category) => {\n if (!this.form.get('categories')?.value?.some((cat: Category) => cat.id === category.id)) {\n this.form.patchValue({\n categories: [...(this.form.get('categories')?.value ?? []), category]\n });\n }\n })\n );\n this.subscriptions.add(ref.component!.closeModal.subscribe(() => ref.close()));\n }\n}\n","<form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.dataset.name' | i18n }} <span class=\"-error\">*</span>\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n (ngModelChange)=\"changeValueName($event)\"\n [attr.aria-labelledby]=\"isSubmitted && form.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && form.get('name')?.invalid\"\n required\n />\n @if (\n (isSubmitted && form.get('name')?.invalid) ||\n (form.get('name')?.touched && form.get('name')?.hasError('required'))\n ) {\n <label class=\"a-label a-label--help -error\" id=\"name-error\" for=\"name\">{{ '@pry.admin.required' | i18n }}</label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"description-label\" for=\"description\"\n >{{ '@pry.admin.fields.description' | i18n }}\n </label>\n <textarea\n class=\"-resizable-both\"\n formControlName=\"description\"\n name=\"description\"\n id=\"description\"\n maxlength=\"500\"\n ></textarea>\n @if (form.get('description')?.hasError('maxlength')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"item-label\" for=\"class\"\n >{{ '@pry.admin.dataset.oClass' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"class\"\n formControlName=\"oClass\"\n [items]=\"classes$ | async\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"item-label\"\n ></pry-select>\n @if (form.get('oClass')?.touched && form.get('oClass')?.hasError('required')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"user-label\" for=\"type\"\n >{{ '@pry.admin.dataset.type' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"type\"\n formControlName=\"type\"\n [items]=\"datasetTypes\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n aria-labelledby=\"user-label\"\n ></pry-select>\n </div>\n\n <div class=\"u-display-flex -gap-20\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"tags-label\" for=\"tags\">{{ '@pry.dataset.tags' | i18n }}</label>\n <pry-select\n id=\"tags\"\n formControlName=\"categories\"\n [items]=\"categories$ | async\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"tags-label\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n ></pry-select>\n </div>\n <button class=\"a-btn a-btn--primary u-self-center\" type=\"button\" (click)=\"openModal()\">\n {{ '@pry.admin.dataset.addTag' | i18n }}\n </button>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" [disabled]=\"form.invalid\">\n {{ (dataset$ ? '@pry.admin.edit' : '@pry.admin.create') | i18n }}\n </button>\n </div>\n</form>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Dataset } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminDatasetActions } from '../store/admin-dataset.actions';\nimport { AdminDatasetSelectors } from '../store/admin-dataset.selectors';\nimport { AdminDatasetState } from '../store/admin-dataset.reducer';\n\n@Component({\n selector: 'pry-admin-edit-dataset',\n templateUrl: './admin-edit-dataset.component.html'\n})\nexport class AdminEditDatasetComponent implements OnInit {\n datasetSelected$: Observable<Dataset | null>;\n\n constructor(\n private store: Store<AdminDatasetState>,\n private route: ActivatedRoute\n ) {\n this.datasetSelected$ = this.store.select(AdminDatasetSelectors.selectedDataset);\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.store.dispatch(AdminDatasetActions.getDatasetById({ id: params['uuid'] }));\n });\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.dataset.edit.title' | i18n }}</h1>\n <pry-admin-form-dataset [dataset$]=\"datasetSelected$\"></pry-admin-form-dataset>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-new-dataset',\n templateUrl: './admin-new-dataset.component.html'\n})\nexport class AdminNewDatasetComponent {}\n","<div class=\"o-base-container\">\n <h4 class=\"admin__title\">{{ '@pry.admin.dataset.add.title' | i18n }}</h4>\n <pry-admin-form-dataset></pry-admin-form-dataset>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { Environment } from '@provoly/dashboard';\n\nexport const EnvironmentActions = {\n loadEnvironments: createAction('[Admin/Environment] Load Environments'),\n loadEnvironmentsSuccess: createAction(\n '[Admin/Environment Api] Load Environments Success',\n props<{ datas: Environment[] }>()\n ),\n loadEnvironmentsFailure: createAction('[Admin/Environment Api] Load Environments Failure', props<{ error: any }>()),\n\n saveEnvironment: createAction('[Admin/Environment] Save Environment', props<{ env: Environment; route: string }>()),\n saveEnvironmentSuccess: createAction('[Admin/Environment Api] Save Environment Success', props<{ route: string }>()),\n saveEnvironmentFailure: createAction('[Admin/Environment Api] Save Environment Failure', props<{ error: any }>()),\n\n selectEnvironment: createAction('[Admin/Environment] Select Environment', props<{ name: string }>()),\n selectEnvironmentSuccess: createAction(\n '[Admin/Environment Api] Select Environment Success',\n props<{ data: Environment }>()\n ),\n selectEnvironmentFailure: createAction('[Admin/Environment Api] Select Environment Failure', props<{ error: any }>()),\n\n updateEnvironment: createAction('[Admin/Environment] Update Environment', props<{ env: Environment }>()),\n updateEnvironmentSuccess: createAction(\n '[Admin/Environment Api] Update Environment Success',\n props<{ env: Environment }>()\n ),\n updateEnvironmentFailure: createAction('[Admin/Environment Api] Update Environment Failure', props<{ error: any }>()),\n\n deleteEnvironment: createAction(\n '[Admin/Environment] Delete Environment',\n props<{ name: string; route: string; addRoute: string }>()\n ),\n deleteEnvironmentSuccess: createAction(\n '[Admin/Environment Api] Delete Environment Success',\n props<{ route: string; addRoute: string }>()\n ),\n deleteEnvironmentFailure: createAction('[Admin/Environment Api] Delete Environment Failure', props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { Environment } from '@provoly/dashboard';\nimport { EnvironmentActions } from './environment.actions';\n\nexport const environmentFeatureKey = '@pry/admin/environment';\n\nexport interface EnvironmentState {\n environments: Environment[];\n loading: boolean;\n currentEnv?: Environment;\n}\n\nexport const initialEnvironmentState: EnvironmentState = {\n environments: [],\n loading: false\n};\n\nexport const environmentReducer = createReducer(\n initialEnvironmentState,\n on(EnvironmentActions.loadEnvironments, (state, action) => ({\n ...state,\n loading: true,\n currentEnv: undefined\n })),\n on(EnvironmentActions.loadEnvironmentsSuccess, (state, action) => ({\n ...state,\n environments: [...action.datas],\n loading: false\n })),\n on(EnvironmentActions.loadEnvironmentsFailure, (state, action) => ({\n ...state,\n loading: false\n })),\n on(EnvironmentActions.saveEnvironment, (state, action) => ({\n ...state,\n loading: true\n })),\n on(EnvironmentActions.saveEnvironmentSuccess, (state, action) => ({\n ...state,\n loading: false\n })),\n on(EnvironmentActions.saveEnvironmentFailure, (state, action) => ({\n ...state,\n loading: false\n })),\n\n on(EnvironmentActions.selectEnvironment, (state, action) => ({\n ...state,\n loading: true\n })),\n on(EnvironmentActions.selectEnvironmentSuccess, (state, action) => ({\n ...state,\n currentEnv: action.data,\n loading: false\n })),\n on(EnvironmentActions.selectEnvironmentFailure, (state, action) => ({\n ...state,\n loading: false\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromEnvironment from './environment.reducer';\n\nconst feature = createFeatureSelector<fromEnvironment.EnvironmentState>(fromEnvironment.environmentFeatureKey);\n\nconst environments = createSelector(feature, (state) => state?.environments);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst currentEnv = createSelector(feature, (state) => state?.currentEnv);\nconst currentEnvName = createSelector(currentEnv, (env) => env?.name);\n\nexport const EnvironmentSelectors = {\n feature,\n environments,\n loading,\n currentEnv,\n currentEnvName\n};\n","import { DatePipe } from '@angular/common';\nimport { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ENV_OPTIONS, Environment } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subject, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { EnvironmentActions } from '../store/environment.actions';\nimport { EnvironmentSelectors } from '../store/environment.selectors';\n\n@Component({\n selector: 'pry-admin-environment-form',\n templateUrl: './admin-environment-form.component.html'\n})\nexport class AdminEnvironmentFormComponent implements OnInit, OnChanges, OnDestroy {\n envNames$?: Observable<string[]>;\n nameAlreadyExists$?: Observable<boolean>;\n private currentEnv$ = new Subject<Environment>();\n sub = new Subscription();\n\n _currentEnv?: Environment;\n envForm: UntypedFormGroup;\n envOptions = ENV_OPTIONS;\n currentTypeTranslation = '';\n isSubmitted = false;\n\n @Input() set currentEnv(val: Environment) {\n this.currentEnv$.next(val);\n this._currentEnv = val;\n }\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder,\n private datePipe: DatePipe\n ) {\n this.envForm = this.formBuilder.group({\n name: ['', [Validators.required, Validators.pattern('^[a-zA-Z0-9_-]*$')]],\n type: [this.envOptions[0].varType],\n value: ['', [Validators.required, Validators.pattern('^[+-]?[0-9]*$')]]\n });\n this.sub.add(\n this.currentEnv$.subscribe((ce) => {\n this._currentEnv = ce;\n const type = ENV_OPTIONS.find((el) => el.varType === ce?.type);\n this.currentTypeTranslation = type ? type.translation : ENV_OPTIONS[0].translation;\n if (!!this._currentEnv) {\n this.envForm.controls['type'].disable({ onlySelf: true });\n } else {\n this.envForm.controls['type'].enable({ onlySelf: true });\n }\n })\n );\n }\n\n ngOnInit(): void {\n if (!this._currentEnv) {\n this.store.dispatch(EnvironmentActions.loadEnvironments());\n this.envNames$ = this.store\n .select(EnvironmentSelectors.environments)\n .pipe(map((envs: Environment[]) => envs.map((env: Environment) => env.name.toLowerCase())));\n\n this.nameAlreadyExists$ = combineLatest([\n this.envForm.get('name')?.valueChanges as Observable<string>,\n this.envNames$\n ]).pipe(map(([value, envNames]) => envNames.includes(value.toLowerCase())));\n this.sub.add(\n this.nameAlreadyExists$.subscribe((value) => {\n if (value) {\n this.envForm.controls['name'].setErrors({ 'same-name': true });\n }\n return value;\n })\n );\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this._currentEnv) {\n this.envForm.patchValue({\n name: this._currentEnv.name,\n type: this._currentEnv.type,\n value:\n this._currentEnv.type === 'DATE'\n ? this.datePipe.transform(this._currentEnv.value, 'yyyy-MM-dd')\n : this._currentEnv.value\n });\n this.onTypeChange(this._currentEnv.type);\n this.envForm.controls['name'].disable();\n }\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath(), params: undefined }));\n }\n\n addEnvironment() {\n this.isSubmitted = true;\n if (this.envForm.valid) {\n this.isSubmitted = false;\n let newEnv = this.envForm.getRawValue();\n if (newEnv.type === 'INTEGER') {\n newEnv.value = parseInt(newEnv.value);\n } else if (newEnv.type === 'DOUBLE') {\n newEnv.value = parseFloat(newEnv.value);\n } else if (newEnv.type === 'DATE') {\n newEnv.value = this.datePipe.transform(newEnv.value, 'yyyy/MM/dd');\n }\n this.store.dispatch(EnvironmentActions.saveEnvironment({ env: newEnv, route: this.getPath() }));\n }\n }\n\n onTypeChange(type: string) {\n if (type === 'INTEGER') {\n this.envForm.controls['value'].setValidators([Validators.required, Validators.pattern('^[+-]?[0-9]*$')]);\n } else if (type === 'DOUBLE') {\n this.envForm.controls['value'].setValidators([\n Validators.required,\n Validators.pattern('[+-]?([0-9]*[.])?[0-9]+')\n ]);\n } else {\n this.envForm.controls['value'].setValidators([Validators.required]);\n }\n }\n\n getPath() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n if (this._currentEnv) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n return path.toString();\n }\n}\n","<div class=\"o-base-container\">\n <form class=\"o-form\" [formGroup]=\"envForm\" (ngSubmit)=\"addEnvironment()\">\n <div class=\"m-form-label-field -width-sm\">\n <label for=\"environment_name\" id=\"name-label\" class=\"a-label\">\n {{ '@pry.admin.environment.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"environment_name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n [required]=\"!_currentEnv\"\n [attr.aria-labelledby]=\"isSubmitted && envForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && envForm.get('name')?.invalid\"\n />\n @if (isSubmitted && envForm.get('name')?.invalid) {\n <label\n id=\"name-error\"\n for=\"environment_name\"\n class=\"a-label a-label--help -error\"\n >\n @if (envForm.get('name')?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (envForm.get('name')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (envForm.get('name')?.hasError('pattern')) {\n <span>{{ '@pry.admin.environment.formatName' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"environment-type\">{{ '@pry.admin.environment.type' | i18n }}</label>\n <pry-select\n id=\"environment-type\"\n formControlName=\"type\"\n [items]=\"envOptions\"\n bindValue=\"varType\"\n bindLabel=\"translation\"\n (ngModelChange)=\"onTypeChange($event)\"\n [isForm]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n @if (envForm.value.type === 'DATE') {\n <label class=\"a-label\" for=\"value_date\">\n {{ '@pry.admin.environment.value' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input type=\"date\" id=\"value_date\" class=\"a-form-field\" formControlName=\"value\" required />\n @if (isSubmitted && envForm.get('value')?.invalid && envForm.get('value')?.hasError('required')) {\n <label\n id=\"value_date_error\"\n for=\"value_date\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n } @else {\n <label id=\"value-label\" class=\"a-label\">{{ '@pry.admin.environment.value' | i18n }}</label>\n <input\n id=\"environment_value\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && envForm.get('value')?.invalid ? 'value-label value-error' : 'value-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && envForm.get('value')?.invalid\"\n required\n />\n @if (isSubmitted && envForm.get('value')?.invalid) {\n <label\n id=\"value-error\"\n for=\"environment_value\"\n class=\"a-label a-label--help -error\"\n >\n @if (envForm.get('value')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (envForm.get('value')?.hasError('pattern')) {\n @if (envForm.value.type === 'DOUBLE') {\n <span>{{ '@pry.admin.environment.formatDouble' | i18n }}</span>\n }\n @if (envForm.value.type === 'INTEGER') {\n <span>{{ '@pry.admin.environment.formatInt' | i18n }}</span>\n }\n }\n </label>\n }\n }\n\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"predicate-create a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(_currentEnv ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-environment-new',\n templateUrl: './admin-environment-new.component.html'\n})\nexport class AdminEnvironmentNewComponent {}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.environment.add' | i18n }}</h1>\n <pry-admin-environment-form></pry-admin-environment-form>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Environment } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { EnvironmentActions } from '../store/environment.actions';\nimport { EnvironmentSelectors } from '../store/environment.selectors';\n\n@Component({\n selector: 'pry-admin-environment-update',\n templateUrl: './admin-environment-update.component.html'\n})\nexport class AdminEnvironmentUpdateComponent implements OnInit {\n currentEnv$: Observable<Environment | undefined>;\n\n constructor(\n private store: Store<any>,\n private route: ActivatedRoute\n ) {\n this.currentEnv$ = this.store.select(EnvironmentSelectors.currentEnv);\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) =>\n this.store.dispatch(EnvironmentActions.selectEnvironment({ name: params['name'] }))\n );\n }\n}\n","@if (currentEnv$ | async; as currentEnv) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.environment.edit' | i18n }}</h1>\n <pry-admin-environment-form [currentEnv]=\"currentEnv\"></pry-admin-environment-form>\n </div>\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ENV_OPTIONS, Environment } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { EnvironmentActions } from './store/environment.actions';\nimport { EnvironmentSelectors } from './store/environment.selectors';\n\n@Component({\n selector: 'pry-admin-environment',\n templateUrl: './admin-environment.component.html'\n})\nexport class AdminEnvironmentComponent {\n environments$: Observable<Environment[]>;\n loading$: Observable<boolean>;\n\n sortActive? = 'name';\n sortDirection? = 'asc';\n currentEnvName$: Observable<string | undefined>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.currentEnvName$ = this.store.select(EnvironmentSelectors.currentEnvName);\n this.store.dispatch(EnvironmentActions.loadEnvironments());\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'environment',\n actionAccess: 'write'\n }\n ]\n })\n );\n this.environments$ = this.store.select(EnvironmentSelectors.environments);\n this.loading$ = this.store.select(EnvironmentSelectors.loading);\n }\n\n goToSelectEnv(env: Environment) {\n this.store.dispatch(EnvironmentActions.selectEnvironment({ name: env.name }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminEnvironmentSelectComponent' }));\n }\n\n getTranslationType(type: string) {\n return ENV_OPTIONS.find((el) => el.varType === type)?.translation || 'undefined';\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.environment.list' | i18n }}</h1>\n\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.environment.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.environment.name' | i18n }}</th>\n <th prySortHeader=\"type\">{{ '@pry.admin.environment.type' | i18n }}</th>\n <th prySortHeader=\"value\">{{ '@pry.admin.environment.value' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (env of environments$ | async | prySortData: sortActive : sortDirection; track env) {\n <tr\n (click)=\"goToSelectEnv(env)\"\n [class.is-selected]=\"(currentEnvName$ | async) === env.name\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-env-' + env.name\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(currentEnvName$ | async) === env.name\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-env-' + env.name\"\n >\n <span class=\"u-visually-hidden\">{{ env.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ env.name }}</td>\n <td>{{ getTranslationType(env.type) | i18n }}</td>\n <td>{{ env.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { Field } from '@provoly/dashboard';\n\nexport const FieldsActions = {\n updateToolbox: createAction('[Admin/Fields] Update Toolbox Class'),\n failure: createAction('[Admin/Fields] failure action', props<{ error: any }>()),\n\n saveField: createAction('[Admin/Fields] Save Field', props<{ field: Field; route: string }>()),\n saveFieldSuccess: createAction('[Admin/Fields Api] Save Field Success', props<{ route: string }>()),\n updateField: createAction('[Admin/Fields] Update Field', props<{ field: Field; route: string }>()),\n updateFieldSuccess: createAction('[Admin/Fields Api] Update Field Success', props<{ route: string }>()),\n confirmFieldDeletion: createAction(\n '[Admin/Fields] Open Modal for Deleting Field',\n props<{ id: string; path: string }>()\n ),\n deleteField: createAction('[Admin/Fields] Delete Field', props<{ id: string; route: string }>()),\n deleteFieldSuccess: createAction('[Admin/Fields] Delete Field Success'),\n\n selectField: createAction('[Admin/Fields] Select Field', props<{ field: Field }>()),\n unselectField: createAction('[Admin/Fields] unselect Field')\n};\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Field,\n FIELD_I18N,\n FieldActions,\n FieldSelectors,\n FieldType,\n GeometricFieldTypes,\n PryI18nService,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\nimport { noWhitespaceValidator } from '../../../components/admin.component';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { FieldsActions } from '../store/fields.actions';\nimport { dateFormatOptions } from '@provoly/dashboard/components/data-format';\n\nexport const CRS_OPTIONS = [\n { label: 'WGS84 (EPSG:4326)', code: 'EPSG:4326' },\n { label: 'Lambert93 (EPSG: 2154)', code: 'EPSG:2154' }\n];\n\ninterface FieldForm {\n name: FormControl<string>;\n type: FormControl<FieldType>;\n crs?: FormControl<string | undefined>;\n formatOptions?: FormGroup<FormatOptionsForm>;\n}\n\ninterface FormatOptionsForm {\n localeFormat?: FormControl<boolean | null>;\n unit?: FormControl<string | null>;\n decimalPrecision?: FormControl<number | null>;\n dateFormat?: FormControl<string | null>;\n}\n\n@Component({\n selector: 'pry-admin-fields-form',\n templateUrl: './admin-fields-form.component.html'\n})\nexport class AdminFieldsFormComponent extends SubscriptionnerDirective implements OnInit, OnDestroy {\n @Input() currentField?: Field;\n\n form: FormGroup<FieldForm>;\n fieldTypes: FieldType[];\n fieldNames$: Observable<string[]>;\n nameAlreadyExists$?: Observable<boolean>;\n\n dateFormats = Object.keys(dateFormatOptions.value);\n\n goBackPath: string;\n goBackPathEdit: string;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private i18n: PryI18nService\n ) {\n super();\n this.store.dispatch(FieldActions.load({}));\n\n this.fieldNames$ = this.store\n .select(FieldSelectors.fields)\n .pipe(map((fields) => fields.map((field) => field.name.toLowerCase())));\n\n this.fieldTypes = Object.values(FieldType)\n .filter((type) => type !== FieldType.GEOMETRYCOLLECTION)\n .sort((a, b) => {\n const [labelA, labelB] = [this.i18n.instant(FIELD_I18N.label + a), this.i18n.instant(FIELD_I18N.label + b)];\n return labelA.localeCompare(labelB);\n });\n\n this.form = new FormGroup<FieldForm>({\n name: new FormControl('', {\n validators: [Validators.required, Validators.minLength(3), Validators.maxLength(100), noWhitespaceValidator],\n nonNullable: true\n }),\n type: new FormControl(this.fieldTypes[0], { nonNullable: true }),\n formatOptions: new FormGroup({})\n });\n\n this.subscriptions.add(this.type?.valueChanges.subscribe((type) => this.setFormatOptionControls(type)));\n this.form.patchValue({ type: this.fieldTypes[0] });\n\n this.nameAlreadyExists$ = combineLatest([this.name!.valueChanges, this.fieldNames$]).pipe(\n map(([value, fieldNames]) => fieldNames.includes(value.toLowerCase()) && value != this.currentField?.name)\n );\n this.subscriptions.add(\n this.nameAlreadyExists$.subscribe((value) => {\n if (value) {\n this.name?.setErrors({ 'same-name': true });\n }\n return value;\n })\n );\n\n this.goBackPath = this.router.createUrlTree(['..'], { relativeTo: this.route }).toString();\n this.goBackPathEdit = this.router.createUrlTree(['../..'], { relativeTo: this.route }).toString();\n }\n\n ngOnInit(): void {\n if (this.currentField) {\n this.form.patchValue({\n name: this.currentField.name,\n type: this.currentField.type\n });\n this.type!.disable();\n if (this.isGeographicType) {\n this.form.addControl<'crs'>(\n 'crs',\n new FormControl(this.currentField.crs, { validators: [Validators.required], nonNullable: true })\n );\n this.crs?.disable();\n }\n this.setFormatOptionValues();\n }\n this.subscriptions.add(\n this.type!.valueChanges.subscribe((type) => {\n if (this.isGeographicType) {\n this.form.addControl(\n 'crs',\n new FormControl(CRS_OPTIONS[0].code, { validators: [Validators.required], nonNullable: true })\n );\n } else {\n this.form.removeControl('crs');\n }\n })\n );\n }\n\n get name(): AbstractControl<string> | null {\n return this.form.get('name');\n }\n\n get type(): AbstractControl<FieldType> | null {\n return this.form.get('type');\n }\n\n get crs(): AbstractControl<string | undefined> | null {\n return this.form.get('crs');\n }\n\n get formatOptions(): FormGroup<FormatOptionsForm> | null {\n return this.form.get('formatOptions') as FormGroup<FormatOptionsForm>;\n }\n\n get decimalPrecision(): AbstractControl | null | undefined {\n return this.form.get('formatOptions')?.get('decimalPrecision');\n }\n\n get isGeographicType(): boolean {\n return GeometricFieldTypes.includes(this.type?.value as string);\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath(), params: undefined }));\n }\n\n getFormValue() {\n return {\n name: this.name!.value,\n type: this.type!.value,\n crs: this.crs?.value,\n unit: this.formatOptions?.value.unit ?? undefined,\n decimalPrecision: this.formatOptions?.value.decimalPrecision ?? undefined,\n localeFormat: this.formatOptions?.value.localeFormat ?? undefined,\n format: this.formatOptions?.value.dateFormat ?? undefined\n };\n }\n\n submit() {\n this.form.patchValue({\n name: this.name?.value?.trim()\n });\n if (this.form.valid) {\n this.currentField ? this.updateField() : this.saveField();\n }\n }\n\n saveField() {\n this.store.dispatch(\n FieldsActions.saveField({\n field: { id: uuid(), ...this.getFormValue() },\n route: this.getPath()\n })\n );\n }\n\n updateField() {\n this.store.dispatch(\n FieldsActions.updateField({\n field: { id: this.currentField!.id, ...this.getFormValue() },\n route: this.getPath()\n })\n );\n }\n\n setFormatOptionControls(type: FieldType | null) {\n switch (type) {\n case FieldType.INTEGER:\n case FieldType.LONG:\n this.formatOptions?.addControl('localeFormat', new FormControl(true));\n this.formatOptions?.setControl('unit', new FormControl(null));\n this.formatOptions?.removeControl('decimalPrecision');\n this.formatOptions?.removeControl('dateFormat');\n break;\n case FieldType.DECIMAL:\n this.formatOptions?.addControl('localeFormat', new FormControl(true));\n this.formatOptions?.setControl('unit', new FormControl(null));\n this.formatOptions?.setControl('decimalPrecision', new FormControl(2, [Validators.min(0), Validators.max(20)]));\n this.formatOptions?.removeControl('dateFormat');\n break;\n case FieldType.INSTANT:\n this.formatOptions?.removeControl('localeFormat');\n this.formatOptions?.removeControl('unit');\n this.formatOptions?.removeControl('decimalPrecision');\n this.formatOptions?.setControl('dateFormat', new FormControl('DATETIME'));\n break;\n default:\n this.form.setControl('formatOptions', new FormGroup({}));\n break;\n }\n }\n\n setFormatOptionValues() {\n switch (this.currentField?.type) {\n case FieldType.INTEGER:\n case FieldType.LONG:\n this.formatOptions?.patchValue({\n localeFormat: this.currentField?.localeFormat,\n unit: this.currentField?.unit\n });\n break;\n case FieldType.DECIMAL:\n this.formatOptions?.patchValue({\n localeFormat: this.currentField?.localeFormat,\n unit: this.currentField?.unit,\n decimalPrecision: this.currentField?.decimalPrecision\n });\n break;\n case FieldType.INSTANT:\n this.formatOptions?.patchValue({ dateFormat: this.currentField?.format });\n break;\n default:\n break;\n }\n }\n\n private getPath() {\n return this.currentField ? this.goBackPathEdit : this.goBackPath;\n }\n\n protected readonly CRS_OPTIONS = CRS_OPTIONS;\n protected readonly FieldType = FieldType;\n protected readonly FIELD_I18N = FIELD_I18N;\n}\n","<div>\n <form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"name-label\" for=\"field_name\" class=\"a-label\">\n {{ '@pry.admin.fields.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"field_name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"name?.dirty && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"name?.dirty && name?.invalid\"\n />\n @if (name?.dirty && name?.invalid) {\n <label id=\"name-error\" for=\"field_name\" class=\"a-label a-label--help -error\">\n @if (name?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (name?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (name?.hasError('minlength')) {\n <span>{{ '@pry.admin.minLength' | i18n: { len: 3 } }}</span>\n }\n @if (name?.hasError('maxlength')) {\n <span>{{ '@pry.admin.maxLength' | i18n: { len: 100 } }}</span>\n }\n @if (name?.hasError('whitespace') && !name?.hasError('minlength')) {\n <span>{{ '@pry.admin.noWhitespace' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_type\">\n {{ '@pry.admin.fields.type' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"field_type\"\n class=\"u-flex-grow-1\"\n formControlName=\"type\"\n [items]=\"fieldTypes\"\n [i18nPrefix]=\"FIELD_I18N.label\"\n [isForm]=\"true\"\n ></pry-select>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-lg u-self-center u-flex-shrink-0\"\n [attr.data-tooltip]=\"FIELD_I18N.information + this.type?.value | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n </div>\n\n @if (isGeographicType) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"crs\">\n {{ '@pry.admin.fields.crs' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n class=\"-width-sm\"\n formControlName=\"crs\"\n [items]=\"CRS_OPTIONS\"\n bindValue=\"code\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n id=\"crs\"\n ></pry-select>\n </div>\n @if (crs?.dirty && crs?.invalid) {\n <label id=\"crs-error\" for=\"crs\" class=\"a-label a-label--help -error\">\n @if (crs?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n </label>\n }\n </div>\n }\n\n @if (\n type?.value === FieldType.INTEGER ||\n type?.value === FieldType.LONG ||\n type?.value === FieldType.DECIMAL ||\n type?.value === FieldType.INSTANT\n ) {\n <div formGroupName=\"formatOptions\">\n <h3 class=\"a-h3\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n @if (type?.value === FieldType.INTEGER || type?.value === FieldType.LONG || type?.value === FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n } @else if (type?.value === FieldType.INSTANT) {\n <ng-container *ngTemplateOutlet=\"dateFormatOptions\"></ng-container>\n }\n\n <ng-template #numberFormatOptions>\n @if (type?.value === FieldType.DECIMAL) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_comma\">{{\n '@pry.admin.fields.formatOptions.decimalPrecision' | i18n\n }}</label>\n <input\n formControlName=\"decimalPrecision\"\n id=\"field_format_comma\"\n type=\"number\"\n min=\"0\"\n class=\"a-form-field\"\n />\n @if (decimalPrecision?.dirty && decimalPrecision?.invalid) {\n <label id=\"decimalPrecision-error\" for=\"crs\" class=\"a-label a-label--help -error\">\n <label class=\"a-label a-label--help -error\" for=\"field_format_comma\">\n {{ '@pry.admin.invalid' | i18n }}\n </label>\n </label>\n }\n </div>\n }\n <div class=\"m-form-label-field -width-sm\">\n <pry-checkbox formControlName=\"localeFormat\" inputId=\"field_format_locale_number_format\" [inhibit]=\"false\">\n {{ '@pry.admin.fields.formatOptions.localeFormat' | i18n }}\n </pry-checkbox>\n </div>\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_unit\">{{ '@pry.admin.fields.formatOptions.unit' | i18n }}</label>\n <input formControlName=\"unit\" id=\"field_format_unit\" type=\"text\" class=\"a-form-field\" />\n </div>\n </ng-template>\n\n <ng-template #dateFormatOptions>\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_date\">{{\n '@pry.admin.fields.formatOptions.dateFormat' | i18n\n }}</label>\n <pry-select\n formControlName=\"dateFormat\"\n id=\"field_format_date\"\n [items]=\"dateFormats\"\n [isForm]=\"true\"\n i18nPrefix=\"@pry.admin.fields.formatOptions.dateFormatOptions.\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n </ng-template>\n </div>\n }\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n [innerHTML]=\"(currentField ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Field, FieldActions, FieldSelectors } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-admin-fields-edit',\n templateUrl: './admin-fields-edit.component.html'\n})\nexport class AdminFieldsEditComponent implements OnInit {\n currentField$?: Observable<Field | undefined>;\n\n constructor(\n private store: Store<any>,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(FieldActions.load({}));\n }\n\n ngOnInit(): void {\n this.route.params.subscribe(\n (params) => (this.currentField$ = this.store.select(FieldSelectors.fieldById(params['id'])))\n );\n }\n}\n","@if (currentField$ | async; as currentField) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.fields.edit' | i18n }}</h1>\n <pry-admin-fields-form [currentField]=\"currentField\"></pry-admin-fields-form>\n </div>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-fields-new',\n templateUrl: './admin-fields-new.component.html'\n})\nexport class AdminFieldsNewComponent {}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.fields.add' | i18n }}</h1>\n <pry-admin-fields-form></pry-admin-fields-form>\n</div>\n","import { createReducer, on } from '@ngrx/store';\nimport { Field } from '@provoly/dashboard';\nimport { FieldsActions } from './fields.actions';\n\nexport const fieldsFeatureKey = '@pry/admin/fields';\n\nexport interface FieldState {\n loading: boolean;\n selectedField?: Field;\n}\n\nexport const initialFieldState: FieldState = {\n loading: false\n};\n\nexport const fieldReducer = createReducer(\n initialFieldState,\n on(FieldsActions.selectField, (state, action) => ({\n ...state,\n selectedField: action.field\n })),\n on(FieldsActions.unselectField, (state, action) => ({\n ...state,\n selectedField: undefined\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromField from './fields.reducer';\n\nconst feature = createFeatureSelector<fromField.FieldState>(fromField.fieldsFeatureKey);\n\nconst loading = createSelector(feature, (state) => state?.loading);\nconst selectedField = createSelector(feature, (state) => state?.selectedField);\nconst selectedFieldId = createSelector(selectedField, (state) => state?.id);\n\nexport const FieldsSelectors = {\n feature,\n loading,\n selectedField,\n selectedFieldId\n};\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassActions, ClassSelectors, FIELD_I18N, FieldActions, FieldSelectors } from '@provoly/dashboard';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { FieldExtended } from './store/admin-fields.model';\nimport { FieldsActions } from './store/fields.actions';\nimport { FieldsSelectors } from './store/fields.selectors';\n\n@Component({\n selector: 'pry-admin-fields',\n templateUrl: './admin-fields.component.html'\n})\nexport class AdminFieldsComponent {\n fields$: Observable<FieldExtended[]>;\n\n sortActive? = 'name';\n sortDirection? = 'asc';\n currentFieldId$: Observable<string | undefined>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(FieldsActions.unselectField());\n this.currentFieldId$ = this.store.select(FieldsSelectors.selectedFieldId);\n\n this.fields$ = combineLatest([\n this.store.select(FieldSelectors.fields),\n this.store.select(ClassSelectors.classes)\n ]).pipe(\n map(([fields, classes]) =>\n fields.map((f) => ({\n ...f,\n attributeCount: classes.reduce(\n (p: number, c: Class) => p + c.attributes.filter((a) => a.field.id === f.id).length,\n 0\n )\n }))\n )\n );\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'fields',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n selectField(field: any) {\n this.store.dispatch(FieldsActions.selectField({ field: field }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminFieldsSelectComponent' }));\n this.store.dispatch(AdminActions.fetchFieldAssociations({ id: field.id }));\n }\n\n protected readonly FIELD_I18N = FIELD_I18N;\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.fields.list' | i18n }}</h1>\n @if (fields$ | async; as fields) {\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.fields.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.fields.name' | i18n }}</th>\n <th prySortHeader=\"type\">{{ '@pry.admin.fields.type' | i18n }}</th>\n <th prySortHeader=\"attributes\">{{ '@pry.admin.fields.attributes' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (field of fields | prySortData: sortActive : sortDirection; track field.id) {\n <tr (click)=\"selectField(field)\" [class.is-selected]=\"(currentFieldId$ | async) === field.id\">\n <td class=\"view-details\">\n <button\n [id]=\"'button-field-' + field.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(currentFieldId$ | async) === field.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-field-' + field.id\"\n >\n <span class=\"u-visually-hidden\">{{ field.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ field.name }}</td>\n <td>{{ FIELD_I18N.label + field.type | i18n }}</td>\n <td>{{ field.attributeCount }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n</div>\n","import { createReducer, on } from '@ngrx/store';\nimport { Associations, BaseMenuItem, BaseToolboxAction } from '@provoly/dashboard';\nimport { AdminActions } from './admin.actions';\n\nexport const adminFeatureKey = '@pry/admin';\n\nexport interface AdminState {\n highlightedMenu: string;\n menus: BaseMenuItem[];\n menuOpen: boolean;\n actions: BaseToolboxAction[];\n subActions: BaseToolboxAction[];\n panelOpen: boolean;\n componentType: string | null;\n selectedAssociation: Associations | undefined;\n}\n\nexport const initialAdminState: AdminState = {\n highlightedMenu: 'environment',\n menus: [\n { menu: 'classes', module: 'admin', page: 'classes', subMenu: 'model' },\n { menu: 'fields', module: 'admin', page: 'fields', subMenu: 'model' },\n { menu: 'dataset', module: 'admin', page: 'dataset', subMenu: 'model' },\n { menu: 'relation-types', module: 'admin', page: 'relation_types', subMenu: 'model' },\n { menu: 'links', module: 'admin', page: 'links', subMenu: 'model' },\n { menu: 'metadata', module: 'admin', page: 'metadata', subMenu: 'model' },\n { menu: 'metadata-rules', module: 'admin', page: 'metadata_rules', subMenu: 'model' },\n { menu: 'user', module: 'admin', page: 'user', subMenu: 'access' },\n { menu: 'metadata-user', module: 'admin', page: 'metadata_user', subMenu: 'access' },\n { menu: 'environment', module: 'admin', page: 'environment', subMenu: 'access' },\n { menu: 'predicates', module: 'admin', page: 'predicates', subMenu: 'access' },\n { menu: 'abac-rules', module: 'admin', page: 'abac_rules', subMenu: 'access' }\n ],\n menuOpen: true,\n actions: [],\n subActions: [],\n panelOpen: true,\n componentType: null,\n selectedAssociation: undefined\n};\n\nexport const adminReducer = createReducer(\n initialAdminState,\n on(AdminActions.highlightMenu, (state, action) => ({\n ...state,\n highlightedMenu: action.menu\n })),\n on(AdminActions.toggleMenu, (state) => ({\n ...state,\n menuOpen: !state.menuOpen\n })),\n on(AdminActions.resetActions, (state) => ({\n ...state,\n actions: [],\n subActions: [],\n componentType: null\n })),\n on(AdminActions.mainActions, (state, action) => ({\n ...state,\n actions: [...action.actions]\n })),\n on(AdminActions.subActions, (state, action) => ({\n ...state,\n subActions: [...action.actions]\n })),\n on(AdminActions.togglePanel, (state, action) => {\n if (!action.panelOpen) {\n return { ...state, panelOpen: action.panelOpen, componentType: null };\n }\n return { ...state, panelOpen: action.panelOpen };\n }),\n on(AdminActions.selectComponentType, (state, action) => ({\n ...state,\n componentType: action.componentType\n })),\n on(AdminActions.fetchAssociationsSuccess, (state, action) => ({\n ...state,\n selectedAssociation: action.association\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { SubMenu } from '@provoly/dashboard';\nimport * as fromAdmin from './admin.reducer';\n\nconst feature = createFeatureSelector<fromAdmin.AdminState>(fromAdmin.adminFeatureKey);\n\nconst highlightedMenu = createSelector(feature, (state) => state?.highlightedMenu);\nconst menuOpen = createSelector(feature, (state) => state.menuOpen);\nconst menus = createSelector(feature, (state) => state?.menus);\nconst actions = createSelector(feature, (state) => state.actions);\nconst subActions = createSelector(feature, (state) => state.subActions);\nconst panelOpen = createSelector(feature, (state) => state.panelOpen);\nconst componentType = createSelector(feature, (state) => state?.componentType);\nconst subMenus = createSelector(\n feature,\n (state) =>\n state?.menus.reduce((p: SubMenu[], c) => {\n const key = c.subMenu ?? 'none';\n let menu = p.find((menu) => menu.name === key);\n if (!menu) {\n menu = { name: c.subMenu, subMenus: [], icon: c.subMenu === 'model' ? 'data' : 'shield-lock' } as SubMenu;\n p.push(menu);\n }\n menu.subMenus.push(c);\n return p;\n }, []) as SubMenu[]\n);\nconst selectedAssociation = createSelector(feature, (state) => state?.selectedAssociation);\n\nexport const AdminSelectors = {\n feature,\n highlightedMenu,\n menuOpen,\n menus,\n subMenus,\n actions,\n subActions,\n panelOpen,\n componentType,\n selectedAssociation\n};\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Associations } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-association',\n templateUrl: './association.component.html',\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class PryAssociationComponent {\n @Input() associations?: Associations | null;\n}\n","@for (association of associations?.associations; track association) {\n <div class=\"a-container-type\">\n <p class=\"a-label-type {{ association.type }}\">\n <strong>{{ '@pry.admin.association.' + association.type | i18n }}</strong>\n </p>\n <p>\n {{ association.name }}\n </p>\n </div>\n}\n@if (associations?.usedElsewhere === true) {\n <p class=\"a-p\">\n <strong>{{ '@pry.admin.classes.usedElsewhere' | i18n }}</strong>\n </p>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Associations, Class, DataSourceSelectors } from '@provoly/dashboard';\nimport { map, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminClassActions } from '../store/admin-class.actions';\nimport { AdminClassSelectors } from '../store/admin-class.selectors';\nimport { AdminSelectors } from '../../../store/admin.selectors';\nimport { concatLatestFrom } from '@ngrx/operators';\n\n@Component({\n selector: 'pry-admin-classes-select',\n templateUrl: './admin-classes-select.component.html'\n})\nexport class AdminClassesSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminClassesSelectComponent';\n sub = new Subscription();\n currentClass$: Observable<Class | undefined>;\n linkedObjects$: Observable<any[]>;\n associations$: Observable<Associations | undefined>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.currentClass$ = this.store.select(AdminClassSelectors.selectedClass);\n this.associations$ = this.store.select(AdminSelectors.selectedAssociation);\n this.linkedObjects$ = this.currentClass$.pipe(\n concatLatestFrom((clazz) => this.store.select(DataSourceSelectors.datasets)),\n map(([clazz, datasets]) => datasets.filter((dataset) => dataset.oClass === clazz?.id))\n );\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.currentClass$.pipe(concatLatestFrom((clazz) => this.linkedObjects$)).subscribe(([clazz, linkedObjects]) => {\n if (clazz) {\n const newPath = this.router.createUrlTree(['.', 'classes', 'new'], { relativeTo: this.route });\n const editPath = this.router.createUrlTree(['.', 'classes', clazz.id, 'edit'], { relativeTo: this.route });\n const customizePath = this.router.createUrlTree(['.', 'classes', clazz.id, 'customize'], {\n relativeTo: this.route\n });\n const viewAttributesPath = this.router.createUrlTree(['.', 'classes', clazz.id], {\n relativeTo: this.route\n });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'rename',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n },\n {\n action: AdminClassActions.confirmClassDeletion({ id: clazz.id, path: newPath.toString() }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write',\n disabled: linkedObjects.length > 0\n },\n {\n action: AdminActions.routeTo({ path: customizePath.toString() }),\n label: 'customize.title',\n icon: 'chat-settings',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n },\n {\n action: AdminActions.routeTo({ path: viewAttributesPath.toString() }),\n label: 'edit',\n icon: 'admin',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'classes', 'new'], { relativeTo: this.route });\n this.store.dispatch(AdminClassActions.unselectClass());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (currentClass$ | async; as clazz) {\n <div\n [id]=\"'panel-class-' + clazz.id\"\n [attr.aria-labelledby]=\"'button-class-' + clazz.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.classes.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"classDetails\" name=\"details\"></pry-tab>\n <pry-tab [templateRef]=\"classAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n <ng-template #classDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.name' | i18n }} :\n <strong>{{ clazz.name }}</strong>\n </p>\n <p class=\"a-p u-display-flex -align-center\">\n {{ '@pry.admin.classes.image' | i18n }} :\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"clazz.id | translateId : { type: 'class', output: 'icon' } | async\"\n />\n </p>\n </ng-template>\n <ng-template #classAssociations>\n @if (associations$ | async; as associations) {\n <div class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n }\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Associations, AttributeExtended, BaseToolboxAction, Class } from '@provoly/dashboard';\nimport { combineLatestWith, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../../store/admin.actions';\nimport { AdminClassActions } from '../../store/admin-class.actions';\nimport { AdminClassSelectors } from '../../store/admin-class.selectors';\nimport { AdminSelectors } from '../../../../store/admin.selectors';\n\n@Component({\n selector: 'pry-admin-attribute-select',\n templateUrl: './admin-attributes-select.component.html'\n})\nexport class AdminAttributesSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminAttributesSelectComponent';\n selectedAttribute$: Observable<AttributeExtended | undefined>;\n sub = new Subscription();\n associations$: Observable<Associations | undefined>;\n\n tab: number = 0;\n private classId?: string;\n private selectedClassId$: Observable<string | undefined>;\n private interClassId$: Observable<string | undefined>;\n interClass$: Observable<Class | undefined>;\n interClass?: Class;\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.selectedAttribute$ = this.store.select(AdminClassSelectors.selectedAttribute);\n this.selectedClassId$ = this.store.select(AdminClassSelectors.selectedClassId);\n this.interClass$ = this.store.select(AdminClassSelectors.interClass);\n this.interClassId$ = this.store.select(AdminClassSelectors.interClassId);\n this.associations$ = this.store.select(AdminSelectors.selectedAssociation);\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.interClass$.subscribe((interClass) => {\n this.interClass = interClass;\n })\n );\n this.sub.add(\n this.selectedClassId$.pipe(combineLatestWith(this.interClassId$)).subscribe(([selectClassid, interClassId]) => {\n this.classId = selectClassid ?? interClassId;\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n this.store.dispatch(AdminClassActions.unselectAttribute());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n if (this.classId) {\n const path = this.router.createUrlTree(['.', 'classes', this.classId, 'new'], { relativeTo: this.route });\n const backPath = this.router.createUrlTree(['classes'], { relativeTo: this.route }).toString();\n const savePath = this.router.createUrlTree(['..'], { relativeTo: this.route }).toString();\n const actions: BaseToolboxAction[] = [\n {\n action: AdminClassActions.back({ path: backPath }),\n label: 'back',\n icon: 'arrow_back'\n },\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'addAttribute',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ];\n if (this.interClass) {\n actions.push({\n action: AdminClassActions.saveClass({ class: this.interClass, route: savePath }),\n label: 'addClass',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n });\n }\n this.store.dispatch(\n AdminActions.mainActions({\n actions\n })\n );\n }\n }\n}\n","@if (selectedAttribute$ | async; as attribute) {\n <div\n [id]=\"'panel-attr-' + attribute.id\"\n [attr.aria-labelledby]=\"'button-attr-' + attribute.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.classes.attributes.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"attributeDetails\" name=\"details\"></pry-tab>\n <pry-tab [templateRef]=\"attributeAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n <ng-template #attributeDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.attributes.technicalName' | i18n }} :\n <strong>{{ attribute.technicalName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.attributes.name' | i18n }} :\n <strong>{{ attribute.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.attributes.field' | i18n }} :\n <strong>{{ attribute.fieldName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.attributes.category' | i18n }} :\n <strong>{{ attribute.categoryName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.attributes.multiValued' | i18n }} :\n <strong>{{ attribute.multiValued }}</strong>\n </p>\n </ng-template>\n <ng-template #attributeAssociations>\n @if (associations$ | async; as associations) {\n <div class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n }\n </ng-template>\n </div>\n}\n","import { ChangeDetectorRef, Component, Inject, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Associations,\n DashboardSelectors,\n Dataset,\n DataSourceSelectors,\n MetadataValue,\n MissingGroupsByEntity,\n PRY_ACCESS_TOKEN,\n PryBaseAccess,\n PryI18nService,\n PryShareMode,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors, MetaEventType } from '@provoly/dashboard/components/metadata-editor';\nimport { BehaviorSubject, combineLatest, map, Observable, of, Subscription, withLatestFrom } from 'rxjs';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminSelectors } from '../../../store/admin.selectors';\nimport { AdminDatasetActions } from '../store/admin-dataset.actions';\nimport { AdminDatasetSelectors } from '../store/admin-dataset.selectors';\n\ninterface MissingGroups {\n [key: string]: { groups: string[]; entityName: string };\n}\n\n@Component({\n selector: 'pry-admin-select-dataset',\n templateUrl: './admin-select-dataset.component.html'\n})\nexport class AdminSelectDatasetComponent extends SubscriptionnerDirective implements OnInit, OnDestroy {\n static id = 'AdminSelectDatasetComponent';\n selectedDataset$: Observable<Dataset | null>;\n associations$: Observable<Associations | undefined>;\n sub = new Subscription();\n currentTypeTranslation = '';\n datasetMetadata$: Observable<MetadataValue[]>;\n editable$: Observable<boolean>;\n accessGroups: string[] = [];\n selectedDatasetMissingGroups$: Observable<MissingGroupsByEntity | undefined>;\n missingGroups$: Observable<MissingGroups | undefined>;\n shareRadioValue$ = new BehaviorSubject<PryShareMode | undefined>(undefined);\n disableShareButton$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private i18n: PryI18nService,\n private cdr: ChangeDetectorRef,\n @Optional() @Inject(PRY_ACCESS_TOKEN) protected access: PryBaseAccess\n ) {\n super();\n this.store.dispatch(MetadataActions.loadMetadata());\n this.selectedDataset$ = this.store.select(AdminDatasetSelectors.selectedDataset);\n this.datasetMetadata$ = this.store.select(AdminDatasetSelectors.selectedDatasetMetadata);\n this.associations$ = this.store.select(AdminSelectors.selectedAssociation);\n this.editable$ = this.store.select(MetadataSelectors.editable);\n this.selectedDatasetMissingGroups$ = this.store.select(AdminDatasetSelectors.selectedDatasetMissingGroups);\n this.missingGroups$ = this.selectedDatasetMissingGroups$.pipe(\n withLatestFrom(this.store.select(DashboardSelectors.manifestsList)),\n map(([conflict, manifests]) => {\n const result: { [key: string]: { groups: string[]; entityName: string } } = {};\n Object.keys(conflict ?? {}).forEach((entityId) => {\n result[entityId] = {\n groups: conflict?.[entityId] ?? [],\n entityName: manifests.find((m) => m.id === entityId)?.name ?? entityId\n };\n });\n return Object.keys(result).length > 0 ? result : undefined;\n })\n );\n }\n\n ngOnInit(): void {\n this.subscriptions.add(\n combineLatest([this.selectedDataset$, this.store.select(DataSourceSelectors.datasetVersions)])\n .pipe(concatLatestFrom(([dataset, versions]) => (dataset ? this.canModify$(dataset) : of(false))))\n .subscribe(([[dataset, versions], canModify]) => {\n if (dataset) {\n this.accessGroups = dataset.groups ?? [];\n const editPath = this.router.createUrlTree(['.', 'dataset', 'edit', dataset.id], {\n relativeTo: this.route\n });\n if (canModify) {\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'dataset',\n actionAccess: 'write'\n },\n {\n action: AdminDatasetActions.confirmDatasetDeletion({\n name: dataset.id,\n route: this.router.createUrlTree(['.', 'dataset'], { relativeTo: this.route }).toString(),\n addRoute: this.router\n .createUrlTree(['.', 'dataset', 'new'], { relativeTo: this.route })\n .toString()\n }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'dataset',\n actionAccess: 'write',\n disabled: versions.filter((v) => v.dataset.id === dataset.id).length > 0\n }\n ]\n })\n );\n } else {\n this.store.dispatch(\n AdminActions.mainActions({\n actions: []\n })\n );\n }\n }\n })\n );\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'dataset', 'new'], { relativeTo: this.route });\n this.store.dispatch(AdminDatasetActions.unselectDataset());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n removeMetadata(metadata: MetaEventType) {\n this.store.dispatch(\n MetadataActions.deleteDatasetMetadata({ datasetId: metadata.id, metadataId: metadata.metadataId })\n );\n }\n\n addDatasetMetadata(metadata: MetaEventType) {\n this.store.dispatch(\n MetadataActions.addDatasetMetadata({\n datasetId: metadata.id,\n metadataId: metadata.metadataId,\n value: metadata.value\n })\n );\n }\n\n share(dataset: Dataset) {\n this.store.dispatch(AdminDatasetActions.update({ dataset: { ...dataset, groups: this.accessGroups }, route: '' }));\n }\n\n getGroupLabel(groupName: string) {\n const i18nBase = '@pry.components.chipsSelector.share.groups.';\n const label = this.i18n.instant(i18nBase + groupName, undefined, false);\n return label.startsWith(i18nBase) ? groupName : label;\n }\n\n changeGroup($event: string[]) {\n this.accessGroups = $event;\n this.updateDisableButtonValue();\n this.store.dispatch(AdminDatasetActions.setMissingGroups({ missingGroups: undefined }));\n }\n\n updateGroups($event: PryShareMode) {\n this.shareRadioValue$.next($event);\n this.updateDisableButtonValue();\n }\n\n updateDisableButtonValue() {\n if (this.shareRadioValue$.getValue() === PryShareMode.GROUPS && this.accessGroups.length === 0) {\n this.disableShareButton$.next(true);\n } else {\n if (this.disableShareButton$.getValue()) {\n this.disableShareButton$.next(false);\n }\n }\n this.cdr.detectChanges();\n }\n\n canModify$(dataset: Dataset) {\n return this.access ? this.access.canModifyDataset(dataset) : of(false);\n }\n}\n","@if (selectedDataset$ | async; as dataset) {\n <div\n [id]=\"'panel-dataset-' + dataset.id\"\n [attr.aria-labelledby]=\"'button-dataset-' + dataset.id\"\n class=\"o-panel o-pry-admin-dataset-select\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.dataset.datasetDetails' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"datasetDetails\" name=\"dataset.details\"></pry-tab>\n <pry-tab [templateRef]=\"datasetMetadata\" name=\"metadata.title\"></pry-tab>\n <pry-tab [templateRef]=\"datasetAssociations\" name=\"classes.associations\"></pry-tab>\n @if (canModify$(dataset) | async) {\n <pry-tab [templateRef]=\"shareDataset\" name=\"share\"></pry-tab>\n }\n </pry-tab-group>\n <ng-template #datasetDetails>\n <div class=\"u-display-flex -column -gap-20\">\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.name' | i18n }}</h4>\n <span>{{ dataset.name }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.description' | i18n }}</h4>\n @if (dataset.description) {\n <span>{{ dataset.description }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noDescription' | i18n }}</span>\n }\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.customize.name' | i18n }}</h4>\n <span>{{ dataset.oClass | translateId: { type: 'class', output: 'name' } | async }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.dataset.type' | i18n }}</h4>\n <span>{{ '@pry.admin.dataset.' + dataset.type | i18n }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.tags' | i18n }}</h4>\n @if (dataset.categories && dataset.categories.length > 0) {\n <div class=\"u-display-flex\">\n @for (category of dataset.categories; track category.id) {\n <span class=\"a-chip -md\">{{ category.name }}</span>\n }\n </div>\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noTags' | i18n }}</span>\n }\n </div>\n </div>\n </ng-template>\n <ng-template #datasetMetadata>\n <pry-metadata-editor\n [targetId]=\"(selectedDataset$ | async)?.id ?? ''\"\n [isModification]=\"(editable$ | async) ?? false\"\n [metadata]=\"(datasetMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addDatasetMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </ng-template>\n <ng-template #datasetAssociations>\n @if (associations$ | async; as associations) {\n <div class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n }\n </ng-template>\n <ng-template #shareDataset>\n <div class=\"o-pry-admin-dataset-select__share\">\n <pry-group-share\n [ngModel]=\"dataset.groups\"\n (ngModelChange)=\"changeGroup($event)\"\n (radioValueChange)=\"updateGroups($event)\"\n ></pry-group-share>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary u-self-end\"\n #submit\n (click)=\"share(dataset)\"\n [disabled]=\"disableShareButton$ | async\"\n >\n {{ '@pry.admin.validate' | i18n }}\n </button>\n @if (selectedDatasetMissingGroups$ | async) {\n <h4 class=\"a-h4\">{{ '@pry.admin.dataset.success' | i18n }}</h4>\n }\n @if (missingGroups$ | async; as missingGroups) {\n <div class=\"u-display-flex -column\">\n <span>{{ '@pry.admin.dataset.conflict' | i18n }}</span>\n @for (missing of missingGroups | keyvalue; track missing.key) {\n <div>\n {{ '@pry.admin.dataset.entities.dashboard' | i18n }} <strong>{{ missing.value.entityName }}</strong>\n <div class=\"u-display-flex\">\n @for (group of missing.value.groups; track group) {\n <span class=\"a-chip\">{{ getGroupLabel(group) }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ENV_OPTIONS, Environment } from '@provoly/dashboard';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { EnvironmentActions } from '../store/environment.actions';\nimport { EnvironmentSelectors } from '../store/environment.selectors';\n\n@Component({\n selector: 'pry-admin-environment-select',\n templateUrl: './admin-environment-select.component.html'\n})\nexport class AdminEnvironmentSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminEnvironmentSelectComponent';\n currentEnv$: Observable<Environment | undefined>;\n sub = new Subscription();\n currentTypeTranslation = '';\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.currentEnv$ = this.store.select(EnvironmentSelectors.currentEnv);\n this.sub.add(\n this.currentEnv$.subscribe((ce) => {\n const type = ENV_OPTIONS.find((el) => el.varType === ce?.type);\n this.currentTypeTranslation = type ? type.translation : ENV_OPTIONS[0].translation;\n })\n );\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.currentEnv$.subscribe((env) => {\n if (env) {\n const editPath = this.router.createUrlTree(['.', 'environment', 'edit', env.name], {\n relativeTo: this.route\n });\n const envsPath = this.router.createUrlTree(['.', 'environment'], { relativeTo: this.route });\n const addPath = this.router.createUrlTree(['.', 'environment', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'environment',\n actionAccess: 'write'\n },\n {\n action: EnvironmentActions.deleteEnvironment({\n name: env.name,\n route: envsPath.toString(),\n addRoute: addPath.toString()\n }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'environment',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'environment', 'new'], { relativeTo: this.route });\n this.store.dispatch(EnvironmentActions.loadEnvironments());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'environment',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (currentEnv$ | async; as env) {\n <div\n [id]=\"'panel-env-' + env.name\"\n [attr.aria-labelledby]=\"'button-env-' + env.name\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.environment.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"environmentDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #environmentDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.environment.name' | i18n }} :\n <strong>{{ env.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.environment.type' | i18n }} :\n <strong>{{ currentTypeTranslation | i18n }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.environment.value' | i18n }} :\n <strong>{{ env.value }}</strong>\n </p>\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { Store } from '@ngrx/store';\nimport { Associations, ClassSelectors, Field, FIELD_I18N, FieldType } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { FieldsActions } from '../store/fields.actions';\nimport { FieldsSelectors } from '../store/fields.selectors';\nimport { AdminSelectors } from '../../../store/admin.selectors';\n\n@Component({\n selector: 'pry-admin-fields-select',\n templateUrl: './admin-fields-select.component.html'\n})\nexport class AdminFieldsSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminFieldsSelectComponent';\n currentField$: Observable<Field | undefined>;\n associations$: Observable<Associations | undefined>;\n sub = new Subscription();\n attributes$: Observable<{ technicalName: string; classId: string }[]>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.currentField$ = this.store.select(FieldsSelectors.selectedField);\n this.associations$ = this.store.select(AdminSelectors.selectedAssociation);\n this.attributes$ = combineLatest([this.currentField$, store.select(ClassSelectors.classes)]).pipe(\n map(([field, classes]) => {\n return classes\n .map((clazz) =>\n clazz.attributes\n .filter((attribute) => attribute.field.id === field?.id)\n .map((attribute) => ({ technicalName: attribute.technicalName, classId: clazz.id }))\n )\n .flat();\n })\n );\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.currentField$.pipe(concatLatestFrom((field) => this.attributes$)).subscribe(([curField, attributes]) => {\n const back = this.router.createUrlTree(['.', 'fields'], { relativeTo: this.route }).toString();\n let editPath = this.router\n .createUrlTree(['fields', 'edit', curField?.id], { relativeTo: this.route })\n .toString();\n if (curField) {\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'fields',\n actionAccess: 'write'\n },\n {\n action: FieldsActions.confirmFieldDeletion({ id: curField.id, path: back }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write',\n disabled: attributes.length > 0\n }\n ]\n })\n );\n }\n })\n );\n }\n\n closePanel() {\n this.store.dispatch(FieldsActions.unselectField());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n let path = this.router.createUrlTree(['fields', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'fields',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n protected readonly FIELD_I18N = FIELD_I18N;\n protected readonly FieldType = FieldType;\n}\n","@if (currentField$ | async; as field) {\n <div\n [id]=\"'panel-field-' + field.id\"\n [attr.aria-labelledby]=\"'button-field-' + field.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.fields.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"fieldDetails\" name=\"details\"></pry-tab>\n <pry-tab [templateRef]=\"fieldAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n <ng-template #fieldDetails>\n <div class=\"u-display-flex -column -gap-20\">\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.name' | i18n }}</h4>\n <span>{{ field.name }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.type' | i18n }}</h4>\n <span>{{ FIELD_I18N.label + field.type | i18n }}</span>\n </div>\n @if ([FieldType.INTEGER, FieldType.LONG, FieldType.DECIMAL, FieldType.INSTANT].includes(field.type)) {\n <div>\n <h3 class=\"a-h3 -no-padding\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n <div class=\"u-display-flex -column -gap-20\">\n @switch (field.type) {\n @case (FieldType.INTEGER) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.LONG) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.decimalPrecision' | i18n }}</h4>\n @if (field.decimalPrecision) {\n <span>{{ field.decimalPrecision }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDecimalPrecision' | i18n }}</span>\n }\n </div>\n }\n @case (FieldType.INSTANT) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.dateFormat' | i18n }}</h4>\n @if (field.format) {\n <span>{{ '@pry.admin.fields.formatOptions.dateFormatOptions.' + field.format | i18n }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDateFormat' | i18n }}</span>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n @if (field.crs) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.crs' | i18n }}</h4>\n <span>{{ field.crs }}</span>\n </div>\n }\n </div>\n <ng-template #numberFormatOptions>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.unit' | i18n }}</h4>\n @if (field.unit) {\n <span>{{ field.unit }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noUnit' | i18n }}</span>\n }\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.localeFormat' | i18n }}</h4>\n <span>{{ (field.localeFormat ? '@pry.action.yes' : '@pry.action.no') | i18n }}</span>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #fieldAssociations>\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations$ | async\"></pry-association>\n </ng-template>\n </div>\n}\n","import { createAction, props } from '@ngrx/store';\nimport { MetadataRules, MetadataRulesCreate } from '@provoly/dashboard';\n\nexport enum MetadataRulesActionTypes {\n LOAD = '[MetadataRules] load MetadataRules',\n LOADED = '[MetadataRules] loaded MetadataRules',\n POST = '[MetadataRules] post MetadataRules',\n DELETE = '[MetadataRules] delete MetadataRules',\n OPEN_DETAIL = '[MetadataRules] open MetadataRules details',\n OPEN_NEW_METADATA_RULES = '[MetadataRules] open new MetadataRules',\n UNSELECT_METADATA = '[MetadataRules] unselect MetadataRules',\n FAILURE = '[MetadataRules] failure effect metadataRules'\n}\n\nexport const AdminMetadataRulesActions = {\n load: createAction(MetadataRulesActionTypes.LOAD),\n loaded: createAction(MetadataRulesActionTypes.LOADED, props<{ list: MetadataRules[] }>()),\n failure: createAction(MetadataRulesActionTypes.FAILURE, props<{ error: any }>()),\n\n post: createAction(MetadataRulesActionTypes.POST, props<{ metadata: MetadataRulesCreate }>()),\n delete: createAction(MetadataRulesActionTypes.DELETE, props<{ name: string; route: string; addRoute: string }>()),\n\n unselectMetadata: createAction(MetadataRulesActionTypes.UNSELECT_METADATA),\n\n selectMetadata: createAction(MetadataRulesActionTypes.OPEN_DETAIL, props<{ metadataRules: MetadataRules }>()),\n\n openNewMetadataRules: createAction(MetadataRulesActionTypes.OPEN_NEW_METADATA_RULES, props<{ route: string }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { MetadataRules } from '@provoly/dashboard';\nimport { AdminMetadataRulesActions } from './metadata-rules.actions';\n\nexport const adminMetadataRulesFeatureKey = '@pry/admin/metadata-rules';\n\nexport interface MetadataRulesState {\n loading: boolean;\n errors: any;\n list: MetadataRules[];\n metadataRulesSelected: MetadataRules | null;\n isNameAlreadyExist: boolean;\n}\n\nexport const initialMetadataRulesState: MetadataRulesState = {\n loading: false,\n errors: null,\n list: [],\n metadataRulesSelected: null,\n isNameAlreadyExist: false\n};\n\nexport const adminMetadataRulesReducer = createReducer(\n initialMetadataRulesState,\n on(AdminMetadataRulesActions.load, (state) => ({\n ...state,\n loading: true\n })),\n on(AdminMetadataRulesActions.loaded, (state, action) => ({\n ...state,\n list: action.list,\n loading: false\n })),\n on(AdminMetadataRulesActions.unselectMetadata, (state) => ({\n ...state,\n metadataRulesSelected: null\n })),\n on(AdminMetadataRulesActions.selectMetadata, (state, action) => ({\n ...state,\n metadataRulesSelected: action.metadataRules\n })),\n on(AdminMetadataRulesActions.failure, (state, action) => ({\n ...state,\n error: action.error\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromMetadataRules from './metadata-rules.reducer';\n\nconst feature = createFeatureSelector<fromMetadataRules.MetadataRulesState>(\n fromMetadataRules.adminMetadataRulesFeatureKey\n);\n\nconst metadataRulesList = createSelector(feature, (state) => state?.list);\nconst metadataRulesSelectedId = createSelector(feature, (state) => state?.metadataRulesSelected?.id);\nconst metadataRulesSelected = createSelector(feature, (state) => state?.metadataRulesSelected);\n\nexport const MetadataRulesSelectors = {\n feature,\n metadataRulesList,\n metadataRulesSelected,\n metadataRulesSelectedId\n};\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { MetadataRules } from '@provoly/dashboard';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminMetadataRulesActions } from '../store/metadata-rules.actions';\nimport { MetadataRulesSelectors } from '../store/metadata-rules.selectors';\n\n@Component({\n selector: 'pry-admin-select-metadata-rules',\n templateUrl: './admin-select-metadata-rules.component.html'\n})\nexport class AdminSelectMetadataRulesComponent implements OnInit, OnDestroy {\n static id = 'AdminSelectMetadataRulesComponent';\n metadataRulesSelected$: Observable<MetadataRules | null>;\n sub = new Subscription();\n currentTypeTranslation = '';\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.metadataRulesSelected$ = this.store.select(MetadataRulesSelectors.metadataRulesSelected);\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.metadataRulesSelected$.subscribe((metadata) => {\n if (metadata) {\n const editPath = this.router.createUrlTree(['.', 'metadata-rules', 'edit', metadata.id], {\n relativeTo: this.route\n });\n const metadataPath = this.router.createUrlTree(['.', 'metadata-rules'], { relativeTo: this.route });\n const addPath = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n },\n {\n action: AdminMetadataRulesActions.delete({\n name: metadata.id,\n route: metadataPath.toString(),\n addRoute: addPath.toString()\n }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'metadata-rules', 'new'], { relativeTo: this.route });\n this.store.dispatch(AdminMetadataRulesActions.unselectMetadata());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (metadataRulesSelected$ | async; as metadataRules) {\n <div\n [id]=\"'panel-meta-rule-' + metadataRules.id\"\n [attr.aria-labelledby]=\"'button-meta-rule-' + metadataRules.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.metadata.details' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"metadataRuleDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #metadataRuleDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.label' | i18n }} :\n <strong>{{ metadataRules.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-item.name' | i18n }} :\n <strong>{{ metadataRules.metadata.name }}</strong>\n </p>\n @if (metadataRules.metadata.description) {\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-item.description' | i18n }} :\n <strong>{{ metadataRules.metadata.description }}</strong>\n </p>\n }\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-item.type' | i18n }} :\n <strong>{{ metadataRules.metadata.type }}</strong>\n </p>\n @if (metadataRules.metadata.allowedValues) {\n @for (item of metadataRules.metadata.allowedValues; track item) {\n <p class=\"a-p\">{{ item }}</p>\n }\n }\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-user.name' | i18n }} :\n <strong>{{ metadataRules.userProfile.name }}</strong>\n </p>\n @if (metadataRules.userProfile.description) {\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-user.description' | i18n }} :\n <strong>{{ metadataRules.userProfile.description }}</strong>\n </p>\n }\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-user.type' | i18n }} :\n <strong>{{ metadataRules.userProfile.type }}</strong>\n </p>\n @if (metadataRules.userProfile.allowedValues) {\n @for (item of metadataRules.userProfile.allowedValues; track item) {\n <p class=\"a-p\">{{ item }}</p>\n }\n }\n </ng-template>\n </div>\n}\n","import { createAction, props } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\n\nconst BASE = '[Admin/User]';\nconst BASEAPI = '[Admin/User Api]';\n\nexport const AdminMetadataUserActions = {\n selectMetadata: createAction(`${BASE} Select Metadata`, props<{ id: string }>()),\n unselectMetadata: createAction(`${BASE} unSelect Metadata`),\n\n createMetadata: createAction(`${BASE} create metadata`, props<{ metadata: IMetadata }>()),\n createMetadataSuccess: createAction(`${BASEAPI} create metadata Success`, props<{ metadata: IMetadata }>()),\n createMetadataFailure: createAction(`${BASEAPI} create metadata Failure`, props<{ error: any }>()),\n\n goToDetailsViewMetadata: createAction(`${BASE} go to details view metadata`, props<{ id: string }>()),\n goToDetailsViewMetadataSuccess: createAction(\n `${BASEAPI} go to details view metadata success`,\n props<{ metadata: IMetadata }>()\n ),\n goToDetailsViewMetadataFailure: createAction(\n `${BASEAPI} go to details view metadata failure`,\n props<{ error: any }>()\n ),\n\n goToEditMetadata: createAction(`${BASE} go to edit view`, props<{ id: string; route: string }>()),\n goToEditMetadataSuccess: createAction(\n `${BASE} go to edit view success`,\n props<{ metadata: IMetadata; route: string }>()\n ),\n goToEditMetadataFailure: createAction(`${BASE} go to edit view failure`, props<{ error: any }>()),\n\n updateMetadata: createAction(`${BASE} update meta data`, props<{ metadata: IMetadata }>()),\n updateMetadataSuccess: createAction(`${BASEAPI} update meta data Success`, props<{ metadata: IMetadata }>()),\n updateMetadataFailure: createAction(`${BASEAPI} update meta data Failure`, props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { AdminMetadataUserActions } from './admin-metadata-user.action';\n\nexport const adminMetadataUserFeatureKey = '@pry/admin/metadata/user';\n\nexport interface AdminMetadataUserState {\n loading: boolean;\n editable: boolean;\n errors: any;\n selectedMetadataId: string | null;\n}\n\nexport const initialAdminUserState: AdminMetadataUserState = {\n loading: false,\n editable: false,\n errors: null,\n selectedMetadataId: null\n};\n\nexport const adminMetadataUserReducer = createReducer(\n initialAdminUserState,\n on(AdminMetadataUserActions.selectMetadata, (state, action) => ({\n ...state,\n selectedMetadataId: action.id\n })),\n on(AdminMetadataUserActions.unselectMetadata, (state) => ({\n ...state,\n selectedMetadataId: null\n })),\n on(AdminMetadataUserActions.goToDetailsViewMetadata, (state, action) => ({\n ...state,\n selectedMetadataId: action.id,\n editable: false\n })),\n on(AdminMetadataUserActions.goToEditMetadata, (state, action) => ({\n ...state,\n selectedMetadataId: action.id,\n editable: true\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromAdminUser from './admin-metadata-user.reducer';\n\nconst feature = createFeatureSelector<fromAdminUser.AdminMetadataUserState>(fromAdminUser.adminMetadataUserFeatureKey);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst editable = createSelector(feature, (state) => ({ value: state?.editable }));\nconst selectedMetadataId = createSelector(feature, (state) => state?.selectedMetadataId);\n\nexport const AdminMetadataUserSelectors = {\n feature,\n loading,\n selectedMetadataId,\n editable\n};\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, META_OPTIONS } from '@provoly/dashboard';\nimport { MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminMetadataUserActions } from '../store/admin-metadata-user.action';\nimport { AdminMetadataUserSelectors } from '../store/admin-metadata-user.selector';\n\n@Component({\n selector: 'pry-admin-user-select-metadata',\n templateUrl: './admin-user-select-metadata.component.html'\n})\nexport class AdminUserSelectMetadataComponent implements OnInit, OnDestroy {\n static id = 'AdminUserSelectMetadataComponent';\n metadata$: Observable<IMetadata | undefined>;\n sub = new Subscription();\n currentTypeTranslation = '';\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.metadata$ = combineLatest([\n this.store.select(AdminMetadataUserSelectors.selectedMetadataId),\n this.store.select(MetadataSelectors.userProfile)\n ]).pipe(map(([id, metas]) => metas.find((meta) => meta.id === id)));\n this.sub.add(\n this.metadata$.subscribe((meta) => {\n const type = META_OPTIONS.find((el) => el.varType === meta?.type);\n this.currentTypeTranslation = type ? type.translation : META_OPTIONS[0].translation;\n })\n );\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.metadata$.subscribe((metadata) => {\n if (metadata) {\n const editPath = this.router.createUrlTree(['.', 'metadata-user', 'edit', metadata.id], {\n relativeTo: this.route\n });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'metadata_user',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'user', 'metadata', 'new'], { relativeTo: this.route });\n this.store.dispatch(AdminMetadataUserActions.unselectMetadata());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_user',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (metadata$ | async; as metadata) {\n <div\n [id]=\"'panel-meta-' + metadata.id\"\n [attr.aria-labelledby]=\"'button-meta-' + metadata.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">{{ '@pry.admin.metadata.detailsUser' | i18n }}</h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"userMetadataDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #userMetadataDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.label' | i18n }} :\n <strong>{{ metadata.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.description' | i18n }} :\n <strong>{{ metadata.description ? metadata.description : '' }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.type' | i18n }} :\n <strong>{{ currentTypeTranslation | i18n }}</strong>\n </p>\n @if (metadata.allowedValues) {\n @for (item of metadata.allowedValues; track item) {\n <p class=\"a-p\">{{ item }}</p>\n }\n }\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, META_OPTIONS } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\n\n@Component({\n selector: 'pry-select-metadata',\n templateUrl: './admin-select-metadata.component.html'\n})\nexport class AdminSelectMetadataComponent implements OnInit, OnDestroy {\n static id = 'AdminSelectMetadataComponent';\n metadata$: Observable<IMetadata | undefined>;\n sub = new Subscription();\n currentTypeTranslation = '';\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.metadata$ = this.store.select(MetadataSelectors.selectedMetadata);\n this.sub.add(\n this.metadata$.subscribe((meta) => {\n const type = META_OPTIONS.find((el) => el.varType === meta?.type);\n this.currentTypeTranslation = type ? type.translation : META_OPTIONS[0].translation;\n })\n );\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.metadata$.subscribe((metadata) => {\n if (metadata) {\n const editPath = this.router.createUrlTree(['.', 'metadata', 'edit', metadata.id], {\n relativeTo: this.route\n });\n this.store.dispatch(\n AdminActions.mainActions({\n actions:\n metadata.readOnly === true\n ? []\n : [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'metadata',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'metadata', 'new'], { relativeTo: this.route });\n this.store.dispatch(MetadataActions.unselectMetadata());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (metadata$ | async; as metadata) {\n <div\n [id]=\"'panel-meta-' + metadata.id\"\n [attr.aria-labelledby]=\"'button-meta-' + metadata.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.metadata.details' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"metadataDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #metadataDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.label' | i18n }} :\n <strong>{{ metadata.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.description' | i18n }} :\n <strong>{{ metadata.description ? metadata.description : '' }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.type' | i18n }} :\n <strong>{{ currentTypeTranslation | i18n }}</strong>\n </p>\n @if (metadata.system !== undefined) {\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.system' | i18n }} :\n <strong>{{ metadata.system ? '✔' : '✘' }}</strong>\n </p>\n }\n @if (metadata.allowedValues) {\n @for (item of metadata.allowedValues; track item) {\n <p>{{ item }}</p>\n }\n }\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { PredicatesActions } from '../store/predicates.actions';\nimport { PredicatesSelectors } from '../store/predicates.selectors';\n\n@Component({\n selector: 'pry-admin-predicates-select',\n templateUrl: './admin-predicates-select.component.html'\n})\nexport class AdminPredicatesSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminPredicatesSelectComponent';\n currentPredicate$: Observable<Predicate | undefined>;\n sub = new Subscription();\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.currentPredicate$ = this.store.select(PredicatesSelectors.currentPredicate);\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.currentPredicate$.subscribe((pred) => {\n if (pred) {\n const editPath = this.router.createUrlTree(['.', 'predicates', 'edit', pred.id], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'predicates',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'predicates', 'new'], { relativeTo: this.route });\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'predicates',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (currentPredicate$ | async; as pred) {\n <div\n [id]=\"'panel-pred-' + pred.id\"\n [attr.aria-labelledby]=\"'button-pred-' + pred.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.predicates.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"predicateDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #predicateDetails>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.predicates.name' | i18n }} :\n <strong>{{ pred.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.predicates.value' | i18n }} :\n <strong>{{ pred.value }}</strong>\n </p>\n </div>\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { RelationType, RelationTypesActions, RelationTypesSelectors } from '@provoly/dashboard';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\n\n@Component({\n selector: 'pry-admin-relation-types-select',\n templateUrl: './admin-relation-types-select.component.html'\n})\nexport class AdminRelationTypesSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminRelationTypesSelectComponent';\n currentRelationType$: Observable<RelationType | undefined>;\n sub = new Subscription();\n\n constructor(private store: Store<AdminRelationTypesSelectComponent>) {\n this.currentRelationType$ = this.store.select(RelationTypesSelectors.selectedRelationType);\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.currentRelationType$.subscribe((relationType) => {\n if (relationType) {\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: RelationTypesActions.openModal(),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'relation_types',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(RelationTypesActions.unSelectRelationType());\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: RelationTypesActions.openModal(),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'relation_types',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (currentRelationType$ | async; as relationType) {\n <div\n [id]=\"'panel-rt-' + relationType.id\"\n [attr.aria-labelledby]=\"'button-rt-' + relationType.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.relationTypes.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"relationTypeDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #relationTypeDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.relationTypes.name' | i18n }} :\n <strong>{{ relationType.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.relationTypes.nbLink' | i18n }} :\n <strong>{{ relationType.nbLink }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.relationTypes.dateModification' | i18n }} :\n <strong>{{ relationType.modificationDate | date : 'dd-MM-yyyy, HH:mm:ss' }}</strong>\n </p>\n </ng-template>\n </div>\n}\n","import { createAction, props } from '@ngrx/store';\nimport { UserInfo } from '@provoly/dashboard';\n\nconst BASE = '[Admin/User]';\nconst BASEAPI = '[Admin/User Api]';\n\nexport const AdminUserActions = {\n loadUsers: createAction(`${BASE} Load Users`),\n loadUsersSuccess: createAction(`${BASEAPI} Load Users Success`, props<{ users: Array<UserInfo> }>()),\n loadUsersFailure: createAction(`${BASEAPI} Load Users Failure`, props<{ error: any }>()),\n\n selectUser: createAction(`${BASE} Select User`, props<{ userId: string }>()),\n unselectUser: createAction(`${BASE} unSelect User`),\n\n isEditable: createAction(`${BASE} Is editable`, props<{ editable: boolean }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { UserInfo } from '@provoly/dashboard';\nimport { AdminUserActions } from './admin-user.action';\n\nexport const adminUserFeatureKey = '@pry/admin/user';\n\nexport interface AdminUserState {\n users: Array<UserInfo>;\n selectedUser?: UserInfo;\n editable: boolean;\n}\n\nexport const initialAdminUserState: AdminUserState = {\n users: [],\n editable: false\n};\n\nexport const adminUserReducer = createReducer(\n initialAdminUserState,\n on(AdminUserActions.loadUsersSuccess, (state, action) => ({\n ...state,\n users: [...action.users]\n })),\n on(AdminUserActions.selectUser, (state, action) => ({\n ...state,\n selectedUser: state.users.find((user) => user.id == action.userId),\n editable: false\n })),\n on(AdminUserActions.unselectUser, (state, action) => ({\n ...state,\n selectedUser: undefined\n })),\n on(AdminUserActions.isEditable, (state, action) => ({\n ...state,\n editable: action.editable\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromAdminUser from './admin-user.reducer';\n\nconst feature = createFeatureSelector<fromAdminUser.AdminUserState>(fromAdminUser.adminUserFeatureKey);\nconst users = createSelector(feature, (state) => state?.users);\nconst selectedUser = createSelector(feature, (state) => state?.selectedUser);\nconst editable = createSelector(feature, (state) => state.editable);\n\nexport const AdminUserSelectors = {\n feature,\n users,\n selectedUser,\n editable\n};\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, MetadataUser, UserInfo } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors, MetaEventType } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminUserActions } from '../store/admin-user.action';\nimport { AdminUserSelectors } from '../store/admin-user.selector';\n\nlet nextCompId = 0;\n\n@Component({\n selector: 'pry-admin-user-select',\n templateUrl: './admin-user-select.component.html'\n})\nexport class AdminUserSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminUserSelectComponent';\n userId = '';\n compId: number;\n selectedUser$: Observable<UserInfo | undefined>;\n userMetadata$: Observable<MetadataUser[] | undefined>;\n currentUsermetadatas?: MetadataUser[] | undefined;\n editable$: Observable<boolean>;\n\n metadata$: Observable<IMetadata[]>;\n\n tab: number = 0;\n sub = new Subscription();\n editable = false;\n\n isSubmitted = false;\n\n @Input() profil: boolean = false;\n\n constructor(private store: Store<AdminUserSelectComponent>) {\n this.store.dispatch(MetadataActions.loadUserProfile());\n\n this.selectedUser$ = this.store.select(AdminUserSelectors.selectedUser);\n this.userMetadata$ = this.store.select(MetadataSelectors.selectedUserProfile);\n this.userMetadata$.subscribe((metas) => {\n this.currentUsermetadatas = metas;\n });\n this.metadata$ = this.store.select(MetadataSelectors.userProfile);\n this.editable$ = this.store.select(AdminUserSelectors.editable);\n\n this.compId = nextCompId++;\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.selectedUser$.subscribe((user) => {\n if (user) {\n this.userId = user.id;\n }\n })\n );\n\n this.sub.add(this.editable$.subscribe((edit) => (this.editable = edit)));\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(AdminUserActions.unselectUser());\n }\n\n addMetadataUser(metadata: MetaEventType) {\n const newMetadatas = this.getCurrentMetadatasValuesOfUserProfile(metadata.metadataId)\n // removing redundant values\n .filter((val) => val !== metadata.value)\n // removing previous value if editing\n .filter((val) => !metadata.previousValue || val !== metadata.previousValue);\n if (metadata.value) {\n newMetadatas.push(metadata.value);\n }\n this.store.dispatch(\n MetadataActions.addMetadataUser({\n userId: metadata.id,\n metaId: metadata.metadataId,\n value: newMetadatas\n })\n );\n }\n\n removeMetadata(metadata: MetaEventType) {\n this.store.dispatch(MetadataActions.deleteMetadataUser({ userId: this.userId, metadataId: metadata.metadataId }));\n }\n\n private getCurrentMetadatasValuesOfUserProfile(userProfileId: string): any[] {\n return (\n this.currentUsermetadatas\n ?.filter((metadata) => metadata.userProfile.id === userProfileId)\n .map((metadata) => metadata.value) ?? []\n );\n }\n}\n","@if (selectedUser$ | async; as user) {\n <div\n [id]=\"'panel-user-' + user.id\"\n [attr.aria-labelledby]=\"'button-user-' + user.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 [id]=\"'tab-title-' + compId\" class=\"a-h3\">\n {{ '@pry.admin.userInfo.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"userProfile\" name=\"userInfo.profile\"></pry-tab>\n <pry-tab [templateRef]=\"userDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #userProfile>\n <pry-metadata-editor\n [targetId]=\"(selectedUser$ | async)?.id ?? ''\"\n [isModification]=\"(editable$ | async) ?? false\"\n [metadata]=\"(userMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadataUser($event)\"\n [type]=\"'user'\"\n ></pry-metadata-editor>\n </ng-template>\n <ng-template #userDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.name' | i18n }} :\n <strong>{{ user?.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.familyName' | i18n }} :\n <strong>{{ user.familyName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.email' | i18n }} :\n <strong>{{ user.email }}</strong>\n </p>\n </ng-template>\n </div>\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { BaseMenuComponent } from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { map } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { AdminSelectors } from '../../store/admin.selectors';\n\n@Component({\n selector: 'pry-admin-menu',\n templateUrl: '../../../lib/core/components/base-menu/base-menu.component.html'\n})\nexport class AdminMenuComponent extends BaseMenuComponent {\n private limit$?: BehaviorSubject<string | undefined>;\n\n constructor(\n store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n super(store);\n this.baseMenuTranslation = '@pry.admin.menus.';\n this.subscriptions.add(this.route.data.subscribe((data) => this.limit$?.next(data['limitMenu'])));\n }\n\n override init() {\n this.menus$ = this.store.select(AdminSelectors.menus);\n this.highlightedMenu$ = this.store.select(AdminSelectors.highlightedMenu);\n this.limit$ = new BehaviorSubject<string | undefined>(undefined);\n this.subMenu$ = combineLatest([this.store.select(AdminSelectors.subMenus), this.limit$]).pipe(\n map(([menus, limit]) => (limit ? menus.filter((menu) => menu.name === limit) : menus))\n );\n }\n\n override select(menu: string): void {\n const path = this.router.createUrlTree([menu], { relativeTo: this.route });\n this.store.dispatch(AdminActions.routeTo({ path: path.toString(), params: undefined }));\n this.store.dispatch(AdminActions.highlightMenu({ menu }));\n }\n}\n","<nav class=\"m-nav-links\">\n @for (sub of subMenu$ | async; track sub) {\n <ul class=\"m-nav-links__list\">\n @for (menu of sub.subMenus; track menu) {\n <li\n *pryAccess=\"{ module: menu.module, page: menu.page, subMenu: menu.subMenu }\"\n class=\"m-nav-links__list__item\"\n >\n <a [routerLink]=\"menu.menu\" class=\"a-btn -width-full\" [routerLinkActive]=\"'is-active'\">\n {{ baseMenuTranslation + menu.menu | i18n }}\n </a>\n </li>\n }\n </ul>\n }\n</nav>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { AdminSelectors } from '../../store/admin.selectors';\n\n@Component({\n selector: 'pry-admin-title',\n templateUrl: './admin-title.component.html'\n})\nexport class AdminTitleComponent extends SubscriptionnerDirective {\n menuOpen$: Observable<boolean>;\n limit: any;\n\n constructor(\n private store: Store<any>,\n private route: ActivatedRoute\n ) {\n super();\n this.menuOpen$ = this.store.select(AdminSelectors.menuOpen);\n this.subscriptions.add(this.route.data.subscribe((data) => (this.limit = data['limitMenu'])));\n }\n\n onToggleMenu($event: any) {\n this.store.dispatch(AdminActions.toggleMenu());\n\n // Toggle button aria-pressed\n $event.target.setAttribute(\n 'aria-pressed',\n $event.target.getAttribute('aria-pressed') === 'true' ? 'false' : 'true'\n );\n }\n}\n","<h2 class=\"a-h3\">{{ (!limit ? '@pry.admin.title' : '@pry.admin.menus.' + limit) | i18n }}</h2>\n<button type=\"button\" class=\"a-btn a-btn--toggle\" (click)=\"onToggleMenu($event)\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">{{ '@pry.admin.titleIndication' | i18n }}</span>\n</button>\n","import { AfterViewInit, Component, ComponentRef, OnDestroy, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { BaseLayoutComponent, BaseToolboxAction } from '@provoly/dashboard';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { AdminSelectors } from '../../store/admin.selectors';\nimport { AdminClassesSelectComponent } from '../admin-classes/admin-classes-select/admin-classes-select.component';\nimport { AdminAttributesSelectComponent } from '../admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component';\nimport { AdminSelectDatasetComponent } from '../admin-dataset/admin-select-dataset/admin-select-dataset.component';\nimport { AdminEnvironmentSelectComponent } from '../admin-environment/admin-environment-select/admin-environment-select.component';\nimport { AdminFieldsSelectComponent } from '../admin-fields/admin-fields-select/admin-fields-select.component';\nimport { AdminSelectMetadataRulesComponent } from '../admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component';\nimport { AdminUserSelectMetadataComponent } from '../admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component';\nimport { AdminSelectMetadataComponent } from '../admin-metadata/admin-select-metadata/admin-select-metadata.component';\nimport { AdminPredicatesSelectComponent } from '../admin-predicates/admin-predicates-select/admin-predicates-select.component';\nimport { AdminRelationTypesSelectComponent } from '../admin-relation-types/admin-relation-types-select/admin-relation-types-select.component';\nimport { AdminUserSelectComponent } from '../admin-user/admin-user-select/admin-user-select.component';\n\nexport const TEMPLATE_COMPONENTS: any[] = [\n AdminEnvironmentSelectComponent,\n AdminPredicatesSelectComponent,\n AdminSelectMetadataComponent,\n AdminUserSelectMetadataComponent,\n AdminAttributesSelectComponent,\n AdminClassesSelectComponent,\n AdminFieldsSelectComponent,\n AdminUserSelectComponent,\n AdminRelationTypesSelectComponent,\n AdminSelectMetadataRulesComponent,\n AdminSelectDatasetComponent\n];\n\n@Component({\n selector: 'pry-admin-layout',\n templateUrl: './admin-layout.component.html'\n})\nexport class AdminLayoutComponent extends BaseLayoutComponent implements AfterViewInit, OnDestroy {\n baseToolboxTranslation: string;\n actions$: Observable<BaseToolboxAction[]>;\n subActions$: Observable<BaseToolboxAction[]>;\n compoType$?: Observable<string | null>;\n panelOpen$: Observable<boolean>;\n sub = new Subscription();\n @ViewChild('adminPanel', { static: true, read: ViewContainerRef }) adminPanel!: ViewContainerRef;\n componentRef?: ComponentRef<any>;\n limit$ = new BehaviorSubject<string | undefined>(undefined);\n\n constructor(store: Store<any>, router: Router, private route: ActivatedRoute) {\n super(store, router);\n this.baseToolboxTranslation = '@pry.admin.';\n this.actions$ = this.store.select(AdminSelectors.actions);\n this.subActions$ = this.store.select(AdminSelectors.subActions);\n this.panelOpen$ = this.store.select(AdminSelectors.panelOpen);\n this.sub.add(\n this.store.select(AdminSelectors.componentType).subscribe((ct) => {\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: !!ct }));\n })\n );\n this.subscriptions.add(this.route.data.subscribe((data) => this.limit$?.next(data['limitMenu'])));\n }\n\n override init(): void {\n this.menus$ = this.store.select(AdminSelectors.menus);\n this.menuOpen$ = this.store.select(AdminSelectors.menuOpen);\n }\n\n override highlightMenu(menu: string): void {\n this.store.dispatch(AdminActions.highlightMenu({ menu }));\n }\n\n ngAfterViewInit(): void {\n this.compoType$ = this.store.select(AdminSelectors.componentType);\n this.sub.add(\n this.compoType$.subscribe((ct) => {\n if (this.componentRef) {\n this.adminPanel.clear();\n }\n let component = TEMPLATE_COMPONENTS.find((c) => c.id === ct);\n if (component) {\n this.componentRef = this.adminPanel.createComponent(component);\n }\n })\n );\n }\n\n override ngOnDestroy() {\n this.sub.unsubscribe();\n }\n}\n","<div class=\"o-base-layout\" [ngClass]=\"{ 'is-menu-open': menuOpen$ | async }\">\n <pry-admin-title class=\"o-base-layout__title\"></pry-admin-title>\n @if (menuOpen$ | async) {\n <pry-admin-menu class=\"o-base-layout__menu\"></pry-admin-menu>\n }\n <pry-base-toolbox\n class=\"o-base-layout__toolbox\"\n [baseToolboxTranslation]=\"baseToolboxTranslation\"\n [actions$]=\"actions$\"\n [subActions$]=\"subActions$\"\n ></pry-base-toolbox>\n\n <div class=\"o-base-layout__contentwrapper\">\n <div class=\"o-base-layout__content\">\n <router-outlet></router-outlet>\n </div>\n\n <div\n class=\"o-base-layout__panel\"\n [class.is-open]=\"panelOpen$ | async\"\n [class.-model]=\"(limit$ | async) === 'model'\"\n >\n <div class=\"o-base-layout__panel__content\">\n <ng-template #adminPanel></ng-template>\n </div>\n </div>\n </div>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { Link, LinkDetails } from '@provoly/dashboard';\n\nexport const LinksActions = {\n loadLinks: createAction('[Admin/Links] Load Links'),\n loadLinksSuccess: createAction('[Admin/Links Api] Load Links Success', props<{ datas: LinkDetails[] }>()),\n loadLinksFailure: createAction('[Admin/Links Api] Load Links Failure', props<{ error: any }>()),\n\n saveLink: createAction('[Admin/Links] Save Links', props<{ link: Link; route: string }>()),\n saveLinkSuccess: createAction('[Admin/Links Api] Save Links Success', props<{ route: string }>()),\n saveLinkFailure: createAction('[Admin/Links Api] Save Links Failure', props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { LinkDetails } from '@provoly/dashboard';\nimport { LinksActions } from './links.actions';\n\nexport const linksFeatureKey = '@pry/admin/links';\n\nexport interface LinkState {\n links: LinkDetails[];\n loading: boolean;\n}\n\nexport const initialLinkState: LinkState = {\n links: [],\n loading: false\n};\n\nexport const linkReducer = createReducer(\n initialLinkState,\n on(LinksActions.loadLinks, (state, action) => ({\n ...state,\n loading: true\n })),\n on(LinksActions.loadLinksSuccess, (state, action) => ({\n ...state,\n links: [...action.datas],\n loading: false\n })),\n on(LinksActions.loadLinksFailure, (state, action) => ({\n ...state,\n loading: false\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromLinks from './links.reducer';\n\nconst feature = createFeatureSelector<fromLinks.LinkState>(fromLinks.linksFeatureKey);\n\nconst links = createSelector(feature, (state) => state?.links);\n\nexport const LinksSelectors = {\n feature,\n links\n};\n","import { Component } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n ClassActions,\n ClassSelectors,\n Link,\n LinkDetails,\n RelationType,\n RelationTypesActions,\n RelationTypesSelectors\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { LinksActions } from '../store/links.actions';\nimport { LinksSelectors } from '../store/links.selectors';\n\n@Component({\n selector: 'pry-admin-links-new',\n templateUrl: './admin-links-new.component.html'\n})\nexport class AdminLinksNewComponent {\n sub = new Subscription();\n\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n relationTypes$: Observable<RelationType[]>;\n links$: Observable<LinkDetails[]>;\n classes$: Observable<Class[]>;\n attributesSource$?: Observable<Attribute[] | undefined>;\n attributesDestination$?: Observable<Attribute[] | undefined>;\n attrIdTofilter$?: Observable<string[]>;\n\n linkForm: UntypedFormGroup;\n\n classSourceId?: string;\n isSubmitted = false;\n isSelectClass = false;\n\n constructor(\n private store: Store<AdminLinksNewComponent>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(RelationTypesActions.load({}));\n this.store.dispatch(LinksActions.loadLinks());\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.relationTypes$ = this.store.select(RelationTypesSelectors.relationsTypes);\n this.links$ = this.store.select(LinksSelectors.links);\n this.linkForm = this.formBuilder.group({\n id: [uuid()],\n relationType: ['', [Validators.required]],\n classSource: [undefined, [Validators.required]],\n attributeSource: [undefined, [Validators.required]],\n classDestination: [undefined, [Validators.required]],\n attributeDestination: [undefined, [Validators.required]]\n });\n }\n\n onTypeSourceChange() {\n this.isSelectClass = this.linkForm.get('relationType')?.value !== undefined;\n }\n\n onClassSourceChange(event: any) {\n this.linkForm.patchValue({\n attributeSource: '',\n classDestination: '',\n attributeDestination: ''\n });\n this.attributesSource$ = this.classes$.pipe(map((classes) => classes.find((c) => c.id === event.id)?.attributes));\n this.classSourceId = event.id;\n }\n\n onClassDestinationChange(event: any) {\n this.linkForm.patchValue({\n attributeDestination: ''\n });\n\n this.attrIdTofilter$ = this.links$.pipe(\n map((links) =>\n links\n .filter(\n (link) =>\n link.attributeSource.id == this.linkForm.value.attributeSource.id ||\n link.attributeDestination.id == this.linkForm.value.attributeSource.id\n )\n .map((item) =>\n item.attributeSource.id === this.linkForm.value.attributeSource.id\n ? item.attributeDestination.id\n : item.attributeSource.id\n )\n )\n );\n\n this.attributesDestination$ = combineLatest([this.classes$, this.attrIdTofilter$]).pipe(\n map(([classes, attrIds]) =>\n classes\n .find((c) => c.id === event.id)\n ?.attributes.filter(\n (attr) => !attrIds.includes(attr.id) && this.linkForm.value.attributeSource.id !== attr.id\n )\n )\n );\n }\n\n goBack() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(AdminActions.routeTo({ path: path.toString() }));\n }\n\n addLink() {\n this.isSubmitted = true;\n if (this.linkForm.valid) {\n this.isSubmitted = false;\n let linkToAdd = {\n id: this.linkForm.value.id,\n relationType: this.linkForm.value.relationType,\n attributeSource: this.linkForm.value.attributeSource.id,\n attributeDestination: this.linkForm.value.attributeDestination.id\n } as Link;\n\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(LinksActions.saveLink({ link: linkToAdd, route: path.toString() }));\n }\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.links.add' | i18n }}</h1>\n <form class=\"o-form\" [formGroup]=\"linkForm\" (ngSubmit)=\"addLink()\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"name-label\" for=\"link_name\" class=\"a-label\">\n {{ '@pry.admin.links.relationType' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"link_name\"\n formControlName=\"relationType\"\n [items]=\"relationTypes$ | async | prySortData : sortActive : sortDirection\"\n (ngModelChange)=\"onTypeSourceChange()\"\n [isForm]=\"true\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [placeholder]=\"'@pry.admin.links.selectRelationType' | i18n\"\n [attr.aria-labelledby]=\"\n isSubmitted && linkForm.get('relationType')?.invalid ? 'name-label name-error' : 'name-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && linkForm.get('relationType')?.invalid\"\n required\n >\n </pry-select>\n @if (isSubmitted && linkForm.get('relationType')?.invalid) {\n <label\n id=\"name-error\"\n for=\"link_name\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n\n @if (isSelectClass) {\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"class-source-label\" form=\"link_class-source\" class=\"a-label\">\n {{ '@pry.admin.links.classSource' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"link_class-source\"\n formControlName=\"classSource\"\n [items]=\"classes$ | async | prySortData : sortActive : sortDirection\"\n (ngModelChange)=\"onClassSourceChange($event)\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && linkForm.get('classSource')?.invalid\n ? 'class-source-label class-source-error'\n : 'class-source-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && linkForm.get('classSource')?.invalid\"\n required\n >\n </pry-select>\n @if (isSubmitted && linkForm.get('classSource')?.invalid) {\n <label\n id=\"class-source-error\"\n for=\"link_class-source\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n }\n\n @if (attributesSource$ | async | prySortData : sortActive : sortDirection; as attr) {\n <div\n class=\"m-form-label-field -width-sm\"\n >\n <label id=\"attribute-source-label\" for=\"link_attribute-source\" class=\"a-label\">\n {{ '@pry.admin.links.attributeSource' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"link_attribute-source\"\n formControlName=\"attributeSource\"\n [items]=\"attr\"\n [isForm]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && linkForm.get('attributeSource')?.invalid\n ? 'attribute-source-label attribute-source-error'\n : 'attribute-source-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && linkForm.get('attributeSource')?.invalid\"\n required\n >\n </pry-select>\n @if (isSubmitted && linkForm.get('attributeSource')?.invalid) {\n <label\n id=\"attribute-source-error\"\n for=\"link_attribute-source\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n }\n\n @if (classes$ | async | prySortData : sortActive : sortDirection; as cd) {\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"class-destination-label\" for=\"link_class-destination\" class=\"a-label\">\n {{ '@pry.admin.links.classDestination' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"link_class-destination\"\n formControlName=\"classDestination\"\n [items]=\"cd\"\n (ngModelChange)=\"onClassDestinationChange($event)\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && linkForm.get('classDestination')?.invalid\n ? 'class-destination-label class-destination-error'\n : 'class-destination-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && linkForm.get('classDestination')?.invalid\"\n required\n >\n </pry-select>\n @if (isSubmitted && linkForm.get('classDestination')?.invalid) {\n <label\n id=\"class-destination-error\"\n for=\"link_class-destination\"\n class=\"text-error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n }\n\n @if (attributesDestination$ | async | prySortData : sortActive : sortDirection; as attr) {\n <div\n class=\"m-form-label-field -width-sm\"\n >\n <label id=\"attribute-destination-label\" for=\"link_attribute-destination\" class=\"a-label\">\n {{ '@pry.admin.links.attributeDestination' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"link_attribute-destination\"\n formControlName=\"attributeDestination\"\n [items]=\"attr\"\n [isForm]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && linkForm.get('attributeDestination')?.invalid\n ? 'attribute-destination-label attribute-destination-error'\n : 'attribute-destination-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && linkForm.get('attributeDestination')?.invalid\"\n required\n >\n </pry-select>\n @if (isSubmitted && linkForm.get('attributeDestination')?.invalid) {\n <label\n id=\"attribute-destination-error\"\n for=\"link_attribute-destination\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n }\n\n <div class=\"m-btn-group -width-sm\">\n <button\n class=\"a-btn a-btn--secondary\"\n type=\"button\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" [innerHTML]=\"'@pry.admin.create' | i18n\"></button>\n </div>\n </form>\n</div>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n ClassActions,\n ClassSelectors,\n LinkDetails,\n LinkExtended,\n RelationTypesActions\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { LinksActions } from './store/links.actions';\nimport { LinksSelectors } from './store/links.selectors';\n\n@Component({\n selector: 'pry-admin-links',\n templateUrl: './admin-links.component.html'\n})\nexport class AdminLinksComponent {\n links$: Observable<LinkDetails[]>;\n linksExtended$: Observable<LinkExtended[]>;\n\n classes$: Observable<Class[]>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n sub = new Subscription();\n\n constructor(\n private store: Store<AdminLinksComponent>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(LinksActions.loadLinks());\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(RelationTypesActions.load({}));\n this.links$ = this.store.select(LinksSelectors.links);\n this.classes$ = this.store.select(ClassSelectors.classes);\n\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'links',\n actionAccess: 'write'\n }\n ]\n })\n );\n\n this.linksExtended$ = combineLatest([this.links$, this.classes$]).pipe(\n map(([links, classes]) => {\n return links.map((l) => {\n return {\n id: l.id,\n relationType: l.relationType.name,\n attributeSource: l.attributeSource.name,\n attributeDestination: l.attributeDestination.name,\n classSource:\n classes.find((c) => c.attributes.find((a: Attribute) => a.id === l.attributeSource.id) !== undefined)\n ?.name || '',\n classDestination:\n classes.find((c) => c.attributes.find((a: Attribute) => a.id === l.attributeDestination.id) !== undefined)\n ?.name || ''\n };\n });\n })\n );\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.links.list' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.links.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th prySortHeader=\"name\">{{ '@pry.admin.links.classSource' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.links.attributeSource' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.links.classDestination' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.links.attributeDestination' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.links.relationType' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (link of linksExtended$ | async | prySortData: sortActive : sortDirection; track link) {\n <tr>\n <td>{{ link.classSource }}</td>\n <td>{{ link.attributeSource }}</td>\n <td>{{ link.classDestination }}</td>\n <td>{{ link.attributeDestination }}</td>\n <td>{{ link.relationType }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, MetadataRules } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors, MetadataState } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable, Subscription } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AdminActions } from '../../../../store/admin.actions';\nimport { AdminMetadataUserState } from '../../../admin-metadata-user/store/admin-metadata-user.reducer';\nimport { AdminMetadataRulesActions } from '../../store/metadata-rules.actions';\nimport { MetadataRulesState } from '../../store/metadata-rules.reducer';\nimport { MetadataRulesSelectors } from '../../store/metadata-rules.selectors';\n\n@Component({\n selector: 'pry-admin-form-metadata-rules',\n templateUrl: './admin-form-metadata-rules.component.html'\n})\nexport class AdminFormMetadataRulesComponent implements OnInit, OnDestroy {\n @Input() metadataRules?: MetadataRules | null;\n\n metadataList$: Observable<IMetadata[]>;\n metadataUserList$: Observable<IMetadata[]>;\n metadataRulesList$: Observable<MetadataRules[]>;\n\n metadataList: IMetadata[] = [];\n metadataUserList: IMetadata[] = [];\n metadataUserListFilter: IMetadata[] = [];\n metadataRulesList: MetadataRules[] = [];\n\n sub = new Subscription();\n\n form: UntypedFormGroup;\n\n isSameName = false;\n isSameRules = false;\n\n isSubmitted = false;\n\n constructor(\n private store: Store<MetadataRulesState | MetadataState | AdminMetadataUserState>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder\n ) {\n this.metadataList$ = this.store.select(MetadataSelectors.metadata);\n this.metadataUserList$ = this.store.select(MetadataSelectors.userProfile);\n this.metadataRulesList$ = this.store.select(MetadataRulesSelectors.metadataRulesList);\n this.form = this.formBuilder.group({\n id: [uuidv4()],\n name: ['', [Validators.required]],\n metadataUser: ['', [Validators.required]],\n metadataItem: ['', [Validators.required]]\n });\n }\n\n ngOnInit(): void {\n this.isSameRules = false;\n this.isSameName = false;\n this.store.dispatch(AdminMetadataRulesActions.load());\n this.store.dispatch(MetadataActions.loadMetadata());\n this.store.dispatch(MetadataActions.loadUserProfile());\n this.sub = this.metadataList$.subscribe((metadataList) => {\n this.metadataList = metadataList;\n });\n this.sub.add(\n this.metadataRulesList$.subscribe((metadataRulesList) => {\n this.metadataRulesList = metadataRulesList;\n })\n );\n this.sub.add(\n this.metadataUserList$.subscribe((metadataUserList) => {\n this.metadataUserList = metadataUserList;\n this.metadataUserListFilter = metadataUserList;\n if (this.metadataList.length > 0) {\n this.form.patchValue({ metadataItem: this.metadataList[0].id });\n this.selectMetadataItem(this.metadataList[0].id);\n }\n if (this.metadataRules) {\n this.metadataRulesList = this.metadataRulesList.filter((meta) => meta.id !== this.metadataRules?.id);\n const { id, name, userProfile, metadata } = this.metadataRules;\n this.form.patchValue({\n id,\n name,\n metadataUser: userProfile.id,\n metadataItem: metadata.id\n });\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath() }));\n }\n\n getPath() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n if (this.metadataRules) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n return path.toString();\n }\n\n selectMetadataItem(id: string) {\n this.isSameRules = false;\n const metadata = this.metadataList.find((m) => id === m.id);\n if (metadata) {\n this.metadataUserListFilter = this.metadataUserList.filter((mU) => mU.type === metadata.type);\n }\n this.selectAutoMetadataUser();\n }\n\n selectAutoMetadataUser() {\n this.form.patchValue({\n userProfil:\n this.metadataUserListFilter.length > 0\n ? this.metadataRules?.userProfile?.id &&\n !!this.metadataUserListFilter.find((metadata) => metadata.id === this.metadataRules?.userProfile?.id)\n ? this.metadataRules.userProfile.id\n : this.metadataUserListFilter[0].id\n : ''\n });\n }\n\n selectMetadataUser(id: string) {\n this.isSameRules = false;\n }\n\n changeValueName(value: string) {\n this.isSameName = false;\n }\n\n submit() {\n this.isSubmitted = true;\n if (this.form.valid) {\n this.isSubmitted = false;\n this.isSameName = !!this.metadataRulesList.find(\n (metadata) => this.form.get('name')?.value.toLowerCase() === metadata.name.toLowerCase()\n );\n this.isSameRules = !!this.metadataRulesList.find((metadata) => {\n return (\n this.form.get('metadataUser')?.value === metadata?.userProfile?.id &&\n this.form.get('metadataItem')?.value === metadata?.metadata?.id\n );\n });\n if (this.form.valid && !this.isSameName && !this.isSameRules) {\n this.store.dispatch(AdminMetadataRulesActions.post({ metadata: this.form.value }));\n }\n }\n }\n}\n","<form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.metadata-rules.label' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n (ngModelChange)=\"changeValueName($event)\"\n [attr.aria-labelledby]=\"isSubmitted && form.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && form.get('name')?.invalid\"\n required\n />\n @if (isSubmitted && form.get('name')?.invalid) {\n <label\n class=\"a-label a-label--help -error\"\n id=\"name-error\"\n for=\"name\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"item-label\" for=\"item\">{{\n '@pry.admin.metadata-rules.metadata-item.name' | i18n\n }}</label>\n <pry-select\n id=\"item\"\n formControlName=\"metadataItem\"\n [items]=\"metadataList\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n (ngModelChange)=\"selectMetadataItem($event)\"\n aria-labelledby=\"item-label\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"user-label\" for=\"user\">{{\n '@pry.admin.metadata-rules.metadata-user.name' | i18n\n }}</label>\n <pry-select\n id=\"user\"\n formControlName=\"metadataUser\"\n [items]=\"metadataUserListFilter\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n (ngModelChange)=\"selectMetadataUser($event)\"\n aria-labelledby=\"user-label\"\n ></pry-select>\n </div>\n\n @if (isSameName) {\n <label class=\"a-label a-label--help -error\">{{\n '@pry.admin.metadata-rules.is-same-name' | i18n\n }}</label>\n }\n @if (isSameRules) {\n <label class=\"a-label a-label--help -error\">{{\n '@pry.admin.metadata-rules.is-same-rules' | i18n\n }}</label>\n }\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(metadataRules ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { MetadataRules } from '@provoly/dashboard';\nimport { MetadataState } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable } from 'rxjs';\nimport { AdminMetadataRulesActions } from '../store/metadata-rules.actions';\nimport { MetadataRulesSelectors } from '../store/metadata-rules.selectors';\n\n@Component({\n selector: 'pry-admin-edit-metadata-rules',\n templateUrl: './admin-edit-metadata-rules.component.html'\n})\nexport class AdminEditMetadataRulesComponent {\n metadataRulesSelected$: Observable<MetadataRules | null>;\n\n constructor(private store: Store<MetadataState>) {\n this.store.dispatch(AdminMetadataRulesActions.load());\n this.metadataRulesSelected$ = this.store.select(MetadataRulesSelectors.metadataRulesSelected);\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.metadata-rules.edit.title' | i18n }}</h1>\n <pry-admin-form-metadata-rules [metadataRules]=\"metadataRulesSelected$ | async\"></pry-admin-form-metadata-rules>\n</div>\n","import { Component, ElementRef, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { META_OPTIONS, MetadataRules, PryI18nService } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { IConfigHeader } from '../admin-metadata/shared/list-metadata/pry-list-metadata.component';\nimport { AdminMetadataRulesActions } from './store/metadata-rules.actions';\nimport { MetadataRulesState } from './store/metadata-rules.reducer';\nimport { MetadataRulesSelectors } from './store/metadata-rules.selectors';\n\n@Component({\n selector: 'pry-admin-metadata-rules',\n templateUrl: './admin-metadata-rules.component.html'\n})\nexport class AdminMetadataRulesComponent {\n @ViewChild('input') input!: ElementRef;\n\n metadataRulesList$: Observable<MetadataRules[]>;\n\n selectedMetadataRules$: Observable<string | undefined>;\n\n sortActive? = 'name';\n\n sortDirection? = 'asc';\n\n value: string = '';\n\n configHeader: Array<IConfigHeader>;\n\n labelMetadataSelected: string = '';\n\n editOpened: boolean = false;\n\n validateAction: () => void;\n cancelAction: () => void;\n\n constructor(\n private store: Store<MetadataRulesState>,\n private translateService: PryI18nService,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.validateAction = () => this.validateName(this.labelMetadataSelected);\n this.cancelAction = () => this.cancelEdition();\n this.configHeader = [\n { headerType: 'label', label: this.translateService.instant('@pry.admin.metadata-rules.label') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.metadata-rules.metadata-item.name') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.metadata-rules.metadata-user.name') }\n ];\n this.store.dispatch(AdminMetadataRulesActions.load());\n this.metadataRulesList$ = this.store.select(MetadataRulesSelectors.metadataRulesList);\n this.selectedMetadataRules$ = this.store.select(MetadataRulesSelectors.metadataRulesSelectedId);\n this.store.dispatch(AdminMetadataRulesActions.unselectMetadata());\n const path = this.router.createUrlTree(['new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminMetadataRulesActions.openNewMetadataRules({ route: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n cancelEdition(): void {\n this.toggleEditionMetadata();\n this.store.dispatch(AdminMetadataRulesActions.unselectMetadata());\n }\n\n toggleEditionMetadata(): void {\n this.editOpened = !this.editOpened;\n if (this.editOpened) {\n setTimeout(() => {\n this.input.nativeElement.focus();\n }, 10);\n }\n }\n\n validateName(newLabel: string): void {\n this.toggleEditionMetadata();\n }\n\n changeValue($event: any) {\n this.labelMetadataSelected = $event;\n }\n\n selectMetadata(metadataRules: MetadataRules) {\n this.openDetail(metadataRules);\n }\n\n openDetail(metadataRules: MetadataRules) {\n this.store.dispatch(AdminMetadataRulesActions.selectMetadata({ metadataRules }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminSelectMetadataRulesComponent' }));\n }\n\n getTranslationType(type: string) {\n return META_OPTIONS.find((el) => el.varType === type)?.translation || 'undefined';\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.metadata-rules.title' | i18n }}</h1>\n @if (metadataRulesList$ | async; as metadataRulesList) {\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.metadata-rules.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n @for (conf of configHeader; track conf) {\n <th [prySortHeader]=\"conf.label\">{{ conf.label }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (metadataRules of metadataRulesList | prySortData: sortActive : sortDirection; track metadataRules) {\n <tr\n (click)=\"selectMetadata(metadataRules)\"\n [class.is-selected]=\"(selectedMetadataRules$ | async) === metadataRules.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-meta-rule-' + metadataRules.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedMetadataRules$ | async) === metadataRules.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-meta-rule-' + metadataRules.id\"\n >\n <span class=\"u-visually-hidden\">{{ metadataRules.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ metadataRules.name }}</td>\n <td>{{ metadataRules.metadataItem?.name }}</td>\n <td>{{ metadataRules.metadataUser?.name }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n</div>\n\n<pry-modal\n [titleModal]=\"'@pry.toolbox.rename' | i18n\"\n [validateLabel]=\"'@pry.toolbox.manifest.check' | i18n\"\n [validateAction]=\"validateAction\"\n [cancelLabel]=\"'@pry.toolbox.manifest.close' | i18n\"\n [cancelAction]=\"cancelAction\"\n [opened]=\"this.editOpened\"\n >\n <div class=\"field__input\">\n <span>{{ '@pry.toolbox.manifest.name' | i18n }}</span>\n <input\n type=\"text\"\n (keyup.enter)=\"validateName(input.value)\"\n [ngModel]=\"labelMetadataSelected\"\n (ngModelChange)=\"changeValue($event)\"\n #input\n />\n </div>\n</pry-modal>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-new-metadata-rules',\n templateUrl: './admin-new-metadata-rules.component.html'\n})\nexport class AdminNewMetadataRulesComponent {}\n","<div class=\"o-base-container\">\n <h4 class=\"admin__title\">{{ '@pry.admin.metadata-rules.add.title' | i18n }}</h4>\n <pry-admin-form-metadata-rules></pry-admin-form-metadata-rules>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { IMetadata, META_OPTIONS } from '@provoly/dashboard';\n\nexport interface IConfigHeader {\n headerType: 'label' | 'icon';\n label: string;\n}\n\n@Component({\n selector: 'pry-list-metadata',\n templateUrl: './pry-list-metadata.component.html'\n})\nexport class PryListMetadataComponent {\n @ViewChild('input') input!: ElementRef;\n\n @Input() sortActive? = 'name';\n\n @Input() sortDirection? = 'asc';\n\n @Input() configHeader: Array<IConfigHeader> = [];\n\n @Input() metadata: Array<IMetadata> | null = [];\n\n @Input() selectedMetadata: string | null = null;\n\n @Input() labelMetadataSelected: string = '';\n\n @Input() editable: boolean = true;\n\n @Output() editClicked$: EventEmitter<IMetadata> = new EventEmitter<IMetadata>();\n\n /**\n * @param string: newLabel label for the metadata edited\n */\n @Output() submitModal$: EventEmitter<string> = new EventEmitter<string>();\n\n @Output() cancelAction$: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @param string\n */\n @Output() rowClicked$: EventEmitter<string> = new EventEmitter<string>();\n\n editOpened: boolean = false;\n\n validateAction: () => void;\n cancelAction: () => void;\n\n constructor() {\n this.validateAction = () => this.validateName(this.labelMetadataSelected);\n this.cancelAction = () => this.cancelEdition();\n }\n\n openEditMetadata(metadata: IMetadata): void {\n this.editClicked$.emit(metadata);\n }\n\n cancelEdition(): void {\n this.cancelAction$.emit();\n this.toggleEditionMetadata();\n }\n\n toggleEditionMetadata(): void {\n this.editOpened = !this.editOpened;\n if (this.editOpened) {\n setTimeout(() => {\n this.input.nativeElement.focus();\n }, 10);\n }\n }\n\n validateName(newLabel: string): void {\n this.submitModal$.emit(newLabel);\n this.toggleEditionMetadata();\n }\n\n changeValue($event: any) {\n this.labelMetadataSelected = $event;\n }\n\n goToDetails(id: string) {\n this.rowClicked$.emit(id);\n }\n\n getTranslationType(type: string) {\n return META_OPTIONS.find((el) => el.varType === type)?.translation || 'undefined';\n }\n}\n","<table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n\n <thead>\n <tr>\n <th style=\"width: 30px\"></th>\n @for (conf of configHeader; track conf) {\n <th [prySortHeader]=\"conf.label\">{{ conf.label }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (metadata of metadata | prySortData: sortActive : sortDirection; track metadata) {\n <tr\n (click)=\"goToDetails(metadata.id)\"\n [class.is-selected]=\"selectedMetadata === metadata.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-meta' + metadata.name\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"selectedMetadata === metadata.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-meta-' + metadata.id\"\n >\n <span class=\"u-visually-hidden\">{{ metadata.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ metadata.name }}</td>\n <td>{{ getTranslationType(metadata.type) | i18n }}</td>\n </tr>\n }\n </tbody>\n</table>\n\n<pry-modal\n [titleModal]=\"'@pry.toolbox.rename' | i18n\"\n [validateLabel]=\"'@pry.toolbox.manifest.check' | i18n\"\n [validateAction]=\"validateAction\"\n [cancelLabel]=\"'@pry.toolbox.manifest.close' | i18n\"\n [cancelAction]=\"cancelAction\"\n [opened]=\"this.editOpened\"\n >\n <div class=\"field__input\">\n <span>{{ '@pry.toolbox.manifest.name' | i18n }}</span>\n <input\n type=\"text\"\n (keyup.enter)=\"validateName(input.value)\"\n [ngModel]=\"labelMetadataSelected\"\n (ngModelChange)=\"changeValue($event)\"\n #input\n />\n </div>\n</pry-modal>\n","import { Component, ElementRef, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, PryI18nService } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { combineLatest, filter, Observable, Subject, takeUntil } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { IConfigHeader } from '../admin-metadata/shared/list-metadata/pry-list-metadata.component';\nimport { AdminMetadataUserActions } from './store/admin-metadata-user.action';\nimport { AdminMetadataUserSelectors } from './store/admin-metadata-user.selector';\n\n@Component({\n selector: 'pry-admin-user',\n templateUrl: './admin-metadata-user.component.html'\n})\nexport class AdminMetadataUserComponent {\n @ViewChild('input') input!: ElementRef;\n\n metadata$: Observable<Array<IMetadata>>;\n selectedMetadataId$: Observable<string | null>;\n\n sortActive? = 'name';\n\n sortDirection? = 'asc';\n\n value: string = '';\n\n configHeader: Array<IConfigHeader>;\n\n unsubscribe$: Subject<any> = new Subject<any>();\n\n constructor(\n private store: Store<any>,\n private translateService: PryI18nService,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.configHeader = [\n { headerType: 'label', label: this.translateService.instant('@pry.admin.user.label') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.user.type') }\n ];\n this.metadata$ = this.store.select(MetadataSelectors.userProfile);\n this.selectedMetadataId$ = this.store.select(AdminMetadataUserSelectors.selectedMetadataId);\n this.store.dispatch(AdminMetadataUserActions.unselectMetadata());\n this.store.dispatch(MetadataActions.loadUserProfile());\n combineLatest([this.store.select(AdminMetadataUserSelectors.selectedMetadataId), this.metadata$])\n .pipe(\n filter(([x]) => !!x),\n takeUntil(this.unsubscribe$)\n )\n .subscribe(([id, metas]) => {\n this.value = metas.find((meta) => meta.id === id)?.name ?? '';\n });\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_user',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n rowClicked(id: string) {\n this.store.dispatch(AdminMetadataUserActions.goToDetailsViewMetadata({ id }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminUserSelectMetadataComponent' }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.user.title' | i18n }}</h1>\n <pry-list-metadata\n [metadata]=\"metadata$ | async\"\n [selectedMetadata]=\"selectedMetadataId$ | async\"\n [configHeader]=\"configHeader\"\n [sortActive]=\"sortActive\"\n [labelMetadataSelected]=\"value\"\n [sortDirection]=\"sortDirection\"\n (rowClicked$)=\"rowClicked($event)\"\n >\n </pry-list-metadata>\n</div>\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, META_OPTIONS } from '@provoly/dashboard';\nimport { MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\nimport { AdminActions } from '../../../../store/admin.actions';\n\n@Component({\n selector: 'pry-form-metadata',\n templateUrl: './form-metadata.component.html'\n})\nexport class FormMetadataComponent implements OnInit, OnDestroy {\n metaForm: UntypedFormGroup;\n metaOptions = META_OPTIONS;\n currentTypeTranslation = '';\n\n metadataNames$?: Observable<string[]>;\n nameAlreadyExists$?: Observable<boolean>;\n\n sub = new Subscription();\n\n isSubmitted = false;\n\n @Input() titleForm: string = '';\n @Input() isMetaSimpleEdit = false;\n @Input() isMetaUser = false;\n @Input() metadata?: IMetadata;\n\n @Output() submitMetadata$: EventEmitter<IMetadata> = new EventEmitter<IMetadata>();\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder\n ) {\n this.metaForm = this.formBuilder.group({\n id: [{ value: uuid(), disabled: true }],\n name: ['', [Validators.required]],\n type: [this.metaOptions[0].varType],\n description: [],\n allowedValues: this.formBuilder.array([])\n });\n }\n\n ngOnInit(): void {\n if (this.isMetaUser) {\n this.metadataNames$ = this.store\n .select(MetadataSelectors.userProfile)\n .pipe(map((metadata) => metadata.map((metadata) => metadata.name.toLowerCase())));\n } else {\n this.metadataNames$ = this.store\n .select(MetadataSelectors.metadata)\n .pipe(map((metadata) => metadata.map((metadata: IMetadata) => metadata.name.toLowerCase())));\n }\n\n this.nameAlreadyExists$ = combineLatest([\n this.metaForm.get('name')?.valueChanges as Observable<string>,\n this.metadataNames$\n ]).pipe(map(([value, metaNames]) => metaNames.includes(value.toLowerCase()) && value != this.metadata?.name));\n this.sub.add(\n this.nameAlreadyExists$.subscribe((value) => {\n if (value) {\n this.metaForm.controls['name'].setErrors({ 'same-name': true });\n }\n return value;\n })\n );\n\n if (this.metadata) {\n const type = META_OPTIONS.find((el) => el.varType === this.metadata?.type);\n this.currentTypeTranslation = type ? type.translation : META_OPTIONS[0].translation;\n this.metaForm.patchValue({\n id: this.metadata.id,\n name: this.metadata.name,\n type: this.metadata.type,\n description: this.metadata.description\n });\n this.metaForm.controls['type'].disable();\n if (this.isMetaSimpleEdit) {\n this.metaForm.controls['name'].disable();\n }\n\n if (this.metadata.allowedValues) {\n for (let item of this.metadata.allowedValues) {\n this.metadataList.push(new UntypedFormControl({ value: item, disabled: true }));\n }\n }\n }\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n get metadataList() {\n return this.metaForm.controls['allowedValues'] as UntypedFormArray;\n }\n\n addMetadata() {\n this.isSubmitted = true;\n if (this.metaForm.valid) {\n this.isSubmitted = false;\n let payload = {\n ...this.metaForm.getRawValue(),\n allowedValues: this.metaForm.getRawValue().allowedValues.filter((x: string) => x !== null)\n };\n this.submitMetadata$.emit(payload);\n this.goBack();\n }\n }\n\n addItemList(type?: string) {\n if (type === 'LIST' || type === undefined) {\n this.metadataList.push(new UntypedFormControl('', Validators.required));\n }\n }\n\n removeItemList(index: number) {\n this.metadataList.removeAt(index);\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath() }));\n }\n\n getPath() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n if (this.metadata) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n return path.toString();\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ titleForm }}</h1>\n\n <form class=\"o-form\" [formGroup]=\"metaForm\" (ngSubmit)=\"addMetadata()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"metadata-name\">\n {{ '@pry.admin.metadata.label' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n class=\"a-form-field\"\n id=\"metadata-name\"\n type=\"text\"\n formControlName=\"name\"\n [required]=\"!metadata\"\n [attr.aria-labelledby]=\"isSubmitted && metaForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && metaForm.get('name')?.invalid\"\n />\n @if (isSubmitted && metaForm.get('name')?.invalid) {\n <label\n id=\"name-error\"\n for=\"metadata-name\"\n class=\"a-label a-label--help -error\"\n >\n @if (metaForm.get('name')?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (metaForm.get('name')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (metaForm.get('name')?.hasError('pattern')) {\n <span>{{ '@pry.admin.classes.formatName' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-md\">\n <label class=\"a-label\" for=\"metadata_description\">{{ '@pry.admin.metadata.description' | i18n }}</label>\n <textarea\n rows=\"5\"\n type=\"text\"\n id=\"metadata_description\"\n class=\"a-form-field\"\n formControlName=\"description\"\n ></textarea>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label for=\"metadata-type\" id=\"metadata-type-label\" class=\"a-label\">\n {{ '@pry.admin.metadata.type' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"metadata-type\"\n formControlName=\"type\"\n [items]=\"metaOptions\"\n bindValue=\"varType\"\n bindLabel=\"translation\"\n [isForm]=\"true\"\n (ngModelChange)=\"addItemList($event)\"\n aria-labelledby=\"metadata-type-label\"\n ></pry-select>\n </div>\n\n @if (metaForm.value.type === 'LIST') {\n @if (metadataList.controls.length > 0) {\n <div class=\"o-datas-list-wrapper\" formArrayName=\"allowedValues\">\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.admin.varType.list' | i18n }}</legend>\n @for (control of metadataList.controls; track control; let i = $index) {\n <div class=\"o-datas-list metadata-list\">\n <div class=\"o-datas-list__fields metadata-input\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"metadata-list-label\" for=\"metadata-list\" class=\"a-label\">\n {{ '@pry.admin.metadata.listLabel' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n class=\"a-form-field\"\n id=\"metadata-list\"\n formControlName=\"{{ i }}\"\n [required]=\"!control.value\"\n [attr.aria-invalid]=\"isSubmitted && control?.invalid\"\n [attr.aria-labelledby]=\"\n isSubmitted && control?.invalid ? 'metadata-list-label metadata-list-error' : 'metadata-list-label'\n \"\n />\n @if (isSubmitted && control.invalid) {\n <label\n id=\"metadata-list-error\"\n for=\"metadata-list\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n <div class=\"m-btn-group m-btn-group--input-actions\">\n @if (i === metadataList.controls.length - 1) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--input-action\"\n (click)=\"control.value.trim() !== '' ? addItemList() : undefined\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.admin.metadata.addValue' | i18n }}</span>\n <pry-icon iconSvg=\"add\" [width]=\"20\" [height]=\"20\"></pry-icon>\n </button>\n }\n @if (i !== 0 && !metadataList.controls[i].disabled) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--input-action\"\n (click)=\"removeItemList(i)\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.admin.metadata.removeValue' | i18n }}</span>\n <pry-icon iconSvg=\"delete\" [width]=\"20\" [height]=\"20\"></pry-icon>\n </button>\n }\n </div>\n </div>\n </div>\n }\n </fieldset>\n </div>\n }\n }\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(metadata ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable } from 'rxjs';\nimport { AdminMetadataUserActions } from '../store/admin-metadata-user.action';\n\n@Component({\n selector: 'pry-admin-edit-metadata',\n templateUrl: './admin-user-edit-metadata.component.html'\n})\nexport class AdminUserEditMetadataComponent implements OnInit {\n metadata$: Observable<IMetadata>;\n\n constructor(private readonly store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.metadata$ = this.store.select(MetadataSelectors.selectedMetadata);\n this.store.dispatch(MetadataActions.loadUserProfile());\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.store.dispatch(AdminMetadataUserActions.goToDetailsViewMetadata({ id: params['uuid'] }));\n });\n }\n\n submit(metadata: IMetadata) {\n this.store.dispatch(AdminMetadataUserActions.updateMetadata({ metadata }));\n }\n}\n","@if (metadata$ | async; as metadata) {\n <pry-form-metadata\n [metadata]=\"metadata\"\n (submitMetadata$)=\"submit($event)\"\n [titleForm]=\"'@pry.admin.user.edit' | i18n\"\n [isMetaUser]=\"true\"\n >\n </pry-form-metadata>\n}\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { AdminMetadataUserActions } from '../store/admin-metadata-user.action';\n\n@Component({\n selector: 'pry-admin-user-new-metadata',\n templateUrl: './admin-user-new-metadata.component.html'\n})\nexport class AdminUserNewMetadataComponent {\n constructor(private store: Store<any>) {}\n\n submit(metadata: IMetadata) {\n this.store.dispatch(AdminMetadataUserActions.createMetadata({ metadata: metadata }));\n }\n}\n","<pry-form-metadata (submitMetadata$)=\"submit($event)\" [titleForm]=\"'@pry.admin.user.add' | i18n\" [isMetaUser]=\"true\">\n</pry-form-metadata>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-admin-edit-metadata',\n templateUrl: './admin-edit-metadata.component.html'\n})\nexport class AdminEditMetadataComponent implements OnInit {\n metadata$?: Observable<IMetadata>;\n\n constructor(private readonly store: Store<any>, private route: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.store.dispatch(MetadataActions.loadMetadata());\n this.metadata$ = this.store.select(MetadataSelectors.selectedMetadata);\n this.route.params.subscribe((params) => {\n this.store.dispatch(MetadataActions.goToDetailsView({ id: params['uuid'] }));\n });\n }\n\n submit(metadata: IMetadata) {\n this.store.dispatch(MetadataActions.createMetadata({ metadata: metadata }));\n }\n}\n","@if (metadata$ | async; as metadata) {\n <pry-form-metadata\n [metadata]=\"metadata\"\n (submitMetadata$)=\"submit($event)\"\n [titleForm]=\"'@pry.admin.metadata.edit' | i18n\"\n [isMetaSimpleEdit]=\"true\"\n >\n </pry-form-metadata>\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, PryI18nService } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { filter } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { IConfigHeader } from './shared/list-metadata/pry-list-metadata.component';\n\n@Component({\n selector: 'pry-admin-metadata',\n templateUrl: './admin-metadata.component.html'\n})\nexport class AdminMetadataComponent {\n metadata$: Observable<Array<IMetadata>>;\n selectedMetadataId$: Observable<string>;\n\n sortActive? = 'name';\n\n sortDirection? = 'asc';\n\n value: string = '';\n\n configHeader: Array<IConfigHeader>;\n\n unsubscribe$: Subject<any> = new Subject<any>();\n\n constructor(\n private store: Store<any>,\n private translateService: PryI18nService,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.configHeader = [\n { headerType: 'label', label: this.translateService.instant('@pry.admin.metadata.label') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.metadata.type') }\n ];\n this.metadata$ = this.store.select(MetadataSelectors.metadata);\n this.selectedMetadataId$ = this.store.select(MetadataSelectors.selectedMetadataId);\n this.store.dispatch(MetadataActions.unselectMetadata());\n this.store.dispatch(MetadataActions.loadMetadata());\n this.store\n .select(MetadataSelectors.selectedMetadata)\n .pipe(\n filter((x) => !!x),\n takeUntil(this.unsubscribe$)\n )\n .subscribe((selectedMetadata) => {\n this.value = selectedMetadata.name;\n });\n const path = this.router.createUrlTree(['new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: MetadataActions.goToNewMetadata({ route: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n cancelEdition(): void {\n this.store.dispatch(MetadataActions.unselectMetadata());\n }\n\n rowClicked(id: string) {\n this.store.dispatch(MetadataActions.goToDetailsView({ id }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminSelectMetadataComponent' }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.metadata.title' | i18n }}</h1>\n <pry-list-metadata\n [metadata]=\"metadata$ | async\"\n [selectedMetadata]=\"selectedMetadataId$ | async\"\n [configHeader]=\"configHeader\"\n [sortActive]=\"sortActive\"\n [labelMetadataSelected]=\"value\"\n [sortDirection]=\"sortDirection\"\n (cancelAction$)=\"cancelEdition()\"\n (rowClicked$)=\"rowClicked($event)\"\n [editable]=\"false\"\n >\n </pry-list-metadata>\n</div>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\n\n@Component({\n selector: 'pry-admin-new-metadata',\n templateUrl: './admin-new-metadata.component.html'\n})\nexport class AdminNewMetadataComponent {\n constructor(private store: Store<any>) {}\n\n submit(metadata: IMetadata) {\n this.store.dispatch(MetadataActions.createMetadata({ metadata: metadata }));\n }\n}\n","<pry-form-metadata (submitMetadata$)=\"submit($event)\" [titleForm]=\"'@pry.admin.metadata.add' | i18n\">\n</pry-form-metadata>\n","import { Component, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, of, Subscription } from 'rxjs';\nimport { v4 } from 'uuid';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AbacRulesActions } from '../../admin-abac-rules/store/abac-rules.actions';\nimport { AbacRule } from '../../admin-abac-rules/store/abac-rules.model';\nimport { AbacRulesSelectors } from '../../admin-abac-rules/store/abac-rules.selectors';\nimport { PredicatesActions } from '../store/predicates.actions';\nimport { PredicatesSelectors } from '../store/predicates.selectors';\n\n@Component({\n selector: 'pry-admin-predicates-form',\n templateUrl: './admin-predicates-form.component.html'\n})\nexport class AdminPredicatesFormComponent implements OnChanges, OnDestroy {\n private rules$: Observable<AbacRule[]>;\n predicatesUsed$: Observable<number> = of(0);\n predicateNames$?: Observable<string[]>;\n nameAlreadyExists$?: Observable<boolean>;\n\n sub = new Subscription();\n _currentPred?: Predicate;\n predForm: UntypedFormGroup;\n openedModal = false;\n isSubmitted = false;\n validateAction: () => void;\n cancelAction: () => void;\n\n @Input() set currentPred(val: Predicate) {\n this._currentPred = val;\n }\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder\n ) {\n this.store.dispatch(AbacRulesActions.loadAbacRules());\n this.rules$ = this.store.select(AbacRulesSelectors.abacRules);\n\n this.validateAction = () => this.addPredicate();\n this.cancelAction = () => this.goBack();\n\n this.predForm = this.formBuilder.group({\n id: [{ value: v4(), disabled: true }, Validators.required],\n name: ['', [Validators.required]],\n value: ['', [Validators.required]]\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.predicateNames$ = this.store\n .select(PredicatesSelectors.predicates)\n .pipe(map((predicates) => predicates.map((predicate) => predicate.name.toLowerCase())));\n\n this.nameAlreadyExists$ = combineLatest([\n this.predForm.get('name')?.valueChanges as Observable<string>,\n this.predicateNames$\n ]).pipe(\n map(([value, predicateNames]) => predicateNames.includes(value.toLowerCase()) && value != this._currentPred?.name)\n );\n this.sub.add(\n this.nameAlreadyExists$.subscribe((value) => {\n if (value) {\n this.predForm.controls['name'].setErrors({ 'same-name': true });\n }\n return value;\n })\n );\n\n if (!this._currentPred) {\n this.predForm.patchValue({\n id: v4()\n });\n } else if (this._currentPred) {\n this.predicatesUsed$ = this.rules$.pipe(\n map((rules) => rules.filter((rule) => rule.predicate === this._currentPred?.id).length)\n );\n this.predForm.patchValue({\n id: this._currentPred.id,\n name: this._currentPred.name,\n value: this._currentPred.value\n });\n }\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath() }));\n }\n\n addPredicate() {\n this.isSubmitted = true;\n if (this.predForm.valid) {\n this.isSubmitted = false;\n this.store.dispatch(\n PredicatesActions.savePredicate({ predicate: this.predForm.getRawValue(), route: this.getPath() })\n );\n }\n }\n\n checkModal() {\n this.sub.add(this.predicatesUsed$.subscribe((used) => (this.openedModal = used > 0)));\n if (!this.openedModal) {\n this.addPredicate();\n }\n }\n\n getPath() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n if (this._currentPred) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n return path.toString();\n }\n}\n","<div>\n <form class=\"o-form\" [formGroup]=\"predForm\" (ngSubmit)=\"checkModal()\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"name-label\" for=\"name\" class=\"a-label\">\n {{ '@pry.admin.predicates.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"isSubmitted && predForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && predForm.get('name')?.invalid\"\n required\n />\n @if (isSubmitted && predForm.get('name')?.invalid) {\n <label\n id=\"name-error\"\n for=\"name\"\n class=\"a-label a-label--help -error\"\n >\n @if (predForm.get('name')?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (predForm.get('name')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-xl\">\n <label id=\"value-label\" for=\"value\" class=\"a-label\">\n {{ '@pry.admin.predicates.value' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <textarea\n id=\"value\"\n rows=\"10\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"value\"\n name=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && predForm.get('value')?.invalid ? 'value-label value-error' : 'value-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && predForm.get('value')?.invalid\"\n required\n ></textarea>\n @if (isSubmitted && predForm.get('value')?.invalid) {\n <label\n id=\"value-error\"\n for=\"value\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(_currentPred ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n</div>\n\n@if (predicatesUsed$ | async; as used) {\n <div>\n <pry-modal\n [titleModal]=\"'@pry.admin.predicates.validEdit' | i18n\"\n [validateLabel]=\"'@pry.admin.edit' | i18n\"\n [validateAction]=\"validateAction\"\n [cancelLabel]=\"'@pry.admin.cancel' | i18n\"\n [cancelAction]=\"cancelAction\"\n [opened]=\"openedModal\"\n >\n <p [innerHTML]=\"'@pry.admin.predicates.validEditMessage' | i18n: { used: used }\"></p>\n </pry-modal>\n </div>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-predicates-new',\n templateUrl: './admin-predicates-new.component.html'\n})\nexport class AdminPredicatesNewComponent {}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.predicates.add' | i18n }}</h1>\n <pry-admin-predicates-form></pry-admin-predicates-form>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { PredicatesActions } from '../store/predicates.actions';\nimport { PredicatesSelectors } from '../store/predicates.selectors';\n\n@Component({\n selector: 'pry-admin-predicates-update',\n templateUrl: './admin-predicates-update.component.html'\n})\nexport class AdminPredicatesUpdateComponent implements OnInit {\n currentPredicate$: Observable<Predicate | undefined>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.currentPredicate$ = this.store.select(PredicatesSelectors.currentPredicate);\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) =>\n this.store.dispatch(PredicatesActions.selectPredicate({ id: params['id'] }))\n );\n }\n}\n","@if (currentPredicate$ | async; as currentPred) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.predicates.edit' | i18n }}</h1>\n <pry-admin-predicates-form [currentPred]=\"currentPred\"></pry-admin-predicates-form>\n </div>\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { PredicatesActions } from './store/predicates.actions';\nimport { PredicatesSelectors } from './store/predicates.selectors';\n\n@Component({\n selector: 'pry-admin-predicates',\n templateUrl: './admin-predicates.component.html'\n})\nexport class AdminPredicatesComponent {\n predicates$: Observable<Predicate[]>;\n loading$: Observable<boolean>;\n currentPredicateId$: Observable<string | undefined>;\n\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.predicates$ = this.store.select(PredicatesSelectors.predicates);\n this.loading$ = this.store.select(PredicatesSelectors.loading);\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.currentPredicateId$ = this.store.select(PredicatesSelectors.currentPredicateId);\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'predicates',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n goToSelectPredicate(num: string) {\n this.store.dispatch(PredicatesActions.selectPredicate({ id: num }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminPredicatesSelectComponent' }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.predicates.list' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.predicates.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.predicates.name' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (predicate of predicates$ | async | prySortData: sortActive : sortDirection; track predicate) {\n <tr\n (click)=\"goToSelectPredicate(predicate.id)\"\n [class.is-selected]=\"(currentPredicateId$ | async) === predicate.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-pred-' + predicate.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"false\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-pred-' + predicate.id\"\n >\n <span class=\"u-visually-hidden\">{{ predicate.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ predicate.name }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, OnDestroy, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport { ConfigActions, RelationType, RelationTypesActions, RelationTypesSelectors } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\n\n@Component({\n selector: 'pry-admin-relation-types-modal',\n templateUrl: './admin-relation-types-modal.component.html'\n})\nexport class AdminRelationTypesModalComponent implements OnInit, OnDestroy {\n openModal$: Observable<boolean>;\n nameAlreadyExists$?: Observable<boolean>;\n selectedRelationType$: Observable<RelationType | undefined>;\n relationTypesNames$: Observable<string[]>;\n\n selectedRelationType?: RelationType;\n relationTypeForm: UntypedFormGroup;\n sub = new Subscription();\n nameAlreadyExists = false;\n isSubmitted = false;\n\n private overlayRef?: OverlayRef;\n @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n\n constructor(\n private store: Store<AdminRelationTypesModalComponent>,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private formBuilder: UntypedFormBuilder\n ) {\n this.openModal$ = this.store.select(RelationTypesSelectors.openModal);\n this.relationTypesNames$ = this.store\n .select(RelationTypesSelectors.relationsTypes)\n .pipe(map((links) => links.map((l) => l.name.toLowerCase())));\n this.selectedRelationType$ = this.store.select(RelationTypesSelectors.selectedRelationType);\n\n this.relationTypeForm = this.formBuilder.group({\n id: [uuid()],\n name: ['', [Validators.required, Validators.maxLength(30)]]\n });\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.openModal$.subscribe((open) => {\n if (open) {\n this.showModal();\n } else {\n this.closeModal();\n }\n })\n );\n\n this.nameAlreadyExists$ = combineLatest([\n this.relationTypeForm.get('name')?.valueChanges as Observable<string>,\n this.relationTypesNames$\n ]).pipe(map(([value, lNames]) => lNames.includes(value.toLowerCase())));\n\n this.sub.add(this.nameAlreadyExists$.subscribe((value) => (this.nameAlreadyExists = value)));\n\n this.sub.add(\n this.selectedRelationType$.subscribe((rt) => {\n this.selectedRelationType = rt;\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n showModal() {\n if (this.selectedRelationType) {\n this.relationTypeForm.patchValue({\n id: this.selectedRelationType.id,\n name: this.selectedRelationType.name\n });\n } else {\n this.relationTypeForm.patchValue({\n id: uuid(),\n name: ''\n });\n }\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['o-modal-wrapper'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe((_) => this.closeModal());\n this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n }\n\n closeModal() {\n this.overlayRef?.dispose();\n this.store.dispatch(RelationTypesActions.closeModal());\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n }\n\n addRelationType() {\n this.isSubmitted = true;\n if (this.relationTypeForm.valid && !this.nameAlreadyExists) {\n this.store.dispatch(\n RelationTypesActions.saveRelationType({\n id: this.relationTypeForm.value.id,\n name: this.relationTypeForm.value.name\n })\n );\n this.closeModal();\n }\n }\n}\n","<ng-template #template>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2\n class=\"a-h2\"\n id=\"dialog_title\"\n [innerHTML]=\"(selectedRelationType ? '@pry.admin.relationTypes.edit' : '@pry.admin.relationTypes.add') | i18n\"\n >\n {{ '@pry.toolbox.rename' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeModal()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <form [formGroup]=\"relationTypeForm\" (ngSubmit)=\"addRelationType()\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"name\"></label>\n <input type=\"text\" class=\"a-form-field\" id=\"name\" formControlName=\"name\" required />\n @if (isSubmitted && (relationTypeForm.get('name')?.invalid || nameAlreadyExists)) {\n <label\n id=\"name-error\"\n for=\"name\"\n class=\"a-label a-label--help -error\"\n >\n @if (nameAlreadyExists) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (relationTypeForm.get('name')?.hasError('required')) {\n <span>\n {{ '@pry.admin.required' | i18n }}\n </span>\n }\n @if (relationTypeForm.get('name')?.hasError('maxlength')) {\n <span>\n {{ '@pry.admin.maxLength' | i18n: { len: '30' } }}\n </span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">\n {{ '@pry.context.cancel' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"(selectedRelationType ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n </div>\n</ng-template>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { RelationType, RelationTypesActions, RelationTypesSelectors } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\n\n@Component({\n selector: 'pry-admin-relation-types',\n templateUrl: './admin-relation-types.component.html'\n})\nexport class AdminRelationTypesComponent {\n relationTypes: Observable<RelationType[]>;\n selectedRelationType$: Observable<RelationType | undefined>;\n\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n constructor(private store: Store<AdminRelationTypesComponent>) {\n this.store.dispatch(RelationTypesActions.load({}));\n this.store.dispatch(RelationTypesActions.unSelectRelationType());\n this.relationTypes = this.store.select(RelationTypesSelectors.relationsTypes);\n this.selectedRelationType$ = this.store.select(RelationTypesSelectors.selectedRelationType);\n\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: RelationTypesActions.openModal(),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'relation_types',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n selectlink(link: any) {\n this.store.dispatch(RelationTypesActions.selectRelationType({ id: link.id }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminRelationTypesSelectComponent' }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.relationTypes.list' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.relationTypes.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.relationTypes.name' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.relationTypes.nbLink' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (relationType of relationTypes | async | prySortData: sortActive : sortDirection; track relationType) {\n <tr\n (click)=\"selectlink(relationType)\"\n [class.is-selected]=\"(selectedRelationType$ | async)?.id === relationType.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-rt-' + relationType.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedRelationType$ | async)?.id === relationType.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-rt-' + relationType.id\"\n >\n <span class=\"u-visually-hidden\">{{ relationType.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ relationType.name }}</td>\n <td>{{ relationType.nbLink }}</td>\n </tr>\n }\n </tbody>\n </table>\n\n <pry-admin-relation-types-modal></pry-admin-relation-types-modal>\n</div>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { UserInfo } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { AdminUserActions } from './store/admin-user.action';\nimport { AdminUserSelectors } from './store/admin-user.selector';\n\n@Component({\n selector: 'pry-admin-user',\n templateUrl: './admin-user.component.html'\n})\nexport class AdminUserComponent {\n users$: Observable<UserInfo[]>;\n selectedUser$: Observable<UserInfo | undefined>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n constructor(private store: Store<AdminUserComponent>, private router: Router, private route: ActivatedRoute) {\n this.store.dispatch(AdminUserActions.unselectUser());\n this.store.dispatch(AdminUserActions.loadUsers());\n this.users$ = this.store.select(AdminUserSelectors.users);\n this.selectedUser$ = this.store.select(AdminUserSelectors.selectedUser);\n\n this.store.dispatch(AdminActions.mainActions({ actions: [] }));\n }\n\n selectUser(user: UserInfo) {\n this.store.dispatch(AdminUserActions.selectUser({ userId: user.id }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminUserSelectComponent' }));\n }\n}\n","<h1 class=\"a-h1\">{{ '@pry.admin.userInfo.list' | i18n }}</h1>\n<table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.userInfo.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.userInfo.name' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.userInfo.familyName' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.userInfo.email' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (user of users$ | async | prySortData: sortActive : sortDirection; track user) {\n <tr\n (click)=\"selectUser(user)\"\n [class.is-selected]=\"(selectedUser$ | async)?.id === user.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-user-' + user.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedUser$ | async)?.id === user.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-user-' + user.id\"\n >\n <span class=\"u-visually-hidden\">{{ user.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ user.name }}</td>\n <td>{{ user.familyName }}</td>\n <td>{{ user.email }}</td>\n </tr>\n }\n </tbody>\n</table>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { PRY_ACCESS_GUARD } from '@provoly/dashboard';\nimport { AdminAbacRulesEditComponent } from './components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component';\nimport { AdminAbacRulesNewComponent } from './components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component';\nimport { AdminAbacRulesViewComponent } from './components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component';\nimport { AdminAbacRulesComponent } from './components/admin-abac-rules/admin-abac-rules.component';\nimport { AdminClassesCustomizeComponent } from './components/admin-classes/admin-classes-customize/admin-classes-customize.component';\nimport { AdminClassesEditComponent } from './components/admin-classes/admin-classes-edit/admin-classes-edit.component';\nimport { AdminClassesNewComponent } from './components/admin-classes/admin-classes-new/admin-classes-new.component';\nimport { AdminAttributesEditComponent } from './components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component';\nimport { AdminAttributesNewComponent } from './components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component';\nimport { AdminClassesViewComponent } from './components/admin-classes/admin-classes-view/admin-classes-view.component';\nimport { AdminClassesComponent } from './components/admin-classes/admin-classes.component';\nimport { AdminDatasetComponent } from './components/admin-dataset/admin-dataset.component';\nimport { AdminEditDatasetComponent } from './components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component';\nimport { AdminNewDatasetComponent } from './components/admin-dataset/admin-new-dataset/admin-new-dataset.component';\nimport { AdminEnvironmentNewComponent } from './components/admin-environment/admin-environment-new/admin-environment-new.component';\nimport { AdminEnvironmentUpdateComponent } from './components/admin-environment/admin-environment-update/admin-environment-update.component';\nimport { AdminEnvironmentComponent } from './components/admin-environment/admin-environment.component';\nimport { AdminFieldsEditComponent } from './components/admin-fields/admin-fields-edit/admin-fields-edit.component';\nimport { AdminFieldsNewComponent } from './components/admin-fields/admin-fields-new/admin-fields-new.component';\nimport { AdminFieldsComponent } from './components/admin-fields/admin-fields.component';\nimport { AdminLayoutComponent } from './components/admin-layout/admin-layout.component';\nimport { AdminLinksNewComponent } from './components/admin-links/admin-links-new/admin-links-new.component';\nimport { AdminLinksComponent } from './components/admin-links/admin-links.component';\nimport { AdminEditMetadataRulesComponent } from './components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component';\nimport { AdminMetadataRulesComponent } from './components/admin-metadata-rules/admin-metadata-rules.component';\nimport { AdminNewMetadataRulesComponent } from './components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component';\nimport { AdminMetadataUserComponent } from './components/admin-metadata-user/admin-metadata-user.component';\nimport { AdminUserEditMetadataComponent } from './components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component';\nimport { AdminUserNewMetadataComponent } from './components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component';\nimport { AdminEditMetadataComponent } from './components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component';\nimport { AdminMetadataComponent } from './components/admin-metadata/admin-metadata.component';\nimport { AdminNewMetadataComponent } from './components/admin-metadata/admin-new-metadata/admin-new-metadata.component';\nimport { AdminPredicatesNewComponent } from './components/admin-predicates/admin-predicates-new/admin-predicates-new.component';\nimport { AdminPredicatesUpdateComponent } from './components/admin-predicates/admin-predicates-update/admin-predicates-update.component';\nimport { AdminPredicatesComponent } from './components/admin-predicates/admin-predicates.component';\nimport { AdminRelationTypesComponent } from './components/admin-relation-types/admin-relation-types.component';\nimport { AdminUserComponent } from './components/admin-user/admin-user.component';\nimport { PryAdminComponent } from './components/admin.component';\n\nexport const routes: Routes = [\n {\n path: '',\n data: {\n access: {\n module: 'admin'\n }\n },\n canActivate: [PRY_ACCESS_GUARD],\n component: AdminLayoutComponent,\n children: [\n {\n path: 'environment',\n children: [\n {\n path: '',\n component: AdminEnvironmentComponent,\n data: {\n access: {\n module: 'admin',\n page: 'environment'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminEnvironmentNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'environment',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:name',\n component: AdminEnvironmentUpdateComponent,\n data: {\n access: {\n module: 'admin',\n page: 'environment',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'user',\n children: [\n {\n path: '',\n component: AdminUserComponent,\n data: {\n access: {\n module: 'admin',\n page: 'user'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'classes',\n children: [\n {\n path: '',\n component: AdminClassesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminClassesNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: ':id',\n children: [\n {\n path: '',\n component: AdminClassesViewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminAttributesNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit',\n component: AdminClassesEditComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'customize',\n component: AdminClassesCustomizeComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: ':attrId/edit',\n component: AdminAttributesEditComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n }\n ]\n },\n {\n path: 'predicates',\n children: [\n {\n path: '',\n component: AdminPredicatesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'predicates'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminPredicatesNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'predicates',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:id',\n component: AdminPredicatesUpdateComponent,\n data: {\n access: {\n module: 'admin',\n page: 'predicates',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'fields',\n children: [\n {\n path: '',\n component: AdminFieldsComponent,\n data: {\n access: {\n module: 'admin',\n page: 'fields'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminFieldsNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'fields',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:id',\n component: AdminFieldsEditComponent,\n data: {\n access: {\n module: 'admin',\n page: 'fields',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'abac-rules',\n children: [\n {\n path: '',\n component: AdminAbacRulesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'abac_rules'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminAbacRulesNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'abac_rules',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: ':id',\n component: AdminAbacRulesViewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'abac_rules'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: ':id/edit',\n component: AdminAbacRulesEditComponent,\n data: {\n access: {\n module: 'admin',\n page: 'abac_rules',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'metadata',\n children: [\n {\n path: '',\n component: AdminMetadataComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminNewMetadataComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:uuid',\n component: AdminEditMetadataComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'metadata-user',\n children: [\n {\n path: '',\n component: AdminMetadataUserComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_user'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminUserNewMetadataComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_user',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:uuid',\n component: AdminUserEditMetadataComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_user',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'metadata-rules',\n children: [\n {\n path: '',\n component: AdminMetadataRulesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_rules'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminNewMetadataRulesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_rules',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:uuid',\n component: AdminEditMetadataRulesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_rules',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'dataset',\n children: [\n {\n path: '',\n component: AdminDatasetComponent,\n data: {\n access: {\n module: 'admin',\n page: 'dataset'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminNewDatasetComponent,\n data: {\n access: {\n module: 'admin',\n page: 'dataset',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:uuid',\n component: AdminEditDatasetComponent,\n data: {\n access: {\n module: 'admin',\n page: 'dataset',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'relation-types',\n children: [\n {\n path: '',\n component: AdminRelationTypesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'relation_types'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'links',\n children: [\n {\n path: '',\n component: AdminLinksComponent,\n data: {\n access: {\n module: 'admin',\n page: 'links'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminLinksNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'links',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: '',\n component: PryAdminComponent\n },\n {\n path: '**',\n redirectTo: '',\n pathMatch: 'full'\n }\n ]\n },\n {\n path: '**',\n redirectTo: '',\n pathMatch: 'full'\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AdminRoutingModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Associations,\n Attribute,\n Category,\n Class,\n ConfigSelectors,\n Environment,\n IMetadata,\n Link,\n LinkDetails,\n MetadataRules,\n MetadataRulesCreate,\n Predicate,\n UserInfo\n} from '@provoly/dashboard';\nimport { mergeMap, Observable } from 'rxjs';\nimport { AbacRule } from '../components/admin-abac-rules/store/abac-rules.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdminService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n getPredicates(): Observable<Predicate[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Predicate[]>(`${url}/predicates`)));\n }\n\n savePredicate(predicate: Predicate): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(`${url}/predicates`, predicate)));\n }\n\n getPredicate(id: string): Observable<Predicate> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Predicate>(`${url}/predicates/id/${id}`)));\n }\n\n getUserMetadata(): Observable<any> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<any>(`${url}/users/metadata`)));\n }\n\n getUserMetadataDef(id: string): Observable<IMetadata> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<IMetadata>(`${url}/users/metadata/${id}`)));\n }\n\n postUserMetadata(metadata: IMetadata): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(`${url}/users/metadata`, metadata)));\n }\n\n getEnvironments(): Observable<Environment[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Environment[]>(`${url}/abac/context`)));\n }\n\n saveEnvironment(env: Environment): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.put<void>(`${url}/abac/context`, env)));\n }\n\n getEnvironment(name: string): Observable<Environment> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Environment>(`${url}/abac/context/${name}`)));\n }\n\n deleteEnvironment(name: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete<void>(`${url}/abac/context/${name}`)));\n }\n\n getAbacRules(): Observable<AbacRule[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<AbacRule[]>(`${url}/abac/rules`)));\n }\n\n getAbacRule(id: string): Observable<AbacRule> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<AbacRule>(`${url}/abac/rules/id/${id}`)));\n }\n\n saveAbacRule(rule: AbacRule): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(`${url}/abac/rules`, rule)));\n }\n\n getClassAssociations(id: string): Observable<Associations> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Associations>(`${url}/model/class/${id}/associations`)));\n }\n\n getDatasetAssociations(id: string): Observable<Associations> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Associations>(`${url}/datasets/${id}/associations`)));\n }\n\n getFieldAssociations(id: string): Observable<Associations> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Associations>(`${url}/model/fields/${id}/associations`)));\n }\n\n getAttributeAssociations(id: string): Observable<Associations> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Associations>(`${url}/model/attribute/${id}/associations`)));\n }\n\n getClass(id: string): Observable<Class> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Class>(`${url}/model/class/id/${id}`)));\n }\n\n saveClass(clazz: Class): Observable<void> {\n const clazzToSave = {\n ...clazz,\n attributes: [...clazz.attributes.map((attr) => ({ ...attr, field: attr.field.id }))]\n };\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(encodeURI(`${url}/model/class`), clazzToSave)));\n }\n\n saveAttributeForClass(classId: string, attribute: Attribute): Observable<void> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.put<void>(encodeURI(`${url}/model/class/id/${classId}/attribute`), {\n ...attribute,\n field: attribute.field.id\n })\n )\n );\n }\n\n deleteClass(id: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete<void>(encodeURI(`${url}/model/class/id/${id}`))));\n }\n\n deleteAttributeForClass(classId: string, attrId: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(\n mergeMap((url) =>\n this.httpClient.delete<void>(encodeURI(`${url}/model/class/id/${classId}/attribute/id/${attrId}`))\n )\n );\n }\n\n saveCategory(category: Category): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.put<void>(encodeURI(`${url}/model/categories`), category)));\n }\n\n getUsers(): Observable<UserInfo[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<UserInfo[]>(`${url}/users`)));\n }\n\n getLinks(): Observable<LinkDetails[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<LinkDetails[]>(`${url}/links`)));\n }\n\n saveLink(link: Link): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(encodeURI(`${url}/links`), link)));\n }\n\n addMetadataRules(metadataRules: MetadataRulesCreate): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(encodeURI(`${url}/meta-provisioning`), metadataRules)));\n }\n\n getMetadataRulesList(): Observable<MetadataRules[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<MetadataRules[]>(`${url}/meta-provisioning`)));\n }\n\n getMetadataRules(id: string): Observable<MetadataRules> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<MetadataRules>(`${url}/meta-provisioning/id/${id}`)));\n }\n\n deleteMetadataRules(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete<MetadataRules>(`${url}/meta-provisioning/id/${id}`)));\n }\n\n getStorageOptions() {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<string[]>(`${url}/model/storages`)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { catchError, map, mergeMap, switchMap, withLatestFrom } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { AbacRulesActions } from './abac-rules.actions';\nimport { AbacRulesSelectors } from './abac-rules.selectors';\nimport { AbacRulesService } from './abac-rules.service';\n\n@Injectable()\nexport class AbacRulesEffects {\n loadAbacRules$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.loadAbacRules),\n mergeMap((action) =>\n this.service.getAbacRules().pipe(\n map((datas) => AbacRulesActions.loadAbacRulesSuccess({ datas })),\n catchError((error) => [AbacRulesActions.loadAbacRulesFailure({ error: error })])\n )\n )\n )\n );\n\n cancelAbacRuleEdition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.cancelAbacRuleEdition),\n map((action) => AdminActions.routeTo({ path: action.redirect }))\n )\n );\n\n initEditAbacRule$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.initEditAbacRule),\n switchMap((action) => {\n const abacRuleAction$ = AbacRulesActions.updateEditAbacRule({ rule: action.rule });\n const initialEditAbacConditions = this.abacRulesService.initializeCondition();\n const abacRuleConditionsAction$ = AbacRulesActions.initEditAbacRuleConditions({\n condition: {\n masterId: initialEditAbacConditions.id,\n ids: [initialEditAbacConditions.id],\n entities: {\n [initialEditAbacConditions.id]: initialEditAbacConditions\n }\n }\n });\n return [abacRuleAction$, abacRuleConditionsAction$];\n })\n )\n );\n\n createEditAbacRuleMetadataCondition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.createEditAbacRuleMetadataCondition),\n map((action) => {\n const newMetadataCondition = this.abacRulesService.getMetadataCondition(action.metadataId, action.parentId);\n return AbacRulesActions.addEditAbacRuleConditions({ condition: newMetadataCondition });\n })\n )\n );\n\n createEditAbacRuleAttributeCondition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.createEditAbacRuleAttributeCondition),\n map((action) => {\n const newAttributeCondition = this.abacRulesService.getAttributeCondition(\n action.attributeId,\n action.classId,\n action.parentId\n );\n return AbacRulesActions.addEditAbacRuleConditions({ condition: newAttributeCondition });\n })\n )\n );\n\n createEditAbacRuleNestedCondition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.createEditAbacRuleNestedCondition),\n map((action) => {\n const newCondition = this.abacRulesService.initializeCondition(action.parentId);\n return AbacRulesActions.addEditAbacRuleConditions({ condition: newCondition });\n })\n )\n );\n\n addEditAbacRuleConditionsMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.addEditAbacRuleConditions),\n map((action) => {\n return AbacRulesActions.addEditAbacRuleConditionsToParent({\n conditionId: action.condition.id,\n parentId: action.condition.parentId\n });\n })\n )\n );\n\n removeEditAbacRuleConditionFromComposed$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.removeEditAbacRuleConditionFromComposed),\n map((action) => {\n return AbacRulesActions.removeEditAbacRuleLeafCondition({\n conditionId: action.childrenId\n });\n })\n )\n );\n\n saveEditAbacRule$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.saveEditAbacRule),\n withLatestFrom(\n this.store.select(AbacRulesSelectors.editAbacRule),\n this.store.select(AbacRulesSelectors.editAbacRuleConditions)\n ),\n mergeMap(([action, rule, conditions]) => {\n const payload = this.abacRulesService.buildPayloadForAbacRule(rule!, conditions);\n return this.service.saveAbacRule(payload).pipe(\n map(() => AbacRulesActions.saveAbacRuleSuccess({ redirect: action.redirect })),\n catchError((error) => [AbacRulesActions.saveAbacRuleFailure({ error: error })])\n );\n })\n )\n );\n\n saveAbacRuleSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.saveAbacRuleSuccess),\n mergeMap((action) => [AbacRulesActions.resetEditAbacRule(), AdminActions.routeTo({ path: action.redirect })])\n )\n );\n\n fetchAbacRule$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.fetchAbacRule),\n mergeMap((action) =>\n this.service.getAbacRule(action.id).pipe(\n map((rule) => AbacRulesActions.fetchAbacRuleSuccess({ rule })),\n catchError((error) => [AbacRulesActions.fetchAbacRuleFailure({ error: error })])\n )\n )\n )\n );\n\n fetchAbacRuleSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.fetchAbacRuleSuccess),\n switchMap((action) => {\n const editRule = this.abacRulesService.mapAbacRuleToEditAbacRule(action.rule);\n const abacRuleAction$ = AbacRulesActions.updateEditAbacRule({ rule: editRule.rule });\n const abacRuleConditionsAction$ = AbacRulesActions.initEditAbacRuleConditions({\n condition: editRule.conditions\n });\n return [abacRuleAction$, abacRuleConditionsAction$];\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private store: Store<any>,\n private abacRulesService: AbacRulesService\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport {\n CategoryActions,\n ClassActions,\n PryDialogConfirmComponent,\n PryDialogConfirmData,\n PryDialogService\n} from '@provoly/dashboard';\nimport { catchError, map, mergeMap, tap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { AdminClassActions } from './admin-class.actions';\n\n@Injectable()\nexport class AdminClassEffects {\n updateToolbox$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.updateToolbox),\n mergeMap((action) => {\n return [ClassActions.load({ force: true }), AdminActions.selectComponentType({ componentType: null })];\n })\n )\n );\n\n saveClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveClass),\n mergeMap((action) => {\n if (action.class.attributes.length === 0) {\n const data: PryDialogConfirmData = {\n title: '@pry.admin.infoModalTitle',\n message: '@pry.admin.classes.createClassModalMessage',\n actions: [{ id: 0, label: '@pry.admin.closeModale' }]\n };\n this.pryDialog.open(PryDialogConfirmComponent, { data });\n return [];\n }\n\n return this.adminService.saveClass(action.class).pipe(\n map(() => AdminClassActions.saveClassSuccess({ route: action.route })),\n catchError((error) => [AdminClassActions.saveClassFailure({ error: error })])\n );\n })\n )\n );\n\n saveInterClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveInterClass),\n mergeMap((action) => {\n return [AdminActions.routeTo({ path: action.route }), ClassActions.load({ force: true })];\n })\n )\n );\n\n saveClassSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveClassSuccess),\n mergeMap((action) => {\n return [AdminActions.routeTo({ path: action.route }), ClassActions.load({ force: true })];\n })\n )\n );\n\n saveAttributeForClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveAttributeForClass),\n mergeMap((action) =>\n this.adminService.saveAttributeForClass(action.classId, action.attribute).pipe(\n map(() => AdminClassActions.saveAttributeForClassSuccess({ route: action.route })),\n catchError((error) => [AdminClassActions.saveAttributeForClassFailure({ error: error })])\n )\n )\n )\n );\n\n saveAttributeForClassSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveAttributeForClassSuccess),\n mergeMap((action) => {\n return [AdminActions.routeTo({ path: action.route }), ClassActions.load({ force: true })];\n })\n )\n );\n\n deleteClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.deleteClass),\n mergeMap((action) =>\n this.adminService.deleteClass(action.id).pipe(\n map(() => AdminClassActions.deleteClassSuccess({ route: action.route })),\n catchError((error) => [AdminClassActions.deleteClassFailure({ error: error })])\n )\n )\n )\n );\n\n deleteClassSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.deleteClassSuccess),\n mergeMap((action) => {\n return [\n AdminClassActions.updateToolbox(),\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: action.route }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n }),\n ClassActions.load({ force: true })\n ];\n })\n )\n );\n\n deleteAttributeForClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.deleteAttributeForClass),\n mergeMap((action) =>\n this.adminService.deleteAttributeForClass(action.classId, action.attrId).pipe(\n map(() =>\n AdminClassActions.deleteAttributeForClassSuccess({\n classId: action.classId,\n backPath: action.backPath,\n addAttrPath: action.addAttrPath\n })\n ),\n catchError((error) => [AdminClassActions.deleteAttributeForClassFailure({ error: error })])\n )\n )\n )\n );\n\n deleteAttributeForClassSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.deleteAttributeForClassSuccess),\n mergeMap((action) => {\n return [\n AdminClassActions.updateToolbox(),\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: action.backPath }),\n label: 'back',\n icon: 'arrow_back'\n },\n {\n action: AdminActions.routeTo({ path: action.addAttrPath }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n }),\n ClassActions.load({ force: true })\n ];\n })\n )\n );\n\n saveCategory$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveCategory),\n mergeMap((action) =>\n this.adminService.saveCategory(action.category).pipe(\n map(() => AdminClassActions.saveCategorySuccess()),\n catchError((error) => [AdminClassActions.saveCategoryFailure({ error: error })])\n )\n )\n )\n );\n\n saveCategorySuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveCategorySuccess),\n map((action) => {\n return CategoryActions.load({ force: true });\n })\n )\n );\n\n back$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.back),\n map((action) => {\n return AdminActions.routeTo({ path: action.path });\n })\n )\n );\n\n confirmClassDeletion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(AdminClassActions.confirmClassDeletion),\n tap((action) => {\n const data: PryDialogConfirmData = {\n title: '@pry.admin.classes.deleteClassConfirmMessage',\n actions: [\n {\n id: 0,\n label: '@pry.admin.validate',\n actions: [AdminClassActions.deleteClass({ id: action.id, route: action.path })]\n },\n { id: 1, label: '@pry.admin.cancel' }\n ]\n };\n this.pryDialog.open(PryDialogConfirmComponent, { data });\n })\n ),\n { dispatch: false }\n );\n\n confirmAttributeDeletion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(AdminClassActions.confirmAttributeDeletion),\n tap((action) => {\n const data: PryDialogConfirmData = {\n title: '@pry.admin.deleteAttributeConfirmMessage',\n actions: [\n {\n id: 0,\n label: '@pry.admin.validate',\n actions: [\n AdminClassActions.deleteAttributeForClass({\n classId: action.classId,\n attrId: action.attrId,\n backPath: action.backPath,\n addAttrPath: action.addAttrPath\n })\n ]\n },\n {\n id: 1,\n label: '@pry.admin.cancel'\n }\n ]\n };\n this.pryDialog.open(PryDialogConfirmComponent, { data });\n })\n ),\n { dispatch: false }\n );\n\n getStorageOptions = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.getStorageOptions),\n mergeMap(() => {\n return this.adminService.getStorageOptions().pipe(\n map((storageOptions) => AdminClassActions.getStorageOptionsSuccess({ storageOptions })),\n catchError((error) => [AdminClassActions.getStorageOptionsFailure({ error: error })])\n );\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private adminService: AdminService,\n private pryDialog: PryDialogService,\n private service: AdminService\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { EnvironmentActions } from './environment.actions';\n\n@Injectable()\nexport class EnvironmentEffects {\n loadEnvironments$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.loadEnvironments),\n mergeMap((action) =>\n this.service.getEnvironments().pipe(\n map((datas) => EnvironmentActions.loadEnvironmentsSuccess({ datas })),\n catchError((error) => [EnvironmentActions.loadEnvironmentsFailure({ error })])\n )\n )\n )\n );\n\n saveEnvironment$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.saveEnvironment),\n mergeMap((action) =>\n this.service.saveEnvironment(action.env).pipe(\n map(() => EnvironmentActions.saveEnvironmentSuccess({ route: action.route })),\n catchError((error) => [EnvironmentActions.saveEnvironmentFailure({ error })])\n )\n )\n )\n );\n\n saveEnvironmentSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.saveEnvironmentSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n selectEnvironment$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.selectEnvironment),\n mergeMap((action) =>\n this.service.getEnvironment(action.name).pipe(\n map((data) => EnvironmentActions.selectEnvironmentSuccess({ data })),\n catchError((error) => [EnvironmentActions.selectEnvironmentFailure({ error })])\n )\n )\n )\n );\n\n deleteEnvironment$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.deleteEnvironment),\n mergeMap((action) =>\n this.service.deleteEnvironment(action.name).pipe(\n map(() => EnvironmentActions.deleteEnvironmentSuccess({ route: action.route, addRoute: action.addRoute })),\n catchError((error) => [EnvironmentActions.deleteEnvironmentFailure({ error })])\n )\n )\n )\n );\n\n deleteEnvironmentSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.deleteEnvironmentSuccess),\n mergeMap((action) => {\n return [\n EnvironmentActions.loadEnvironments(),\n AdminActions.selectComponentType({ componentType: null }),\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: action.addRoute }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'environment',\n actionAccess: 'write'\n }\n ]\n })\n ];\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private router: Router\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport {\n FieldActions,\n FieldService,\n PryDialogConfirmComponent,\n PryDialogConfirmData,\n PryDialogService\n} from '@provoly/dashboard';\nimport { catchError, map, mergeMap, tap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { FieldsActions } from './fields.actions';\n\n@Injectable()\nexport class FieldsEffects {\n updateToolbox$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.updateToolbox),\n mergeMap((action) => {\n return [FieldActions.load({ force: true }), AdminActions.selectComponentType({ componentType: null })];\n })\n )\n );\n\n saveField$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.saveField),\n mergeMap((action) =>\n this.fieldService.saveField(action.field).pipe(\n map(() => FieldsActions.saveFieldSuccess({ route: action.route })),\n catchError((error) => [FieldsActions.failure({ error: error })])\n )\n )\n )\n );\n\n saveFieldSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.saveFieldSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n updateField$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.updateField),\n mergeMap((action) =>\n this.fieldService.updateField(action.field).pipe(\n map(() => FieldsActions.updateFieldSuccess({ route: action.route })),\n catchError((error) => [FieldsActions.failure({ error: error })])\n )\n )\n )\n );\n\n updateFieldSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.updateFieldSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n confirmFieldDeletion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(FieldsActions.confirmFieldDeletion),\n tap((action) => {\n const data: PryDialogConfirmData = {\n title: '@pry.admin.fields.confirmFieldDeletion',\n actions: [\n {\n id: 0,\n label: '@pry.admin.validate',\n actions: [FieldsActions.deleteField({ id: action.id, route: action.path })]\n },\n {\n id: 1,\n label: '@pry.admin.cancel',\n color: 'secondary'\n }\n ]\n };\n this.pryDialog.open(PryDialogConfirmComponent, { data });\n })\n ),\n { dispatch: false }\n );\n\n deleteField$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.deleteField),\n mergeMap((action) =>\n this.fieldService.deleteField(action.id).pipe(\n map(() => FieldsActions.deleteFieldSuccess()),\n catchError((error) => [FieldsActions.failure({ error: error })])\n )\n )\n )\n );\n\n deleteFieldSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.deleteFieldSuccess),\n map((action) => {\n return FieldActions.load({ force: true });\n })\n )\n );\n\n closePanelOnDeleteFieldSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.deleteFieldSuccess),\n map((action) => {\n return AdminActions.togglePanel({ panelOpen: false });\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private fieldService: FieldService,\n private pryDialog: PryDialogService\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { LinksActions } from './links.actions';\n\n@Injectable()\nexport class LinksEffects {\n loadLinks$ = createEffect(() =>\n this.actions$.pipe(\n ofType(LinksActions.loadLinks),\n mergeMap((action) =>\n this.service.getLinks().pipe(\n map((datas) => LinksActions.loadLinksSuccess({ datas })),\n catchError((error) => [LinksActions.loadLinksFailure({ error })])\n )\n )\n )\n );\n\n saveLink$ = createEffect(() =>\n this.actions$.pipe(\n ofType(LinksActions.saveLink),\n mergeMap((action) =>\n this.service.saveLink(action.link).pipe(\n map((data) => LinksActions.saveLinkSuccess({ route: action.route })),\n catchError((error) => [LinksActions.saveLinkFailure({ error })])\n )\n )\n )\n );\n\n saveLinkSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(LinksActions.saveLinkSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private router: Router\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { MetadataRules, MetadataRulesCreate } from '@provoly/dashboard';\nimport { catchError, switchMap } from 'rxjs';\nimport { map, mergeMap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { AdminMetadataRulesActions } from './metadata-rules.actions';\n\n@Injectable()\nexport class AdminMetadataRulesEffects {\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private router: Router\n ) {}\n\n getMetadataRules$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataRulesActions.load),\n switchMap(() => this.service.getMetadataRulesList()),\n map((list: MetadataRules[]) => AdminMetadataRulesActions.loaded({ list })),\n catchError((error: any) => [AdminMetadataRulesActions.failure({ error })])\n )\n );\n\n postMetadataRules$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataRulesActions.post),\n switchMap((props: { metadata: MetadataRulesCreate }) => this.service.addMetadataRules(props.metadata)),\n map(() => {\n AdminMetadataRulesActions.load();\n AdminMetadataRulesActions.unselectMetadata();\n const path = this.router.createUrlTree(['admin/metadata-rules']);\n return AdminActions.routeTo({ path: path.toString(), params: undefined });\n }),\n catchError((error: any) => [AdminMetadataRulesActions.failure({ error })])\n )\n );\n\n deleteMetadataRules$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataRulesActions.delete),\n mergeMap((action) =>\n this.service.deleteMetadataRules(action.name).pipe(\n mergeMap(() => {\n return [\n AdminMetadataRulesActions.load(),\n AdminActions.selectComponentType({ componentType: null }),\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: action.addRoute }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n ];\n }),\n catchError((error) => [AdminMetadataRulesActions.failure({ error })])\n )\n )\n )\n );\n\n openNewMetadataRules$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataRulesActions.openNewMetadataRules),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { AdminMetadataUserActions } from './admin-metadata-user.action';\n\n@Injectable()\nexport class AdminMetadataUserEffects {\n goToDetailsView$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.goToDetailsViewMetadata),\n mergeMap((action) =>\n this.adminService.getUserMetadataDef(action.id).pipe(\n map((metadata) => AdminMetadataUserActions.goToDetailsViewMetadataSuccess({ metadata })),\n catchError((error) => [AdminMetadataUserActions.goToDetailsViewMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n switchToEditView$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.goToEditMetadata),\n mergeMap((action) =>\n this.adminService.getUserMetadataDef(action.id).pipe(\n map((metadata) => AdminMetadataUserActions.goToEditMetadataSuccess({ metadata, route: action.route })),\n catchError((error) => [AdminMetadataUserActions.goToEditMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n goToEditViewSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.goToEditMetadataSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n createMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.createMetadata),\n mergeMap((action) =>\n this.adminService.postUserMetadata(action.metadata).pipe(\n map(() => AdminMetadataUserActions.createMetadataSuccess({ metadata: action.metadata })),\n catchError((error) => [AdminMetadataUserActions.createMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n createMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.createMetadataSuccess),\n map((action) => {\n return MetadataActions.loadUserProfile();\n })\n )\n );\n\n updateMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.updateMetadata),\n mergeMap((action) =>\n this.adminService.postUserMetadata(action.metadata).pipe(\n map(() => AdminMetadataUserActions.updateMetadataSuccess({ metadata: action.metadata })),\n catchError((error) => [AdminMetadataUserActions.updateMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n updateMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.updateMetadataSuccess),\n map((action) => {\n return MetadataActions.loadUserProfile();\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private adminService: AdminService,\n private store: Store<any>,\n private router: Router\n ) {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { PryI18nModule, PryIconModule, PryModalModule, PrySortModule } from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { PryListMetadataComponent } from './pry-list-metadata.component';\n\n@NgModule({\n declarations: [PryListMetadataComponent],\n exports: [PryListMetadataComponent],\n imports: [CommonModule, PrySortModule, PryIconModule, PryModalModule, FormsModule, PryCheckboxModule, PryI18nModule]\n})\nexport class PryListMetadataModule {}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { PredicatesActions } from './predicates.actions';\n\n@Injectable()\nexport class PredicatesEffects {\n loadPredicates$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PredicatesActions.loadPredicates),\n mergeMap((action) =>\n this.service.getPredicates().pipe(\n map((datas) => PredicatesActions.loadPredicatesSuccess({ datas })),\n catchError((error) => [PredicatesActions.loadPredicatesFailure({ error })])\n )\n )\n )\n );\n\n savePredicate$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PredicatesActions.savePredicate),\n mergeMap((action) =>\n this.service.savePredicate(action.predicate).pipe(\n map(() => PredicatesActions.savePredicateSuccess({ route: action.route })),\n catchError((error) => [PredicatesActions.savePredicateFailure({ error })])\n )\n )\n )\n );\n\n savePredicateSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PredicatesActions.savePredicateSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n selectPredicate$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PredicatesActions.selectPredicate),\n mergeMap((action) =>\n this.service.getPredicate(action.id).pipe(\n map((data) => PredicatesActions.selectPredicateSuccess({ data })),\n catchError((error) => [PredicatesActions.selectPredicateFailure({ error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private router: Router\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminService } from '../../../store/admin.service';\nimport { AdminUserActions } from './admin-user.action';\n\n@Injectable()\nexport class AdminUserEffects {\n loadUsers$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminUserActions.loadUsers),\n mergeMap((_) =>\n this.adminService.getUsers().pipe(\n map((users) => AdminUserActions.loadUsersSuccess({ users })),\n catchError((error) => [AdminUserActions.loadUsersFailure({ error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private adminService: AdminService\n ) {}\n}\n","export const enTranslations = {\n '@pry': {\n admin: {\n title: 'Administration',\n titleIndication: 'Close Administration menu ',\n infoModalTitle: 'Information',\n closeModale: 'Close',\n edit: 'Edit',\n rename: 'Rename',\n delete: 'Delete',\n add: 'New',\n validate: 'Validate',\n addClass: 'Validate creation',\n addAttribute: 'Add attribute',\n create: 'Create',\n upload: 'Add a picture',\n cancel: 'Cancel',\n back: 'Back',\n next: 'Next',\n properties: 'Properties',\n details: 'Details',\n activity: 'Activity',\n required: 'This field is required',\n exists: 'This name already exists',\n minLength: 'The minimum number of characters: {{len}}',\n maxLength: 'Number of characters allowed: {{len}}',\n noWhitespace: \"The value can't start or end with a blank space\",\n rule: 'Rule n°{{id}}',\n defaultRule: 'Default Rule (applies only if no other rules are verified)',\n displayModeImage: 'Image display mode',\n size: 'Image size',\n share: 'Share',\n deleteAttributeConfirmMessage:\n 'This attribute will no longer be visible for the associated data. Are you sure you want to delete this?',\n invalid: 'Invalid value',\n attributes: {\n unknownField: 'Unknown field',\n unknownCategory: 'Unknown category',\n noCategory: 'No category'\n },\n position: {\n FULL: 'Full icon',\n TOP_LEFT: 'Top left',\n TOP_RIGHT: 'Top Right',\n BOTTOM_LEFT: 'Bottom left',\n BOTTOM_RIGHT: 'Bottom right'\n },\n customize: {\n title: 'Customize',\n template: 'Tooltip (Map & Relations)',\n update: 'Update tooltip',\n advanced: 'Advanced mode',\n name: 'Business model',\n technicalId: 'Technical Id',\n type: 'Choose which kind of tooltip to use',\n simplified: 'Choose which attributes to display',\n exemple: '{{expr}} value',\n table: 'Table default attributes',\n tile: 'Tile default attributes',\n tileHint: 'Only between 1 and {{max}} attributes can be displayed in a tile',\n tableAttrs: 'Attributes in a table by default',\n tileAttrs: 'Attributes displayed in a tile',\n noTableAttrs: 'Other attributes',\n noTileAttrs: 'Attributes not displayed',\n updateTable: 'Update default table attributes',\n updateTile: 'Update tile attributes',\n updateIcons: 'Update symbols rules'\n },\n varType: {\n int: 'Integer',\n double: 'Double',\n string: 'Text',\n uuid: 'Uuid',\n date: 'Date',\n list: 'Value list'\n },\n menus: {\n environment: 'Execution contexts',\n user: 'Users',\n 'metadata-user': 'User profile',\n 'abac-rules': 'ABAC Rules',\n 'metadata-rules': 'Rules metadata',\n dataset: 'Datasets',\n classes: 'Classes',\n predicates: 'Predicates',\n metadata: 'Metadata',\n fields: 'Fields',\n 'relation-types': 'Relation types',\n links: 'Links between attributes',\n model: 'Data model',\n access: 'Data access'\n },\n predicates: {\n list: 'Predicates',\n add: 'Create new predicate',\n edit: 'Edit un predicate',\n info: \"Predicate's information\",\n num: 'Id.',\n name: 'Name',\n value: 'Trigger conditional expression',\n validEdit: 'Validation modification',\n validEditMessage: 'This predicates is used in {{used}} rules. Really update predicate ?'\n },\n metadata: {\n title: 'Metadata',\n add: 'Create new metadata',\n edit: 'Modify metadata',\n details: 'Metadata details',\n detailsUser: 'User profile detail',\n id: 'ID',\n label: 'Name',\n type: 'Type',\n description: 'Description',\n invalid: 'Field is required',\n listLabel: 'Value name',\n addValue: 'Add new value',\n removeValue: 'Remove value',\n system: 'System metadata'\n },\n 'metadata-rules': {\n title: 'Metadata Rules',\n label: 'Name',\n 'is-same-name': 'The name of the rule is already taken for another rule, please use another one',\n 'is-same-rules': 'The same rule has already been configured and saved, you can use it',\n 'metadata-item': {\n name: 'Target metadata',\n description: 'Target metadata description',\n type: 'Metadata type target'\n },\n 'metadata-user': {\n name: 'Source user profile',\n description: 'Description of source user profile',\n type: 'Type of source user profile'\n },\n edit: {\n title: 'Modify metadata rule'\n },\n add: {\n title: 'Create new metadata rule'\n }\n },\n dataset: {\n delete:\n 'All versions and associated data will be deleted. Restitutions and presentations using this dataset will no longer display the corresponding data. Do you confirm the deletion?',\n title: 'Dataset',\n datasetDetails: 'Dataset details',\n details: 'Details',\n id: 'Id',\n name: 'Name',\n oClass: 'Business model',\n type: 'Type',\n 'is-same-name': 'The name of the dataset is already taken, please use another one',\n add: {\n title: 'Create a new dataset'\n },\n edit: {\n title: 'Update dataset'\n },\n OPEN: 'Open',\n CLOSED: 'Closed',\n MODIFIABLE: 'Modifiable',\n conflict: 'Careful, the following dashboards are shared to groups which can no longer access this datasource:',\n entities: {\n dashboard: 'Dashboard'\n },\n addTag: 'Add a new tag'\n },\n 'abac-rules': {\n delete: 'Delete',\n metadataUser: 'Users profile',\n title: {\n list: 'Abac Rules',\n add: 'Create new abac rule',\n view: \"Abac rule's information\",\n edit: 'Abac rule edition'\n },\n form: {\n id: 'ID',\n name: 'Name',\n description: 'Description',\n status: 'Status',\n statusActive: 'Active',\n statusInactive: 'Inactive',\n predicate: 'Predicate',\n type: 'Type',\n typeMetadata: 'Metadata',\n typeAttribute: 'Attribute',\n typeSelected: \"You can't change type with current conditions\",\n addMetadata: 'Add metadata condition',\n addAttribute: 'Add attribute condition',\n addGroup: 'Add group condition',\n cancel: 'CANCEL',\n validate: 'VALIDATE'\n }\n },\n user: {\n title: 'User profile',\n add: 'Create new user profile',\n label: 'Name',\n type: 'Type',\n invalid: 'Field is required',\n edit: 'Edit user profile'\n },\n environment: {\n list: 'Execution contexts',\n add: 'Create new execution context',\n edit: 'Edit execution context',\n info: \"Execution context's information\",\n formatInt: 'Value must be an integer',\n formatDouble: \"Value must be an integer, separator must be '.'\",\n formatName: 'The only special characters allowed are: [ - _ ] ',\n name: 'Name',\n type: 'Type',\n value: 'Variable value'\n },\n classes: {\n list: 'Classes',\n name: 'Name',\n title: 'Classe {{business model}}',\n image: 'Image',\n formatName: 'The only characters allowed are: [ lowercase, - _ ] ',\n model: 'Model',\n description: 'Description',\n lines: 'Lines',\n add: 'Create new business model',\n edit: 'Modify business model',\n rename: 'Rename business model',\n addAttr: 'Attribute',\n infoAttr: '{{business model}} business model > Attributes',\n info: 'business model information',\n rules: 'Symbol definition rules',\n condition: 'Used if condition verified',\n attrName: 'Attribute to check',\n value: 'Comparison value',\n operation: 'Comparison operation',\n operations: {\n EQUALS: 'is equal',\n GREATER: 'is greater',\n GREATER_OR_EQUAL: 'is greater or equal',\n LOWER: 'is lower',\n LOWER_OR_EQUAL: 'is lower or equal',\n CONTAINS: 'contains as text'\n },\n createClassModalMessage:\n 'Creating a business model without attributes is impossible. Add an attribute before creating the business model, with \"Add attribute\" button.',\n createClassConfirmMessage: 'Confirm business model creation',\n deleteClassConfirmMessage: 'Confirm deleting the selected business model',\n linkedObjects: 'Linked objects',\n usedElsewhere: \"Used by other users' objects\",\n associations: 'Associations',\n type: 'Type',\n attributes: {\n add: 'business model Add attribute',\n edit: 'Edit attribute',\n name: 'Attribute label',\n technicalName: 'Technical name',\n info: 'Attribute information',\n description: 'Description',\n field: 'Field',\n dfield: 'Field',\n category: 'Category',\n multiValued: 'Multi valued'\n }\n },\n fields: {\n add: 'Add new field',\n info: 'Field information',\n list: 'Fields',\n edit: 'Edit field',\n name: 'Name',\n description: 'description',\n type: 'Technical type',\n attributes: 'Attribute presence',\n attributesTab: 'Attributes',\n attributeName: 'Attribute name',\n className: 'Class',\n confirmFieldDeletion: 'Confirm deleting the selected field',\n fieldType: {\n integer: 'Integer',\n long: 'Long number',\n decimal: 'Double number',\n string: 'Text',\n keyword: 'Keyword',\n instant: 'date',\n raw: 'Raw',\n Point: 'Point',\n MultiPoint: 'Multi-points',\n LineString: 'Line',\n MultiLineString: 'Multi-lines',\n Polygon: 'Polygon',\n MultiPolygon: 'Multi-polygons',\n information: {\n integer: 'Allows you to store integer numeric data less than 2^32',\n long: 'Allows you to store integer numeric data that can exceed 2^32',\n decimal: 'Allows you to store numeric data with decimal places',\n string:\n 'Allows you to store data in alphanumeric format. This data is not indexed: it is possible to search on it but no aggregation',\n keyword:\n 'Allows you to store data in alphanumeric format. This data is indexed: it is possible to search on it as well as aggregations.',\n instant: 'Allows you to store a date',\n raw: 'allows you to store image or file type data',\n Point: 'Allows you to store geographic coordinates of an object represented by a point (geo-json format)',\n MultiPoint:\n 'Allows you to store geographic coordinates of an object composed of several unconnected points (geo-json format)',\n LineString:\n 'Allows you to store geographic coordinates of an object represented as a line (geo-json format)',\n MultiLineString:\n 'Allows you to store geographic coordinates of an object represented with several unconnected lines (longitude and latitude geo-json format)',\n Polygon:\n 'Allows you to store geographic coordinates of an object represented by a polygon (geo-json format)',\n MultiPolygon:\n 'Allows you to store geographic coordinates of an object represented by several polygons nested or not (geo-json format)'\n }\n },\n rawMethods: {\n http: 'From external url',\n upload: 'Upload from my computer'\n },\n formatOptions: {\n title: 'Formatting options',\n decimalPrecision: 'Decimal precision',\n noDecimalPrecision: 'No decimal precision provided',\n localeFormat: 'Localized format',\n unit: 'Unit',\n noUnit: 'No unit provided',\n dateFormat: 'Date format',\n noDateFormat: 'No date format provided',\n dateFormatOptions: {\n DATETIME: 'Date and time',\n DATE: 'Date',\n MONTH_YEAR: 'Month and year',\n DAY_MONTH: 'Day and month',\n YEAR: 'Year',\n MONTH: 'Month',\n DAY: 'Day'\n }\n }\n },\n userInfo: {\n list: 'Users',\n info: 'User information',\n profile: 'Profile',\n addMetadata: 'Add',\n editMetadata: 'Edit metadata',\n name: 'Given name',\n familyName: 'Family name',\n email: 'Email adress',\n metadata: 'Metadata',\n roles: ' Roles'\n },\n relationTypes: {\n list: 'Relations types',\n info: 'Relation type information',\n add: 'Add relation type',\n edit: 'Edit relation type',\n name: 'Name',\n nbRelation: 'Number of type relation',\n nbLink: 'Number of links that use this relation type',\n dateModification: 'Modification date',\n deletable: 'Can be deleted',\n deleteModalMessage: 'This relation type can be deleted because used.'\n },\n links: {\n list: 'Links between attributes',\n add: 'Create a link between attributes',\n classSource: 'Source business model',\n attributeSource: 'Source attribute',\n classDestination: 'Destination business model',\n attributeDestination: 'Destination attribute',\n relationType: 'Relation type',\n selectRelationType: 'Select relation type'\n },\n association: {\n ABAC: 'ABAC Rule',\n LINK: 'Relation',\n NAMED_QUERY: 'Named query',\n WIDGET: 'Widget',\n DATASET: 'Dataset',\n OCLASS: 'Data model',\n DASHBOARD: 'Dashboard',\n FIELD: 'Data type'\n },\n storage: {\n label: 'Base de stockage',\n description: {\n POSTGIS:\n 'Recommended for storage of complex geographical data or for coordinate systems different from WGS 84. Recommended for storing classes with low estimated data volume.',\n ELASTIC:\n 'Recommended in case of high data volume expected for the class. If you want to store geographical data in this class, simple forms have to be used and the reference coordinate system must be WGS 84. This storage system is horizontally scalable.'\n },\n options: {\n POSTGIS: 'PostGIS',\n ELASTIC: 'ElasticSearch'\n }\n },\n shared: {\n noCategories: 'No categories available',\n categoryModal: {\n dataset: {\n select: 'Select tag',\n searchOrCreate: 'Search for existing tag OR create a new one',\n name: 'Tag',\n selectIt: 'Select tag',\n create: 'Create tag',\n add: 'does not exist. <br>You can create it here. <br>It will be automatically selected and added to the tag list.'\n },\n attribute: {\n select: 'Select category',\n searchOrCreate: 'Search for existing category OR create a new one',\n name: 'Category',\n selectIt: 'Select category',\n create: 'Create category',\n add: 'does not exist. <br>You can create it here. <br>It will be automatically selected and added to the category list.'\n }\n }\n }\n },\n tooltip: {\n default: 'Default tooltip',\n attribute: 'Attributes tooltip',\n cluster: 'Cluster tooltip (graphs)',\n link: 'Link tooltip (graphs)',\n none: 'No tooltip'\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n admin: {\n title: 'Administration',\n titleIndication: 'Fermer le menu Administration',\n infoModalTitle: 'Information',\n closeModale: 'Fermer',\n edit: 'Modifier',\n rename: 'Renommer',\n delete: 'Supprimer',\n add: 'Nouveau',\n validate: 'Valider',\n addClass: 'Valider la création',\n addAttribute: 'Ajouter un attribut',\n create: 'Créer',\n upload: 'Ajouter une image',\n share: 'Partager',\n cancel: 'Annuler',\n back: 'Retour',\n next: 'Suivant',\n properties: 'Propriétés',\n details: 'Détails',\n activity: 'Activité',\n required: 'Le champs est requis',\n exists: 'Ce nom est déjà utilisé',\n minLength: 'Nombre minimal de caractères : {{len}}',\n maxLength: 'Nombre de caractères autorisé : {{len}}',\n noWhitespace: 'La valeur ne peut pas commencer ou finir par un espace.',\n rule: 'Règle n°{{id}}',\n defaultRule: \"Règle par défaut (ne s'applique que si aucune autre règle n'est validée)\",\n displayModeImage: \"Mode d'affichage de l'image\",\n size: \"Taille de l'image\",\n deleteAttributeConfirmMessage:\n 'Cet attribut ne sera plus visible pour les données le possédant. Confirmez-vous la suppression ?',\n invalid: 'Valeur invalide',\n attributes: {\n unknownField: 'Type métier inconnu',\n unknownCategory: 'Catégorie inconnue',\n noCategory: 'Pas de catégorie'\n },\n position: {\n FULL: 'Icone pleine',\n TOP_LEFT: 'En haut à gauche',\n TOP_RIGHT: 'En haut à droite',\n BOTTOM_LEFT: 'En bas à gauche',\n BOTTOM_RIGHT: 'En bas à droite'\n },\n customize: {\n title: 'Personnaliser',\n template: 'Tooltip (Carte & Graphe)',\n update: 'Mettre à jour le tooltip',\n advanced: 'Mode avancé',\n name: 'Modèle métier',\n technicalId: 'Id technique',\n type: 'Choisissez le type de tooltip à utiliser',\n simplified: 'Choisissez les attributs à afficher',\n exemple: 'valeur de {{expr}}',\n table: 'Attributs par défaut (Table)',\n tile: 'Attributs affichés sur la tuile',\n tileHint: 'Seulement entre 1 et {{max}} attributs peuvent être affichés dans une tuile',\n tableAttrs: 'Attributs dans la table par défaut',\n tileAttrs: 'Attributs présentés dans les tuiles',\n noTableAttrs: 'Autres attributs',\n noTileAttrs: 'Attributs non affichés',\n updateTable: \"Mettre à jour les attributs par défaut d'une table\",\n updateTile: 'Mettre à jour les attributs des tuiles',\n updateIcons: 'Mettre à jour les règles de symboles'\n },\n varType: {\n int: 'Nombre entier',\n double: 'Nombre décimal',\n string: 'Texte',\n uuid: 'Identifiant uuid',\n date: 'Date',\n list: 'Liste de valeurs'\n },\n menus: {\n environment: \"Contextes d'exécution\",\n user: 'Utilisateurs',\n 'metadata-user': 'Profil utilisateur',\n 'abac-rules': 'Règles ABAC',\n 'metadata-rules': 'Règles Métadonnées',\n dataset: 'Jeux de données',\n classes: 'Modèles de données',\n predicates: 'Prédicats',\n metadata: 'Métadonnées',\n fields: 'Types métier',\n 'relation-types': 'Types de relation',\n links: 'Lien entre attributs',\n model: 'Modèle métier',\n access: 'Accès aux données'\n },\n predicates: {\n list: 'Prédicats',\n add: 'Créer un nouveau prédicat',\n edit: 'Modifier un prédicat',\n info: 'Détails du prédicat',\n num: 'Id.',\n name: 'Nom',\n value: 'Expression conditionnelle de déclenchement',\n validEdit: 'Information',\n validEditMessage: 'Ce prédicat est utilisé dans {{used}} règles. Voulez-vous vraiment le modifier ?'\n },\n metadata: {\n title: 'Metadonnées',\n add: 'Créer une metadonnée',\n edit: 'Modifier une metadonnée',\n details: 'Détails de la metadonnée',\n detailsUser: 'Détails du profil utilisateur',\n id: 'ID',\n label: 'Nom',\n type: 'Type',\n description: 'Description',\n invalid: 'Le champs est requis',\n listLabel: 'Nom de la valeur',\n addValue: 'Ajouter une nouvelle valeur',\n removeValue: 'Supprimer cette valeur',\n system: 'Métadonnée système'\n },\n 'metadata-rules': {\n title: 'Règles Metadonnées',\n label: 'Nom',\n 'is-same-name': 'Le nom de la règle est déjà pris pour une autre règle, veuillez en utiliser un autre',\n 'is-same-rules': \"La même règle a déjà été configurée et enregistrée, vous pouvez l'utiliser\",\n 'metadata-item': {\n name: 'Metadonnées cible',\n description: 'Description de la metadonnée cible',\n type: 'Type de la metadonnée cible'\n },\n 'metadata-user': {\n name: 'Profil utilisateur source',\n description: 'Description du profil utilisateur source',\n type: 'Type du profil utilisateur source'\n },\n edit: {\n title: 'Modifier une règle de metadonnées'\n },\n add: {\n title: 'Créer une nouvelle règle de metadonnées'\n }\n },\n dataset: {\n delete:\n \"L'ensemble des versions et des données associées seront supprimées. Les restitutions et présentations utilisant ce jeu de données n'afficheront plus les données correspondantes. Confirmez-vous la suppression ?\",\n title: 'Jeux de données',\n details: 'Détails',\n datasetDetails: 'Détails du jeu de données',\n id: 'Identifiant',\n name: 'Nom',\n oClass: 'Modèle métier',\n type: 'Type',\n 'is-same-name': 'Le nom du jeu de données est déjà pris, veuillez en utiliser un autre',\n add: {\n title: 'Créer un jeu de données'\n },\n edit: {\n title: 'Modifier un jeu de données'\n },\n OPEN: 'Ouvert',\n CLOSED: 'Fermé',\n MODIFIABLE: 'Modifiable',\n success: 'Modification effectuée avec succès',\n conflict:\n \"Attention, les tableaux de bord suivants sont partagés à des groupes qui n'auront plus accès aux données :\",\n entities: {\n dashboard: 'Tableaux de bord'\n },\n addTag: 'Ajouter un nouveau tag'\n },\n 'abac-rules': {\n delete: 'Supprimer',\n metadataUser: 'Profil utilisateur',\n title: {\n list: 'Règles Abac',\n add: 'Créer une règle abac',\n view: \"Détails d'une règle abac\",\n edit: 'Modifier une règle abac'\n },\n form: {\n id: 'Numéro',\n name: 'Nom',\n description: 'Description',\n status: 'Statut',\n statusActive: 'Actif',\n statusInactive: 'Inactif',\n predicate: 'Prédicat de déclenchement',\n type: 'Type',\n typeMetadata: 'Metadonnée',\n typeAttribute: 'Attribut',\n typeSelected: 'Vous ne pouvez pas changer le type avec les conditions existantes',\n addMetadata: 'Ajouter une condition sur une metadonnée',\n addAttribute: 'Ajouter une condition sur un attribut',\n toggleAnd: 'ET',\n toggleOr: 'OU',\n addGroup: 'Ajouter un sous-groupe'\n }\n },\n user: {\n title: 'Profil utilisateur',\n add: 'Créer un nouveau profil utilisateur',\n label: 'Nom',\n type: 'Type',\n invalid: 'Le champ est requis',\n edit: 'Modifier un profil utilisateur'\n },\n environment: {\n list: \"Contextes d'exécution\",\n add: \"Créer un nouveau contexte d'exécution\",\n edit: \"Modifier un contexte d'exécution\",\n info: \"Détails du contexte d'exécution\",\n formatInt: 'La valeur doit être un entier.',\n formatDouble: \"La valeur doit être un entier, le séparateur autorisé est un '.'\",\n formatName: 'Caractères speciaux autorisés: [ -, _ ] ',\n name: 'Nom',\n type: 'Type',\n value: 'Valeur de la variable'\n },\n classes: {\n list: 'Modèles de données',\n name: 'Nom',\n title: 'Modèle de données {{class}}',\n image: 'Image',\n formatName: 'Caractères autorisés: [ minuscule, -, _ ]',\n model: 'Modèle',\n description: 'Description',\n lines: 'Lignes',\n add: 'Créer un nouveau modèle de données',\n edit: 'Modifier le modèle de données',\n rename: 'Renommer le modèle de données',\n addAttr: 'Attribut',\n infoAttr: 'Modèle de données {{class}} > Attributs',\n info: 'Détail du modèle de données',\n rules: 'Règles de définition de symboles',\n condition: 'Actif selon une condition',\n attrName: 'Attribute à vérifier',\n value: 'Valeur de comparaison',\n operation: 'Opération de comparaison',\n operations: {\n EQUALS: 'est égal',\n GREATER: 'est plus grand',\n GREATER_OR_EQUAL: 'est plus grand ou égal',\n LOWER: 'plus petit',\n LOWER_OR_EQUAL: 'plus petit ou égal',\n CONTAINS: 'contient textuellement'\n },\n createClassModalMessage:\n 'Impossible de créer un modèle de données sans attributs. Veuillez en ajouter au moins un en cliquant sur \"Ajouter un attribut\".',\n createClassConfirmMessage: 'Voulez-vous confirmer la création du modèle de données ?',\n deleteClassConfirmMessage: 'Confirmez-vous la suppression de ce modèle métier ?',\n linkedObjects: 'Objets liés',\n usedElsewhere: \"Utilisé par des objets d'autres utilisateurs\",\n associations: 'Associations',\n type: 'Type',\n attributes: {\n add: 'Nouvel attribut',\n edit: \"Modifier l'attribut\",\n info: \"Détail de l'attribut\",\n delete: \"Supprimer l'attribut\",\n name: \"Libellé de l'attribut\",\n technicalName: 'Nom technique',\n description: 'Description',\n field: 'Type',\n category: 'Catégorie',\n multiValued: 'Multi valué'\n }\n },\n fields: {\n add: 'Créer un nouveau type métier',\n crs: 'CRS (code EPSG) :',\n info: 'Détail du type métier',\n list: 'Types métier',\n edit: 'Modifier le type métier',\n name: 'Nom',\n description: 'Description',\n type: 'Type technique',\n attributes: 'Présence dans des attributs',\n attributesTab: 'Attributs',\n attributeName: \"Nom d'attribut\",\n className: 'Classe',\n confirmFieldDeletion: 'Confirmez-vous la suppression de ce type métier ?',\n fieldType: {\n integer: 'Nombre entier',\n long: 'Nombre entier long',\n decimal: 'Nombre décimal',\n string: 'Texte brut',\n keyword: 'Texte indexé',\n instant: 'Date',\n raw: 'Donnée non structurée',\n Point: 'Point',\n MultiPoint: 'Multi-points',\n LineString: 'Ligne',\n MultiLineString: 'Multi-lignes',\n Polygon: 'Polygone',\n MultiPolygon: 'Multi-polygones',\n information: {\n integer: 'Permet de stocker des données numériques entières inférieures à 2^32',\n long: 'Permet de stocker des données numériques entières pouvant dépasser 2^32',\n decimal: 'Permet de stocker des données numériques avec des décimales',\n string:\n \"Permet de stocker des données au format alphanumérique. Ces données ne sont pas indexées : il est possible de faire une recherche dessus mais pas d'agrégation\",\n keyword:\n 'Permet de stocker des données au format alphanumérique. Ces données sont indexées : il est possible de faire une recherche dessus ainsi que des agrégations.',\n instant: 'Permet de stocker une date',\n raw: 'permet de stocker des données de type image ou fichier',\n Point:\n \"Permet de stocker des coordonnées géographiques d'un objet représenté par un point (format géojson)\",\n MultiPoint:\n \"Permet de stocker des coordonnées géographiques d'un objet composé de plusieurs points non reliés (format géojson)\",\n LineString:\n \"Permet de stocker des coordonnées géographiques d'un objet représenté comme une ligne (format géojson)\",\n MultiLineString:\n \"Permet de stocker des coordonnées géographiques d'un objet représenté avec plusieurs lignes non reliées entre elles (longitude et latitude format géojson)\",\n Polygon:\n \"Permet de stocker des coordonnées géographiques d'un objet représenté par un polygone (format géojson)\",\n MultiPolygon:\n \"Permet de stocker des coordonnées géographiques d'un objet représenté par plusieurs polygones imbriqués ou non (format géojson)\"\n }\n },\n rawMethods: {\n http: 'Depuis une url',\n upload: 'Téléverser depuis mon ordinateur'\n },\n formatOptions: {\n title: 'Options de formatage',\n decimalPrecision: 'Nombre de décimales souhaité',\n noDecimalPrecision: 'Pas de précision spécifiée',\n localeFormat: 'Formatage comme nombre',\n unit: 'Unité',\n noUnit: \"Pas d'unité spécifiée\",\n dateFormat: 'Format de date',\n noDateFormat: 'Pas de format de date specifié',\n dateFormatOptions: {\n DATETIME: 'Date et heure',\n DATE: 'Date',\n MONTH_YEAR: 'Mois et année',\n DAY_MONTH: 'Jour et mois',\n YEAR: 'Année',\n MONTH: 'Mois',\n DAY: 'Jour'\n }\n }\n },\n userInfo: {\n list: 'Utilisateurs',\n info: \"Détail de l'utilisateur\",\n profile: 'Profil',\n addMetadata: 'Ajouter',\n editMetadata: 'Modifier la métadonnée',\n name: 'Prénom',\n familyName: 'Nom de famille',\n email: 'Adresse mail',\n metadata: 'Métadonnées',\n roles: ' Rôles'\n },\n relationTypes: {\n list: 'Types de relations',\n add: 'Ajouter le type de relation',\n edit: 'Modifier le type de relation',\n info: 'Détail du type de relation',\n name: 'Nom',\n nbRelation: 'Nombre de relations de ce type',\n nbLink: 'Nombre de liens utilisant ce type de relation',\n dateModification: 'Date de modification',\n deletable: 'Peut être supprimé',\n deleteModalMessage: 'Ce type de relation ne peut être supprimé car utilisé.'\n },\n links: {\n list: 'Liens entre attributs',\n add: 'Ajouter un nouveau lien entre attributs',\n classSource: 'Modèle métier source',\n attributeSource: 'Attribut source',\n classDestination: 'Modèle métier de destination',\n attributeDestination: 'Attribut de destination',\n relationType: 'Type de relation',\n selectRelationType: 'Selectionnez un type de relation'\n },\n association: {\n ABAC: 'Règle ABAC',\n LINK: 'Relation',\n NAMED_QUERY: 'Requête nommée',\n WIDGET: 'Restitution',\n DATASET: 'Jeu de données',\n OCLASS: 'Modèle de données',\n DASHBOARD: 'Présentation',\n FIELD: 'Type métier'\n },\n storage: {\n label: 'Base de stockage',\n description: {\n POSTGIS:\n \"Ce stockage est conseillé en cas de stockage de données géographique complexes ou dans des systèmes de coordonnées différents de WGS 84. Il est recommandé de ne stocker dans cette base que des modèles métier dont la volumétrie de données estimée (en terme de nombre d'items) n'est pas trop élevée.\",\n ELASTIC:\n \"Ce stockage est conseillé en cas de forte volumétrie de données prévue pour ce modèle métier (grand nombre d'items). Si vous souhaitez stocker des données géographiques dans ce modèle, des formes simples sont conseillées et le système de coordonnées de référence utilisé doit être WGS 84. Ce système de stockage offre une scalabilité horizontale\"\n },\n options: {\n POSTGIS: 'PostGIS',\n ELASTIC: 'ElasticSearch'\n }\n },\n shared: {\n categoryModal: {\n noCategories: \"Aucune catégorie n'a été créée pour le moment\",\n dataset: {\n select: 'Sélectionner un tag',\n searchOrCreate: 'Rechercher un tag existant OU en créer un nouveau',\n name: 'Tag',\n selectIt: 'Sélectionner le tag',\n create: 'Créer le tag',\n add: \"n'existe pas encore. <br>Il est possible \\n de le créer ici. <br>Il sera automatiquement sélectionné et ajouté à la liste des tags.\"\n },\n attribute: {\n select: 'Sélectionner une catégorie',\n searchOrCreate: 'Rechercher une catégorie existante OU en créer une nouvelle',\n name: 'Catégorie',\n selectIt: 'Sélectionner la catégorie',\n create: 'Créer la catégorie',\n add: \"n'existe pas encore. <br>Il est possible \\n de la créer ici. <br>Elle sera automatiquement sélectionnée et ajoutée à la liste des catégories.\"\n }\n }\n }\n },\n tooltip: {\n default: 'Tooltip par défaut',\n attribute: 'Tooltip affichant certains attributs',\n cluster: 'Tooltip pour les clusters (graphes)',\n link: 'Tooltip pour les liens (graphes)',\n none: 'Pas de tooltip'\n }\n }\n};\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { RelationTypesActions } from '@provoly/dashboard';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminActions } from './admin.actions';\nimport { AdminService } from './admin.service';\nimport { AdminDatasetActions } from '../components/admin-dataset/store/admin-dataset.actions';\n\n@Injectable()\nexport class AdminEffects {\n routeTo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.routeTo),\n mergeMap((action) => {\n this.router.navigate([action.path], { queryParams: action.params });\n return action.path === this.router.url ? [] : [AdminActions.resetActions()];\n })\n )\n );\n\n goToNewMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.goToNewMetadata),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n deleteRelationTypeSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(RelationTypesActions.deleteRelationTypeSuccess),\n mergeMap((action) => {\n return [\n RelationTypesActions.load({ force: true }),\n AdminActions.selectComponentType({ componentType: null }),\n AdminActions.mainActions({\n actions: [\n {\n action: RelationTypesActions.openModal(),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'relation_types',\n actionAccess: 'write'\n }\n ]\n })\n ];\n })\n )\n );\n\n closePanel$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.highlightMenu),\n mergeMap((action) => {\n return [AdminActions.togglePanel({ panelOpen: false })];\n })\n )\n );\n\n openNewDataset$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.openNewDataset),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n fetchClassAssociations$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.fetchClassAssociations),\n mergeMap((action) =>\n this.service.getClassAssociations(action.id).pipe(\n map((association) => AdminActions.fetchAssociationsSuccess({ association })),\n catchError((error) => [AdminActions.fetchAssociationsFailure({ error: error })])\n )\n )\n )\n );\n\n fetchFieldAssociations$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.fetchFieldAssociations),\n mergeMap((action) =>\n this.service.getFieldAssociations(action.id).pipe(\n map((association) => AdminActions.fetchAssociationsSuccess({ association })),\n catchError((error) => [AdminActions.fetchAssociationsFailure({ error: error })])\n )\n )\n )\n );\n\n fetchDatasetAssociations$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.fetchDatasetAssociations),\n mergeMap((action) =>\n this.service.getDatasetAssociations(action.id).pipe(\n map((association) => AdminActions.fetchAssociationsSuccess({ association })),\n catchError((error) => [AdminActions.fetchAssociationsFailure({ error: error })])\n )\n )\n )\n );\n\n fetchAttributeAssociations$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.fetchAttributeAssociations),\n mergeMap((action) =>\n this.service.getAttributeAssociations(action.id).pipe(\n map((association) => AdminActions.fetchAssociationsSuccess({ association })),\n catchError((error) => [AdminActions.fetchAssociationsFailure({ error: error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private router: Router\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Category, ConfigSelectors, Dataset, MetadataValue, ShareConflict } from '@provoly/dashboard';\nimport { HttpClient } from '@angular/common/http';\nimport { mergeMap, Observable } from 'rxjs';\nimport { AdminDatasetState } from './admin-dataset.reducer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdminDatasetService {\n constructor(\n private store: Store<AdminDatasetState>,\n private httpClient: HttpClient\n ) {}\n\n addDataset(dataset: Dataset): Observable<void> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.post<void>(encodeURI(`${url}/datasets`), {\n ...dataset,\n categories: dataset.categories?.map((category) => category.id)\n })\n )\n );\n }\n\n updateDataset(dataset: Dataset): Observable<undefined | ShareConflict> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.put<undefined | ShareConflict>(encodeURI(`${url}/datasets`), {\n ...dataset,\n categories: dataset.categories?.map((category) => category.id)\n })\n )\n );\n }\n\n deleteDataset(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete<void>(`${url}/datasets/id/${id}`)));\n }\n\n getDatasetById(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Dataset>(`${url}/datasets/id/${id}`)));\n }\n\n getDatasetMetadata(id: string): Observable<MetadataValue[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<MetadataValue[]>(`${url}/datasets/id/${id}/metadata`)));\n }\n\n addDatasetMetadata(datasetId: string, metadataId: string, value: any): Observable<void> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.put<void>(encodeURI(`${url}/datasets/id/${datasetId}/metadata/id/${metadataId}`), {\n value: value\n })\n )\n );\n }\n\n deleteDatasetMetadata(datasetId: string, metadataId: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(\n mergeMap((url) =>\n this.httpClient.delete<void>(encodeURI(`${url}/datasets/id/${datasetId}/metadata/id/${metadataId}`))\n )\n );\n }\n\n addCategory(category: Category): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.put<void>(encodeURI(`${url}/datasets/categories`), { ...category })));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport {\n Dataset,\n DataSourceActions,\n PryDialogConfirmComponent,\n PryDialogConfirmData,\n PryDialogService,\n ShareConflict\n} from '@provoly/dashboard';\nimport { catchError, map, mergeMap, switchMap, tap } from 'rxjs';\nimport { AdminDatasetActions } from './admin-dataset.actions';\nimport { Action } from '@ngrx/store';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminDatasetService } from './admin-dataset.service';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\n\n@Injectable()\nexport class AdminDatasetEffects {\n constructor(\n private actions$: Actions,\n private datasetService: AdminDatasetService,\n private pryDialog: PryDialogService\n ) {}\n\n createDataset$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.create),\n switchMap((props: { dataset: Dataset; route: string }) =>\n this.datasetService\n .addDataset(props.dataset)\n .pipe(\n mergeMap(() => [\n DataSourceActions.dataset.loadDataset({ force: true }),\n AdminDatasetActions.unselectDataset(),\n AdminActions.routeTo({ path: props.route })\n ])\n )\n ),\n catchError((error: any) => [AdminDatasetActions.failure({ error })])\n )\n );\n\n confirmDatasetDeletion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.confirmDatasetDeletion),\n tap((action) => {\n const data: PryDialogConfirmData = {\n title: '@pry.admin.infoModalTitle',\n message: '@pry.admin.dataset.delete',\n actions: [\n {\n id: 0,\n label: '@pry.admin.delete',\n actions: [\n AdminDatasetActions.delete({\n name: action.name,\n route: action.route,\n addRoute: action.addRoute\n })\n ]\n },\n { id: 0, label: '@pry.admin.cancel' }\n ]\n };\n this.pryDialog.open(PryDialogConfirmComponent, { data });\n })\n ),\n { dispatch: false }\n );\n\n deleteDataset$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.delete),\n switchMap((action) =>\n this.datasetService.deleteDataset(action.name).pipe(\n mergeMap(() => [\n DataSourceActions.dataset.loadDataset({ force: true }),\n AdminDatasetActions.unselectDataset(),\n AdminDatasetActions.deleted({ addRoute: action.addRoute })\n ]),\n catchError((error) => [AdminDatasetActions.failure({ error })])\n )\n )\n )\n );\n\n getDatasetById$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.getDatasetById),\n mergeMap((action) =>\n this.datasetService.getDatasetById(action.id).pipe(\n map((data) => AdminDatasetActions.getDatasetByIdSuccess({ data })),\n catchError((error) => [AdminDatasetActions.getDatasetByIdFailure({ error })])\n )\n )\n )\n );\n\n unsetMissingGroupsOnDatasetSelection$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.selectDataset),\n mergeMap((action) => [\n AdminDatasetActions.setMissingGroups({ missingGroups: undefined }),\n DataSourceActions.dataset.listVersionsByDatasetId({ id: action.dataset.id })\n ])\n )\n );\n\n deleted$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.deleted),\n mergeMap((action) => [\n AdminActions.togglePanel({ panelOpen: false }),\n AdminActions.selectComponentType({ componentType: null }),\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: action.addRoute }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'dataset',\n actionAccess: 'write'\n }\n ]\n })\n ])\n )\n );\n\n updateDataset$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.update),\n switchMap((action) =>\n this.datasetService.updateDataset(action.dataset).pipe(\n mergeMap((conflict?: ShareConflict) => {\n let actions: Action[] = [\n AdminDatasetActions.setMissingGroups({ missingGroups: conflict?.missingGroupsByEntity }),\n DataSourceActions.dataset.loadDataset({ force: true })\n ];\n if (action.route)\n actions.push(AdminDatasetActions.unselectDataset(), AdminActions.routeTo({ path: action.route }));\n return actions;\n })\n )\n ),\n catchError((error: any) => [DataSourceActions.dataset.failure({ error })])\n )\n );\n\n addDatasetMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addDatasetMetadata),\n mergeMap((action) =>\n this.datasetService.addDatasetMetadata(action.datasetId, action.metadataId, action.value).pipe(\n map(() => MetadataActions.addDatasetMetadataSuccess({ datasetId: action.datasetId })),\n catchError((error) => [MetadataActions.addDatasetMetadataFailure({ error })])\n )\n )\n )\n );\n\n addDatasetMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addDatasetMetadataSuccess),\n mergeMap((action) => {\n return [\n AdminDatasetActions.getDatasetById({ id: action.datasetId }),\n MetadataActions.isEditable({ editable: false }),\n DataSourceActions.dataset.loadDataset({ force: true })\n ];\n })\n )\n );\n\n deleteDatasetMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteDatasetMetadata),\n mergeMap((action) =>\n this.datasetService.deleteDatasetMetadata(action.datasetId, action.metadataId).pipe(\n map(() => MetadataActions.deleteDatasetMetadataSuccess({ datasetId: action.datasetId })),\n catchError((error) => [MetadataActions.deleteDatasetMetadataFailure({ error })])\n )\n )\n )\n );\n\n deleteDatasetMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteDatasetMetadataSuccess),\n mergeMap((action) => {\n return [\n AdminDatasetActions.getDatasetById({ id: action.datasetId }),\n MetadataActions.isEditable({ editable: false }),\n DataSourceActions.dataset.loadDataset({ force: true })\n ];\n })\n )\n );\n\n addCategory$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.addCategory),\n mergeMap((action) =>\n this.datasetService.addCategory(action.category).pipe(\n map(() => DataSourceActions.dataset.getCategories()),\n catchError((error) => [AdminDatasetActions.failure({ error })])\n )\n )\n )\n );\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n PryCoreModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryModalModule,\n PryOverlayModule,\n PrySelectModule,\n PryShareModule,\n PrySortModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { PryExpandPanelModule } from '@provoly/dashboard/components/metadata-editor';\nimport { AdminRoutingModule } from './admin-routing.module';\nimport { AdminAbacRulesEditComponent } from './components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component';\nimport { AdminAbacRulesFormComponent } from './components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component';\nimport { AdminAbacRulesNewComponent } from './components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component';\nimport { AdminAbacRulesViewComponent } from './components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component';\nimport { AdminAbacRulesComponent } from './components/admin-abac-rules/admin-abac-rules.component';\nimport { AttributeConditionComponent } from './components/admin-abac-rules/components/attribute-condition/attribute-condition.component';\nimport { ComposedConditionComponent } from './components/admin-abac-rules/components/composed-condition/composed-condition.component';\nimport { MetadataConditionComponent } from './components/admin-abac-rules/components/metadata-condition/metadata-condition.component';\nimport { SelectAttributeComponent } from './components/admin-abac-rules/components/select-attribute/select-attribute.component';\nimport { SelectMetadataComponent } from './components/admin-abac-rules/components/select-metadata/select-metadata.component';\nimport { AbacRulesEffects } from './components/admin-abac-rules/store/abac-rules.effects';\nimport { abacRuleReducer, abacRulesFeatureKey } from './components/admin-abac-rules/store/abac-rules.reducer';\nimport { AdminClassesCustomizeComponent } from './components/admin-classes/admin-classes-customize/admin-classes-customize.component';\nimport { AdminClassesCustomizeSymbolComponent } from './components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component';\nimport { AdminClassesCustomizeTooltipComponent } from './components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component';\nimport { AdminClassesEditComponent } from './components/admin-classes/admin-classes-edit/admin-classes-edit.component';\nimport { AdminClassesFormComponent } from './components/admin-classes/admin-classes-form/admin-classes-form.component';\nimport { AdminClassesNewComponent } from './components/admin-classes/admin-classes-new/admin-classes-new.component';\nimport { AdminClassesSelectComponent } from './components/admin-classes/admin-classes-select/admin-classes-select.component';\nimport { AdminAttributesEditComponent } from './components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component';\nimport { AdminAttributesFormComponent } from './components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component';\nimport { AdminAttributesNewComponent } from './components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component';\nimport { AdminAttributesSelectComponent } from './components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component';\nimport { AdminClassesViewComponent } from './components/admin-classes/admin-classes-view/admin-classes-view.component';\nimport { AdminClassesComponent } from './components/admin-classes/admin-classes.component';\nimport { AdminClassEffects } from './components/admin-classes/store/admin-class.effects';\nimport { classesFeatureKey, classReducer } from './components/admin-classes/store/admin-class.reducer';\nimport { AdminDatasetComponent } from './components/admin-dataset/admin-dataset.component';\nimport { AdminEditDatasetComponent } from './components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component';\nimport { AdminNewDatasetComponent } from './components/admin-dataset/admin-new-dataset/admin-new-dataset.component';\nimport { AdminSelectDatasetComponent } from './components/admin-dataset/admin-select-dataset/admin-select-dataset.component';\nimport { AdminEnvironmentFormComponent } from './components/admin-environment/admin-environment-form/admin-environment-form.component';\nimport { AdminEnvironmentNewComponent } from './components/admin-environment/admin-environment-new/admin-environment-new.component';\nimport { AdminEnvironmentSelectComponent } from './components/admin-environment/admin-environment-select/admin-environment-select.component';\nimport { AdminEnvironmentUpdateComponent } from './components/admin-environment/admin-environment-update/admin-environment-update.component';\nimport { AdminEnvironmentComponent } from './components/admin-environment/admin-environment.component';\nimport { EnvironmentEffects } from './components/admin-environment/store/environment.effects';\nimport { environmentFeatureKey, environmentReducer } from './components/admin-environment/store/environment.reducer';\nimport { AdminFieldsEditComponent } from './components/admin-fields/admin-fields-edit/admin-fields-edit.component';\nimport { AdminFieldsFormComponent } from './components/admin-fields/admin-fields-form/admin-fields-form.component';\nimport { AdminFieldsNewComponent } from './components/admin-fields/admin-fields-new/admin-fields-new.component';\nimport { AdminFieldsSelectComponent } from './components/admin-fields/admin-fields-select/admin-fields-select.component';\nimport { AdminFieldsComponent } from './components/admin-fields/admin-fields.component';\nimport { FieldsEffects } from './components/admin-fields/store/fields.effects';\nimport { fieldReducer, fieldsFeatureKey } from './components/admin-fields/store/fields.reducer';\nimport { AdminLayoutComponent } from './components/admin-layout/admin-layout.component';\nimport { AdminLinksNewComponent } from './components/admin-links/admin-links-new/admin-links-new.component';\nimport { AdminLinksComponent } from './components/admin-links/admin-links.component';\nimport { LinksEffects } from './components/admin-links/store/links.effects';\nimport { linkReducer, linksFeatureKey } from './components/admin-links/store/links.reducer';\nimport { AdminMenuComponent } from './components/admin-menu/admin-menu.component';\nimport { AdminEditMetadataRulesComponent } from './components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component';\nimport { AdminMetadataRulesComponent } from './components/admin-metadata-rules/admin-metadata-rules.component';\nimport { AdminNewMetadataRulesComponent } from './components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component';\nimport { AdminSelectMetadataRulesComponent } from './components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component';\nimport { AdminFormMetadataRulesComponent } from './components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component';\nimport { AdminMetadataRulesEffects } from './components/admin-metadata-rules/store/metadata-rules.effects';\nimport {\n adminMetadataRulesFeatureKey,\n adminMetadataRulesReducer\n} from './components/admin-metadata-rules/store/metadata-rules.reducer';\nimport { AdminMetadataUserComponent } from './components/admin-metadata-user/admin-metadata-user.component';\nimport { AdminUserEditMetadataComponent } from './components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component';\nimport { AdminUserNewMetadataComponent } from './components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component';\nimport { AdminUserSelectMetadataComponent } from './components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component';\nimport { AdminMetadataUserEffects } from './components/admin-metadata-user/store/admin-metadata-user.effects';\nimport {\n adminMetadataUserFeatureKey,\n adminMetadataUserReducer\n} from './components/admin-metadata-user/store/admin-metadata-user.reducer';\nimport { AdminEditMetadataComponent } from './components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component';\nimport { AdminMetadataComponent } from './components/admin-metadata/admin-metadata.component';\nimport { AdminNewMetadataComponent } from './components/admin-metadata/admin-new-metadata/admin-new-metadata.component';\nimport { AdminSelectMetadataComponent } from './components/admin-metadata/admin-select-metadata/admin-select-metadata.component';\nimport { FormMetadataComponent } from './components/admin-metadata/shared/form-metadata/form-metadata.component';\nimport { PryListMetadataModule } from './components/admin-metadata/shared/list-metadata/list-metadata.module';\nimport { AdminPredicatesFormComponent } from './components/admin-predicates/admin-predicates-form/admin-predicates-form.component';\nimport { AdminPredicatesNewComponent } from './components/admin-predicates/admin-predicates-new/admin-predicates-new.component';\nimport { AdminPredicatesSelectComponent } from './components/admin-predicates/admin-predicates-select/admin-predicates-select.component';\nimport { AdminPredicatesUpdateComponent } from './components/admin-predicates/admin-predicates-update/admin-predicates-update.component';\nimport { AdminPredicatesComponent } from './components/admin-predicates/admin-predicates.component';\nimport { PredicatesEffects } from './components/admin-predicates/store/predicates.effects';\nimport { predicateReducer, predicatesFeatureKey } from './components/admin-predicates/store/predicates.reducer';\nimport { AdminRelationTypesModalComponent } from './components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component';\nimport { AdminRelationTypesSelectComponent } from './components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component';\nimport { AdminRelationTypesComponent } from './components/admin-relation-types/admin-relation-types.component';\nimport { AdminTitleComponent } from './components/admin-title/admin-title.component';\nimport { AdminUserSelectComponent } from './components/admin-user/admin-user-select/admin-user-select.component';\nimport { AdminUserComponent } from './components/admin-user/admin-user.component';\nimport { AdminUserEffects } from './components/admin-user/store/admin-user.effects';\nimport { adminUserFeatureKey, adminUserReducer } from './components/admin-user/store/admin-user.reducer';\nimport { PryAdminComponent } from './components/admin.component';\nimport { PryAssociationComponent } from './components/association/association.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { AdminEffects } from './store/admin.effects';\nimport { adminFeatureKey, adminReducer } from './store/admin.reducer';\nimport { PryDatasetModule } from '@provoly/dashboard/dataset';\nimport { datasetFeatureKey, datasetReducer } from './components/admin-dataset/store/admin-dataset.reducer';\nimport { AdminDatasetEffects } from './components/admin-dataset/store/admin-dataset.effects';\nimport { AddCategoryModalComponent } from './components/shared/add-category-modal/add-category-modal.component';\nimport { AdminFormDatasetComponent } from './components/admin-dataset/admin-form-dataset/admin-form-dataset.component';\nimport { PryPageLoaderModule } from '@provoly/dashboard/components/page-loader';\n\n@NgModule({\n providers: [DatePipe],\n declarations: [\n PryAdminComponent,\n AdminEnvironmentComponent,\n AdminMetadataUserComponent,\n AdminClassesComponent,\n AdminPredicatesComponent,\n AdminPredicatesNewComponent,\n AdminPredicatesUpdateComponent,\n AdminPredicatesSelectComponent,\n AdminAbacRulesComponent,\n AdminMenuComponent,\n AdminLayoutComponent,\n AdminTitleComponent,\n AdminLayoutComponent,\n AdminMenuComponent,\n AdminMetadataComponent,\n AdminEnvironmentNewComponent,\n AdminEnvironmentUpdateComponent,\n AdminEnvironmentFormComponent,\n AdminNewMetadataComponent,\n AdminAbacRulesEditComponent,\n AdminAbacRulesViewComponent,\n AdminAbacRulesNewComponent,\n SelectMetadataComponent,\n SelectAttributeComponent,\n AttributeConditionComponent,\n MetadataConditionComponent,\n ComposedConditionComponent,\n AdminAbacRulesFormComponent,\n AdminUserNewMetadataComponent,\n AdminEditMetadataComponent,\n AdminPredicatesFormComponent,\n AdminEnvironmentSelectComponent,\n AdminUserEditMetadataComponent,\n AdminPredicatesFormComponent,\n FormMetadataComponent,\n AdminSelectMetadataComponent,\n AdminUserSelectMetadataComponent,\n AdminFieldsComponent,\n AdminFieldsNewComponent,\n AdminUserSelectMetadataComponent,\n AdminClassesFormComponent,\n AdminClassesNewComponent,\n AdminClassesViewComponent,\n AdminAttributesNewComponent,\n AdminAttributesFormComponent,\n AdminAttributesSelectComponent,\n AdminClassesSelectComponent,\n AdminFieldsFormComponent,\n AdminFieldsSelectComponent,\n AdminClassesEditComponent,\n AdminAttributesEditComponent,\n AdminFieldsEditComponent,\n AdminUserComponent,\n AdminUserSelectComponent,\n AdminRelationTypesComponent,\n AdminRelationTypesSelectComponent,\n AdminRelationTypesModalComponent,\n AdminLinksComponent,\n AdminLinksNewComponent,\n AdminMetadataRulesComponent,\n AdminSelectMetadataRulesComponent,\n AdminNewMetadataRulesComponent,\n AdminEditMetadataRulesComponent,\n AdminFormMetadataRulesComponent,\n AdminDatasetComponent,\n AdminEditDatasetComponent,\n AdminNewDatasetComponent,\n AdminSelectDatasetComponent,\n AdminFormDatasetComponent,\n AdminClassesCustomizeComponent,\n AdminClassesCustomizeTooltipComponent,\n AdminClassesCustomizeSymbolComponent,\n PryAssociationComponent,\n AddCategoryModalComponent\n ],\n imports: [\n CommonModule,\n PryCoreModule,\n AdminRoutingModule,\n StoreModule.forFeature(adminFeatureKey, adminReducer),\n StoreModule.forFeature(predicatesFeatureKey, predicateReducer),\n StoreModule.forFeature(abacRulesFeatureKey, abacRuleReducer),\n StoreModule.forFeature(environmentFeatureKey, environmentReducer),\n StoreModule.forFeature(adminMetadataUserFeatureKey, adminMetadataUserReducer),\n StoreModule.forFeature(adminMetadataRulesFeatureKey, adminMetadataRulesReducer),\n StoreModule.forFeature(classesFeatureKey, classReducer),\n StoreModule.forFeature(fieldsFeatureKey, fieldReducer),\n StoreModule.forFeature(adminUserFeatureKey, adminUserReducer),\n StoreModule.forFeature(linksFeatureKey, linkReducer),\n StoreModule.forFeature(datasetFeatureKey, datasetReducer),\n EffectsModule.forFeature([AdminEffects]),\n EffectsModule.forFeature([PredicatesEffects]),\n EffectsModule.forFeature([EnvironmentEffects]),\n EffectsModule.forFeature([AbacRulesEffects]),\n EffectsModule.forFeature([AdminMetadataUserEffects]),\n EffectsModule.forFeature([AdminClassEffects]),\n EffectsModule.forFeature([FieldsEffects]),\n EffectsModule.forFeature([AdminUserEffects]),\n EffectsModule.forFeature([LinksEffects]),\n EffectsModule.forFeature([AdminMetadataRulesEffects]),\n EffectsModule.forFeature([AdminDatasetEffects]),\n PryIconModule,\n FormsModule,\n ReactiveFormsModule,\n PrySortModule,\n PryCheckboxModule,\n PryModalModule,\n PrySelectModule,\n PryListMetadataModule,\n PryToggleModule,\n OverlayModule,\n PryOverlayModule,\n DragDropModule,\n PryI18nModule,\n PryExpandPanelModule,\n PryDatasetModule,\n PryShareModule,\n PryPageLoaderModule\n ]\n})\nexport class PryAdminModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'admin', frTranslations);\n this.pryTranslateService.addLangObject('en', 'admin', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["feature","fromPredicates.predicatesFeatureKey","loading","fromAbacRules.abacRulesFeatureKey","i2","i3","i4","i5","i4.SelectMetadataComponent","i5.SelectAttributeComponent","i6.AttributeConditionComponent","i7.MetadataConditionComponent","i8","i5.ComposedConditionComponent","i6","i3.AdminAbacRulesFormComponent","uuidv4","i2.AbacRulesService","fromClass.classesFeatureKey","i1","i5.AdminClassesCustomizeTooltipComponent","i6.AdminClassesCustomizeSymbolComponent","i7","uuid","i3.AdminClassesFormComponent","i1.AdminClassesFormComponent","i3.AdminAttributesFormComponent","i3.AdminFormDatasetComponent","i1.AdminFormDatasetComponent","fromEnvironment.environmentFeatureKey","i1.AdminEnvironmentFormComponent","i3.AdminEnvironmentFormComponent","i3.AdminFieldsFormComponent","i1.AdminFieldsFormComponent","fromField.fieldsFeatureKey","fromAdmin.adminFeatureKey","i4.PryAssociationComponent","i6.PryAssociationComponent","i5.PryAssociationComponent","fromMetadataRules.adminMetadataRulesFeatureKey","BASE","BASEAPI","initialAdminUserState","fromAdminUser.adminMetadataUserFeatureKey","editable","fromAdminUser.adminUserFeatureKey","i5.AdminMenuComponent","i6.AdminTitleComponent","fromLinks.linksFeatureKey","i2.AdminFormMetadataRulesComponent","i1.AdminFormMetadataRulesComponent","i4.PryListMetadataComponent","i3.FormMetadataComponent","i2.FormMetadataComponent","i1.AdminPredicatesFormComponent","i3.AdminPredicatesFormComponent","i3.AdminRelationTypesModalComponent","i2.AdminService","i4.AbacRulesService","i2.AdminDatasetService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provoly-dashboard-admin.mjs","sources":["../../../../projects/provoly/dashboard/admin/store/admin.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/store/predicates.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/store/predicates.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/store/predicates.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.model.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.service.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component.html","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/admin-abac-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/store/admin-class.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/store/admin-class.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/store/admin-class.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.html","../../../../projects/provoly/dashboard/admin/components/admin.component.ts","../../../../projects/provoly/dashboard/admin/components/admin.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-new/admin-classes-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/store/admin-dataset.actions.ts","../../../../projects/provoly/dashboard/admin/components/shared/add-category-modal/add-category-modal.component.ts","../../../../projects/provoly/dashboard/admin/components/shared/add-category-modal/add-category-modal.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/store/admin-dataset.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/store/admin-dataset.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-dataset.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-dataset.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-new-dataset/admin-new-dataset.component.html","../../../../projects/provoly/dashboard/admin/components/admin-environment/store/environment.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/store/environment.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/store/environment.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-new/admin-environment-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.html","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment.component.html","../../../../projects/provoly/dashboard/admin/components/admin-fields/store/fields.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.html","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-new/admin-fields-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-fields/store/fields.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/store/fields.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields.component.html","../../../../projects/provoly/dashboard/admin/store/admin.reducer.ts","../../../../projects/provoly/dashboard/admin/store/admin.selectors.ts","../../../../projects/provoly/dashboard/admin/components/association/association.component.ts","../../../../projects/provoly/dashboard/admin/components/association/association.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.html","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/store/metadata-rules.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/store/metadata-rules.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/store/metadata-rules.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/store/admin-metadata-user.action.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/store/admin-metadata-user.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/store/admin-metadata-user.selector.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-user/store/admin-user.action.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/store/admin-user.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/store/admin-user.selector.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/admin-user-select/admin-user-select.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/admin-user-select/admin-user-select.component.html","../../../../projects/provoly/dashboard/admin/components/admin-menu/admin-menu.component.ts","../../../../projects/provoly/dashboard/lib/core/components/base-menu/base-menu.component.html","../../../../projects/provoly/dashboard/admin/components/admin-title/admin-title.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-title/admin-title.component.html","../../../../projects/provoly/dashboard/admin/components/admin-layout/admin-layout.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-layout/admin-layout.component.html","../../../../projects/provoly/dashboard/admin/components/admin-links/store/links.actions.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/store/links.reducer.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/store/links.selectors.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/admin-links-new/admin-links-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/admin-links-new/admin-links-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-links/admin-links.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/admin-links.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-metadata-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-metadata-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-metadata-user.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-metadata-user.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/admin-new-metadata/admin-new-metadata.component.html","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.html","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-new/admin-predicates-new.component.html","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.html","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/admin-predicates.component.html","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.html","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-relation-types/admin-relation-types.component.html","../../../../projects/provoly/dashboard/admin/components/admin-user/admin-user.component.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/admin-user.component.html","../../../../projects/provoly/dashboard/admin/admin-routing.module.ts","../../../../projects/provoly/dashboard/admin/store/admin.service.ts","../../../../projects/provoly/dashboard/admin/components/admin-abac-rules/store/abac-rules.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-classes/store/admin-class.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-environment/store/environment.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-fields/store/fields.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-links/store/links.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-rules/store/metadata-rules.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata-user/store/admin-metadata-user.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-metadata/shared/list-metadata/list-metadata.module.ts","../../../../projects/provoly/dashboard/admin/components/admin-predicates/store/predicates.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-user/store/admin-user.effects.ts","../../../../projects/provoly/dashboard/admin/i18n/en.translations.ts","../../../../projects/provoly/dashboard/admin/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/admin/store/admin.effects.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/store/admin-dataset.service.ts","../../../../projects/provoly/dashboard/admin/components/admin-dataset/store/admin-dataset.effects.ts","../../../../projects/provoly/dashboard/admin/admin.module.ts","../../../../projects/provoly/dashboard/admin/provoly-dashboard-admin.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { Associations, BaseToolboxAction } from '@provoly/dashboard';\n\nexport const AdminActions = {\n highlightMenu: createAction('[Admin] selecting highLight', props<{ menu: string }>()),\n toggleMenu: createAction('[Admin] Toggle menu'),\n routeTo: createAction('[Admin] route to', props<{ path: string; params?: { [p: string]: string } }>()),\n resetActions: createAction('[Admin] reset toolbox main and sub actions'),\n mainActions: createAction('[Admin] set toolbox main actions', props<{ actions: BaseToolboxAction[] }>()),\n subActions: createAction('[Admin] set toolbox sub actions', props<{ actions: BaseToolboxAction[] }>()),\n togglePanel: createAction('[Admin] Toggle panel', props<{ panelOpen: boolean }>()),\n selectComponentType: createAction(\n '[Admin] Select component Type for panel ',\n props<{ componentType: string | null }>()\n ),\n fetchClassAssociations: createAction('[Admin] Fetch Class associations', props<{ id: string }>()),\n fetchFieldAssociations: createAction('[Admin] Fetch field associations', props<{ id: string }>()),\n fetchAttributeAssociations: createAction('[Admin] Fetch Attribute associations', props<{ id: string }>()),\n fetchDatasetAssociations: createAction('[Admin] Fetch Dataset associations', props<{ id: string }>()),\n fetchAssociationsSuccess: createAction('[Admin] Fetch Associations Success', props<{ association: Associations }>()),\n fetchAssociationsFailure: createAction('[Admin] Fetch Associations failure', props<{ error: any }>())\n};\n","import { createAction, props } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\n\nexport const PredicatesActions = {\n loadPredicates: createAction('[Admin/Predicates] Load Predicates'),\n loadPredicatesSuccess: createAction(\n '[Admin/Predicates Api] Load Predicates Success',\n props<{ datas: Predicate[] }>()\n ),\n loadPredicatesFailure: createAction('[Admin/Predicates Api] Load Predicates Failure', props<{ error: any }>()),\n\n savePredicate: createAction('[Admin/Predicates] Save Predicate', props<{ predicate: Predicate; route: string }>()),\n savePredicateSuccess: createAction('[Admin/Predicates Api] Save Predicate Success', props<{ route: string }>()),\n savePredicateFailure: createAction('[Admin/Predicates Api] Save Predicate Failure', props<{ error: any }>()),\n\n selectPredicate: createAction('[Admin/Predicates] Select Predicate', props<{ id: string }>()),\n selectPredicateSuccess: createAction('[Admin/Predicates Api] Select Predicate Success', props<{ data: Predicate }>()),\n selectPredicateFailure: createAction('[Admin/Predicates Api] Select Predicate Failure', props<{ error: any }>())\n};\n","import { createAction, props } from '@ngrx/store';\nimport { AbacRule, AbacRulesConditions, ConditionType, NormalizedCondition, OperatorType } from './abac-rules.model';\n\nexport const AbacRulesActions = {\n loadAbacRules: createAction('[Admin/Abac] Load Abac rules'),\n loadAbacRulesSuccess: createAction('[Admin/Abac Api] Load Abac rule Success', props<{ datas: AbacRule[] }>()),\n loadAbacRulesFailure: createAction('[Admin/Abac Api] Load Abac rule Failure', props<{ error: any }>()),\n\n saveEditAbacRule: createAction('[Admin/Abac] build abac rules', props<{ redirect: string }>()),\n saveAbacRuleSuccess: createAction('[Admin/Abac Api] Save Abac rule Success', props<{ redirect: string }>()),\n saveAbacRuleFailure: createAction('[Admin/Abac Api] Save Abac rule Failure', props<{ error: any }>()),\n\n cancelAbacRuleEdition: createAction('[Admin/Abac Api] Cancel Abac Rule edition', props<{ redirect: string }>()),\n\n initEditAbacRule: createAction('[Admin/Abac] init edit abac rule', props<{ rule: AbacRule }>()),\n resetEditAbacRule: createAction('[Admin/Abac] reset edit abac rule'),\n updateEditAbacRuleByProperty: createAction(\n '[Admin/Abac] update edit abac rule property',\n props<{ property: keyof AbacRule; value: string }>()\n ),\n updateEditAbacRule: createAction('[Admin/Abac] update edit abac rule', props<{ rule: AbacRule }>()),\n initEditAbacRuleConditions: createAction(\n '[Admin/Abac] init edit abac rule conditions',\n props<{ condition: AbacRulesConditions }>()\n ),\n createEditAbacRuleMetadataCondition: createAction(\n '[Admin/Abac] create edit metadata condition',\n props<{ metadataId: string; parentId: string }>()\n ),\n createEditAbacRuleAttributeCondition: createAction(\n '[Admin/Abac] create edit attribute condition',\n props<{ attributeId: string; classId: string; parentId: string }>()\n ),\n createEditAbacRuleNestedCondition: createAction(\n '[Admin/Abac] create edit nested condition',\n props<{ parentId: string }>()\n ),\n addEditAbacRuleConditions: createAction(\n '[Admin/Abac] add edit condition metadata',\n props<{ condition: NormalizedCondition }>()\n ),\n addEditAbacRuleConditionsToParent: createAction(\n '[Admin/Abac] add edit condition to Parent',\n props<{ conditionId: string; parentId: string }>()\n ),\n updateEditAbacRuleConditionProperty: createAction(\n '[Admin/Abac] update condition value',\n props<{\n conditionId: string;\n property:\n | { type: 'operator'; value: OperatorType }\n | { type: 'value'; value: any }\n | { type: 'type'; value: ConditionType };\n }>()\n ),\n removeEditAbacRuleLeafCondition: createAction('[Admin/Abac] delete leaf condition', props<{ conditionId: string }>()),\n removeEditAbacRuleConditionFromComposed: createAction(\n '[Admin/Abac] remove children condition',\n props<{ conditionId: string; childrenId: string }>()\n ),\n\n fetchAbacRule: createAction('[Admin/Abac] Fetch Abac rules', props<{ id: string }>()),\n fetchAbacRuleSuccess: createAction('[Admin/Abac Api] Fetch Abac rule Success', props<{ rule: AbacRule }>()),\n fetchAbacRuleFailure: createAction('[Admin/Abac Api] Fetch Abac rule Failure', props<{ error: any }>()),\n\n loadEditAbacRule: createAction('[Admin/Abac] load edit abac rule', props<{ rule: AbacRule }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { PredicatesActions } from './predicates.actions';\n\nexport const predicatesFeatureKey = '@pry/admin/predicates';\n\nexport interface PredicateState {\n predicates: Predicate[];\n loading: boolean;\n currentPredicate?: Predicate;\n}\n\nexport const initialPredicateState: PredicateState = {\n predicates: [],\n loading: false\n};\n\nexport const predicateReducer = createReducer(\n initialPredicateState,\n on(PredicatesActions.loadPredicates, (state, action) => ({\n ...state,\n loading: true,\n currentPredicate: undefined,\n nextNum: undefined\n })),\n on(PredicatesActions.loadPredicatesSuccess, (state, action) => ({\n ...state,\n predicates: [...action.datas],\n loading: false\n })),\n on(PredicatesActions.loadPredicatesFailure, (state, action) => ({\n ...state,\n loading: false\n })),\n on(PredicatesActions.savePredicate, (state, action) => ({\n ...state,\n loading: true\n })),\n on(PredicatesActions.savePredicateSuccess, (state, action) => ({\n ...state,\n loading: false\n })),\n on(PredicatesActions.savePredicateFailure, (state, action) => ({\n ...state,\n loading: false\n })),\n\n on(PredicatesActions.selectPredicate, (state, action) => ({\n ...state,\n loading: true\n })),\n on(PredicatesActions.selectPredicateSuccess, (state, action) => ({\n ...state,\n currentPredicate: action.data,\n loading: false\n })),\n on(PredicatesActions.selectPredicateFailure, (state, action) => ({\n ...state,\n loading: false\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromPredicates from './predicates.reducer';\n\nconst feature = createFeatureSelector<fromPredicates.PredicateState>(fromPredicates.predicatesFeatureKey);\n\nconst predicates = createSelector(feature, (state) => state?.predicates);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst currentPredicate = createSelector(feature, (state) => state?.currentPredicate);\nconst currentPredicateId = createSelector(currentPredicate, (pred) => pred?.id);\n\nexport const PredicatesSelectors = {\n feature,\n predicates,\n loading,\n currentPredicate,\n currentPredicateId\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { AbacRulesActions } from './abac-rules.actions';\nimport { AbacRule, AbacRulesConditions } from './abac-rules.model';\n\nexport const abacRulesFeatureKey = '@pry/admin/abacRules';\n\nexport interface AbacRuleState {\n abacRules: AbacRule[];\n loading: boolean;\n editAbacRule: AbacRule | null;\n editAbacRuleConditions: AbacRulesConditions;\n}\n\nexport const initialAbacRuleState: AbacRuleState = {\n abacRules: [],\n loading: false,\n editAbacRule: null,\n editAbacRuleConditions: {\n masterId: null,\n ids: [],\n entities: {}\n }\n};\n\nexport const abacRuleReducer = createReducer(\n initialAbacRuleState,\n on(AbacRulesActions.loadAbacRules, (state) => ({\n ...state,\n loading: true\n })),\n on(AbacRulesActions.loadAbacRulesSuccess, (state, action) => ({\n ...state,\n abacRules: [...action.datas],\n loading: false\n })),\n on(AbacRulesActions.loadAbacRulesFailure, (state) => ({\n ...state,\n loading: false\n })),\n\n on(AbacRulesActions.saveAbacRuleSuccess, (state) => ({\n ...state,\n loading: false\n })),\n on(AbacRulesActions.saveAbacRuleFailure, (state) => ({\n ...state,\n loading: false\n })),\n\n on(AbacRulesActions.resetEditAbacRule, (state) => ({\n ...state,\n editAbacRule: null,\n editAbacRuleConditions: {\n masterId: null,\n entities: {},\n ids: []\n }\n })),\n on(AbacRulesActions.updateEditAbacRule, (state, action) => ({\n ...state,\n editAbacRule: action.rule\n })),\n on(AbacRulesActions.updateEditAbacRuleByProperty, (state, action) => ({\n ...state,\n editAbacRule: state.editAbacRule ? { ...state?.editAbacRule, [action.property]: action.value } : null\n })),\n on(AbacRulesActions.initEditAbacRuleConditions, (state, action) => ({\n ...state,\n editAbacRuleConditions: action.condition\n })),\n on(AbacRulesActions.addEditAbacRuleConditions, (state, action) => ({\n ...state,\n editAbacRuleConditions: {\n ...state.editAbacRuleConditions,\n ids: [...state.editAbacRuleConditions.ids, action.condition.id],\n entities: {\n ...state.editAbacRuleConditions.entities,\n [action.condition.id]: action.condition\n }\n }\n })),\n on(AbacRulesActions.addEditAbacRuleConditionsToParent, (state, action) => ({\n ...state,\n editAbacRuleConditions: {\n ...state.editAbacRuleConditions,\n entities: {\n ...state.editAbacRuleConditions.entities,\n [action.parentId]: {\n ...state.editAbacRuleConditions.entities[action.parentId],\n composed: [...(state.editAbacRuleConditions.entities[action.parentId].composed ?? []), action.conditionId]\n }\n }\n }\n })),\n on(AbacRulesActions.updateEditAbacRuleConditionProperty, (state, action) => ({\n ...state,\n editAbacRuleConditions: {\n ...state.editAbacRuleConditions,\n entities: {\n ...state.editAbacRuleConditions.entities,\n [action.conditionId]: {\n ...state.editAbacRuleConditions.entities[action.conditionId],\n [action.property.type]: action.property.value\n }\n }\n }\n })),\n on(AbacRulesActions.removeEditAbacRuleLeafCondition, (state, action) => {\n const ids = [...state.editAbacRuleConditions.ids.filter((id) => id !== action.conditionId)];\n const { [action.conditionId]: value, ...entities } = { ...state.editAbacRuleConditions.entities };\n return {\n ...state,\n editAbacRuleConditions: {\n ...state.editAbacRuleConditions,\n ids,\n entities\n }\n };\n }),\n on(AbacRulesActions.removeEditAbacRuleConditionFromComposed, (state, action) => {\n const composed = [\n ...(state.editAbacRuleConditions.entities[action.conditionId]?.composed?.filter(\n (id) => id !== action.childrenId\n ) ?? [])\n ];\n return {\n ...state,\n editAbacRuleConditions: {\n ...state.editAbacRuleConditions,\n entities: {\n ...state.editAbacRuleConditions.entities,\n [action.conditionId]: {\n ...state.editAbacRuleConditions.entities[action.conditionId],\n composed\n }\n }\n }\n };\n })\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { AbacRulesConditions } from './abac-rules.model';\nimport * as fromAbacRules from './abac-rules.reducer';\n\nconst feature = createFeatureSelector<fromAbacRules.AbacRuleState>(fromAbacRules.abacRulesFeatureKey);\n\nconst abacRules = createSelector(feature, (state) => state?.abacRules);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst editAbacRule = createSelector(feature, (state) => state?.editAbacRule);\nconst editAbacRuleConditions = createSelector(feature, (state) => state?.editAbacRuleConditions);\nconst editAbacRuleType = createSelector(editAbacRule, (rule) => rule?.type);\nconst editAbacRuleConditionsMasterId = createSelector(editAbacRuleConditions, (conditions) => conditions?.masterId);\nconst editAbacRuleConditionsTypeSelected = createSelector(editAbacRuleConditions, (conditions) =>\n (conditions?.ids ?? []).find((id) => ['METADATA', 'ATTRIBUTE'].includes(conditions.entities[id].type))\n);\nconst editAbacRuleConditionsFirstAttribute = createSelector(editAbacRuleConditions, (conditions) => {\n const id = (conditions?.ids ?? []).find((id) => conditions.entities[id].type === 'ATTRIBUTE');\n const attribute = id !== undefined ? conditions.entities[id].attribute : undefined;\n return attribute;\n});\n\nconst editAbacRuleConditionsById = (id: string) =>\n createSelector(editAbacRuleConditions, (conditions: AbacRulesConditions) => conditions.entities[id]);\n\nexport const AbacRulesSelectors = {\n feature,\n abacRules,\n loading,\n editAbacRule,\n editAbacRuleConditions,\n editAbacRuleType,\n editAbacRuleConditionsMasterId,\n editAbacRuleConditionsTypeSelected,\n editAbacRuleConditionsFirstAttribute,\n editAbacRuleConditionsById\n};\n","import { Component, EventEmitter, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-abac-select-metadata',\n templateUrl: './select-metadata.component.html'\n})\nexport class SelectMetadataComponent {\n metadata$: Observable<IMetadata[]>;\n\n @Output() metadataSelected = new EventEmitter<string>();\n\n constructor(private store: Store<any>) {\n this.metadata$ = this.store.select(MetadataSelectors.metadata);\n }\n\n onSelectMetadata(id: string): void {\n this.metadataSelected.emit(id);\n }\n}\n","@for (metadata of metadata$ | async; track metadata) {\n <button class=\"m-pry-overlay-item\" (click)=\"onSelectMetadata(metadata.id)\">\n {{ metadata.name }}\n </button>\n}\n","import { Component, EventEmitter, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassSelectors } from '@provoly/dashboard';\nimport { combineLatest, map, mergeMap, Observable, of, switchMap } from 'rxjs';\nimport { AbacRulesSelectors } from '../../store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-abac-select-attribute',\n templateUrl: './select-attribute.component.html'\n})\nexport class SelectAttributeComponent {\n @Output() attributeSelected = new EventEmitter<{ attribute: string; class: string }>();\n classes$: Observable<Class[]>;\n\n constructor(private store: Store<any>) {\n const classSelected$ = this.store\n .select(AbacRulesSelectors.editAbacRuleConditionsFirstAttribute)\n .pipe(switchMap((attribute) => this.store.select(ClassSelectors.classByAttributeId(attribute ?? ''))));\n this.classes$ = this.store.select(ClassSelectors.classes).pipe(\n mergeMap((classes) => combineLatest([of(classes), classSelected$])),\n map(([classes, clazz]) => (clazz ? classes.filter((c) => c.id === clazz.id) : classes))\n );\n }\n\n onSelectAttribute(classId: string, attributeId: string): void {\n this.attributeSelected.emit({ attribute: attributeId, class: classId });\n }\n}\n","@for (class of classes$ | async; track class) {\n @for (attribute of class.attributes; track attribute) {\n <button\n class=\"m-pry-overlay-item\"\n (click)=\"onSelectAttribute(class.id, attribute.id)\"\n >\n {{ class.name }} - {{ attribute.name }}\n </button>\n }\n}\n","export interface AbacRule {\n id: string;\n name: string;\n type: AbacRuleType;\n predicate: string;\n condition?: Condition;\n description: string;\n active: boolean;\n}\n\nexport type AbacRuleType = 'METADATA' | 'ATTRIBUTE';\n\nexport type ConditionType = 'METADATA' | 'ATTRIBUTE' | 'OR' | 'AND';\n\nexport interface Condition {\n type: ConditionType;\n composed?: Array<Condition>;\n attribute?: string;\n metadata?: string;\n value?: string | number;\n operator?: OperatorType;\n}\n\nexport interface NormalizedCondition {\n id: string;\n type: ConditionType;\n parentId: string;\n composed?: string[];\n attribute?: string;\n metadata?: string;\n value?: string | number;\n operator?: OperatorType;\n}\n\nexport type OperatorType =\n | 'EQUALS'\n | 'CONTAINS'\n | 'START_WITH'\n | 'END_WITH'\n | 'GREATER_THAN'\n | 'LOWER_THAN'\n | 'INNER_BOUNDS'\n | 'OUTER_BOUNDS'\n | 'NOT_EQUALS'\n | 'IN'\n | 'NOT_IN';\n\nexport interface OperatorOption {\n type: 'string' | 'number' | 'date';\n operator: OperatorType;\n translation: string;\n twoValues: boolean;\n}\n\nexport const OPERATOR_OPTIONS: OperatorOption[] = [\n { type: 'string', operator: 'CONTAINS', translation: '@pry.search.operator.contains', twoValues: false },\n { type: 'string', operator: 'START_WITH', translation: '@pry.search.operator.startWith', twoValues: false },\n { type: 'string', operator: 'END_WITH', translation: '@pry.search.operator.endWith', twoValues: false },\n { type: 'string', operator: 'EQUALS', translation: '@pry.search.operator.equalsString', twoValues: false },\n { type: 'string', operator: 'NOT_EQUALS', translation: '@pry.search.operator.notEqualsString', twoValues: false },\n { type: 'number', operator: 'EQUALS', translation: '@pry.search.operator.equalsNumber', twoValues: false },\n { type: 'number', operator: 'NOT_EQUALS', translation: '@pry.search.operator.notEqualsString', twoValues: false },\n { type: 'number', operator: 'GREATER_THAN', translation: '@pry.search.operator.greaterThanNumber', twoValues: false },\n { type: 'number', operator: 'LOWER_THAN', translation: '@pry.search.operator.lowerThanNumber', twoValues: false },\n { type: 'number', operator: 'INNER_BOUNDS', translation: '@pry.search.operator.innerBoundsNumber', twoValues: true },\n { type: 'number', operator: 'OUTER_BOUNDS', translation: '@pry.search.operator.outerBoundsNumber', twoValues: true },\n { type: 'date', operator: 'EQUALS', translation: '@pry.search.operator.equalsNumber', twoValues: false },\n { type: 'date', operator: 'NOT_EQUALS', translation: '@pry.search.operator.notEqualsNumber', twoValues: false },\n { type: 'date', operator: 'GREATER_THAN', translation: '@pry.search.operator.greaterThanDate', twoValues: false },\n { type: 'date', operator: 'LOWER_THAN', translation: '@pry.search.operator.lowerThanDate', twoValues: false },\n { type: 'date', operator: 'INNER_BOUNDS', translation: '@pry.search.operator.innerBoundsDate', twoValues: true },\n { type: 'date', operator: 'OUTER_BOUNDS', translation: '@pry.search.operator.outerBoundsDate', twoValues: true },\n { type: 'number', operator: 'IN', translation: '@pry.search.operator.in', twoValues: false },\n { type: 'number', operator: 'NOT_IN', translation: '@pry.search.operator.not_in', twoValues: false },\n { type: 'date', operator: 'IN', translation: '@pry.search.operator.in', twoValues: false },\n { type: 'date', operator: 'NOT_IN', translation: '@pry.search.operator.not_in', twoValues: false },\n { type: 'string', operator: 'IN', translation: '@pry.search.operator.in', twoValues: false },\n { type: 'string', operator: 'NOT_IN', translation: '@pry.search.operator.not_in', twoValues: false }\n];\n\nexport interface AbacRulesConditions {\n masterId: string | null;\n ids: string[];\n entities: {\n [key: string]: NormalizedCondition;\n };\n}\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Attribute, Class, ClassSelectors, Field, FieldType, IMetadata } from '@provoly/dashboard';\nimport { combineLatest, filter, map, mergeMap, Observable, of } from 'rxjs';\nimport { AbacRulesActions } from '../../store/abac-rules.actions';\nimport { NormalizedCondition, OPERATOR_OPTIONS, OperatorOption, OperatorType } from '../../store/abac-rules.model';\nimport { AbacRulesSelectors } from '../../store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-attribute-condition',\n templateUrl: './attribute-condition.component.html'\n})\nexport class AttributeConditionComponent {\n panelOpen = false;\n @Input() readonly = false;\n\n @Input()\n set id(val: string) {\n this._id = val;\n this.assignObservables();\n }\n\n private _id?: string;\n field$: Observable<Field | null> = of(null);\n attribute$: Observable<Attribute | undefined> = of(undefined);\n metadata$: Observable<IMetadata | undefined> = of(undefined);\n condition$: Observable<NormalizedCondition | null> = of(null);\n operatorOptions$: Observable<OperatorOption[]> = of([]);\n\n constructor(private store: Store<any>) {}\n\n private assignObservables(): void {\n this.condition$ = this.store.select(AbacRulesSelectors.editAbacRuleConditionsById(this._id ?? ''));\n this.attribute$ = this.condition$.pipe(\n filter((cond): cond is NormalizedCondition => cond !== null && cond !== undefined),\n mergeMap((cond) =>\n combineLatest([of(cond), this.store.select(ClassSelectors.classByAttributeId(cond.attribute ?? ''))])\n ),\n map(([cond, klass]) => {\n return (klass as Class)?.attributes.find((a) => a.id === cond.attribute);\n })\n );\n this.field$ = this.attribute$.pipe(\n filter((attr): attr is Attribute => attr !== undefined),\n map((attr) => attr.field)\n );\n\n this.operatorOptions$ = this.field$.pipe(\n filter((field): field is Field => field !== undefined),\n map((field: Field) => {\n const fieldType = field.type;\n if (fieldType === FieldType.STRING || fieldType === FieldType.KEYWORD) {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'string');\n } else if (fieldType === FieldType.INTEGER || fieldType === FieldType.DECIMAL || fieldType === FieldType.LONG) {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'number');\n } else {\n return OPERATOR_OPTIONS.filter((el) => el.type === 'date');\n }\n })\n );\n }\n\n onChangeOperator(operator: OperatorType, conditionId: string) {\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'operator', value: operator }\n })\n );\n }\n\n onChangeValue(evt: any, conditionId: string): void {\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'value', value: evt.target.value }\n })\n );\n }\n\n onOpenPanel(): void {\n this.panelOpen = true;\n }\n\n onClosePanel(): void {\n this.panelOpen = false;\n }\n\n onDeleteAttributeCondition(conditionId: string, parentId: string): void {\n this.store.dispatch(\n AbacRulesActions.removeEditAbacRuleConditionFromComposed({ conditionId: parentId, childrenId: conditionId })\n );\n }\n}\n","@if (condition$ | async; as condition) {\n @if (attribute$ | async; as attr) {\n @if (field$ | async; as field) {\n <div class=\"o-pry-attribute-condition\">\n @if (!readonly) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n (click)=\"onOpenPanel()\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.admin.abac-rules.delete' | i18n }}</span>\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayLockPosition\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n (backdropClick)=\"onClosePanel()\"\n >\n <div class=\"m-pry-overlay-panel-wrapper\">\n <div class=\"m-pry-overlay-panel\">\n <button\n class=\"pry-condition-delete\"\n (click)=\"onDeleteAttributeCondition(condition.id, condition.parentId)\"\n >\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </div>\n </div>\n </ng-template>\n </button>\n }\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"attr_name\">Name</label>\n <input id=\"attr_name\" class=\"a-form-field\" type=\"text\" [value]=\"attr.name\" readonly />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_operator\">???</label>\n <pry-select\n id=\"condition_operator\"\n [style.width.px]=\"160\"\n [items]=\"operatorOptions$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n [ngModel]=\"condition.operator\"\n (ngModelChange)=\"onChangeOperator($event, condition.id)\"\n [disabled]=\"readonly\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_value\">Name</label>\n <input\n id=\"condition_value\"\n [readonly]=\"readonly\"\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"condition.value\"\n (focusout)=\"onChangeValue($event, condition.id)\"\n />\n </div>\n </div>\n } @else {\n Loading field ...\n }\n } @else {\n Loading attribute ...\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { filter, Observable, of, switchMap } from 'rxjs';\nimport { AbacRulesActions } from '../../store/abac-rules.actions';\nimport { NormalizedCondition, OperatorType } from '../../store/abac-rules.model';\nimport { AbacRulesSelectors } from '../../store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-metadata-condition',\n templateUrl: './metadata-condition.component.html'\n})\nexport class MetadataConditionComponent {\n @Input() readonly = false;\n\n @Input()\n set id(val: string) {\n this._id = val;\n this.assignObservables();\n }\n\n private _id?: string;\n metadata$: Observable<IMetadata | undefined> = of(undefined);\n condition$: Observable<NormalizedCondition | null> = of(null);\n deleteConditionOpen = false;\n metadataUsers$: Observable<IMetadata[]>;\n metadataUserOpen = false;\n\n operators$ = of([\n { operator: 'EQUALS', translation: '@pry.search.operator.equalsString' },\n { operator: 'NOT_EQUALS', translation: '@pry.search.operator.notEqualsString' },\n { operator: 'IN', translation: '@pry.search.operator.in' },\n { operator: 'NOT_IN', translation: '@pry.search.operator.not_in' }\n ]);\n\n constructor(private store: Store<any>) {\n this.metadataUsers$ = this.store.select(MetadataSelectors.userProfile);\n }\n\n private assignObservables(): void {\n this.condition$ = this.store.select(AbacRulesSelectors.editAbacRuleConditionsById(this._id ?? ''));\n this.metadata$ = this.condition$.pipe(\n filter((cond): cond is NormalizedCondition => cond !== null && cond !== undefined),\n switchMap((cond: NormalizedCondition) =>\n this.store.select(MetadataSelectors.selectMetadataById(cond.metadata ?? ''))\n )\n );\n }\n\n onChangeOperator(operator: OperatorType, conditionId: string) {\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'operator', value: operator }\n })\n );\n }\n\n onChangeValue(evt: any, conditionId: string): void {\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'value', value: evt.target.value }\n })\n );\n }\n\n onSelectMetadataUser(conditionId: string, operator: OperatorType | undefined, metadata: IMetadata) {\n this.metadataUserOpen = false;\n const value =\n operator === 'IN' || operator === 'NOT_IN'\n ? `\\${user.metadata('${metadata.name}')}`\n : `\\${user.metadata('${metadata.name}').getFirst()}`;\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'value', value }\n })\n );\n }\n\n onDeleteMetadataCondition(conditionId: string, parentId: string): void {\n this.deleteConditionOpen = false;\n this.store.dispatch(\n AbacRulesActions.removeEditAbacRuleConditionFromComposed({ conditionId: parentId, childrenId: conditionId })\n );\n }\n}\n","@if (condition$ | async; as condition) {\n @if (metadata$ | async; as metadata) {\n <div class=\"o-pry-metadata-condition\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-pressed=\"false\"\n (click)=\"deleteConditionOpen = true\"\n [pryOverlay]=\"deleteConditionTpl\"\n [(overlayOpen)]=\"deleteConditionOpen\"\n >\n @if (!readonly) {\n <pry-icon iconSvg=\"drag_indicator\"></pry-icon>\n }\n <span class=\"u-visually-hidden\">???</span>\n </button>\n <ng-template #deleteConditionTpl>\n <button class=\"m-pry-overlay-item\" (click)=\"onDeleteMetadataCondition(condition.id, condition.parentId)\">\n {{ '@pry.admin.abac-rules.delete' | i18n }}\n </button>\n </ng-template>\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"metadata_name\">Name</label>\n <input id=\"metadata_name\" class=\"a-form-field\" type=\"text\" [value]=\"metadata.name\" readonly />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"metadata_operator\">???</label>\n <pry-select\n id=\"metadata_operator\"\n [disabled]=\"readonly\"\n [style.width.px]=\"160\"\n [items]=\"operators$ | async\"\n bindValue=\"operator\"\n bindLabel=\"translation\"\n [ngModel]=\"condition.operator\"\n (ngModelChange)=\"onChangeOperator($event, condition.id)\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label u-visually-hidden\" for=\"condition_value\">???</label>\n <input\n id=\"condition_value\"\n class=\"a-form-field\"\n [readonly]=\"readonly\"\n type=\"text\"\n [style.width.px]=\"200\"\n [value]=\"condition.value\"\n (focusout)=\"onChangeValue($event, condition.id)\"\n />\n </div>\n @if (!readonly) {\n <button\n type=\"button\"\n aria-pressed=\"false\"\n class=\"a-btn a-btn--select -size-sm\"\n [pryOverlay]=\"metadataUserTpl\"\n [(overlayOpen)]=\"metadataUserOpen\"\n (click)=\"metadataUserOpen = true\"\n >\n {{ '@pry.admin.abac-rules.metadataUser' | i18n }}\n </button>\n }\n <ng-template #metadataUserTpl>\n <div class=\"m-pry-overlay-wrapper\">\n @for (metadataUser of metadataUsers$ | async; track metadataUser) {\n <button class=\"m-pry-overlay-item\" (click)=\"onSelectMetadataUser(condition.id, condition.operator, metadataUser)\">\n {{ metadataUser.name }}\n </button>\n }\n </div>\n </ng-template>\n </div>\n } @else {\n Loading ...\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable, of } from 'rxjs';\nimport { AbacRulesActions } from '../../store/abac-rules.actions';\nimport { AbacRuleType, ConditionType, NormalizedCondition } from '../../store/abac-rules.model';\nimport { AbacRulesSelectors } from '../../store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-composed-condition',\n templateUrl: './composed-condition.component.html'\n})\nexport class ComposedConditionComponent {\n readonly AND: ConditionType = 'AND';\n readonly OR: ConditionType = 'OR';\n readonly ATTRIBUTE: ConditionType = 'ATTRIBUTE';\n readonly METADATA: ConditionType = 'METADATA';\n\n editAbacRuleType$: Observable<AbacRuleType | undefined>;\n\n @Input() set id(val: string) {\n this._id = val;\n this.condition$ = this.store.select(AbacRulesSelectors.editAbacRuleConditionsById(this._id));\n }\n\n private _id!: string;\n condition$: Observable<NormalizedCondition | null> = of(null);\n\n @Input() readonly = false;\n @Input() rootElement = false;\n\n panelOpen = false;\n\n isDisabled: boolean = false;\n\n constructor(private store: Store<any>) {\n this.editAbacRuleType$ = this.store.select(AbacRulesSelectors.editAbacRuleType);\n }\n\n onAddNewAttribute(evt: { attribute: string; class: string }, conditionId: string): void {\n this.panelOpen = false;\n this.store.dispatch(\n AbacRulesActions.createEditAbacRuleAttributeCondition({\n attributeId: evt.attribute,\n classId: evt.class,\n parentId: conditionId\n })\n );\n }\n\n onAddNewMetadata(id: string, conditionId: string): void {\n this.panelOpen = false;\n this.store.dispatch(\n AbacRulesActions.createEditAbacRuleMetadataCondition({ metadataId: id, parentId: conditionId })\n );\n }\n\n onAddNewNestedCondition(conditionId: string): void {\n this.store.dispatch(AbacRulesActions.createEditAbacRuleNestedCondition({ parentId: conditionId }));\n }\n\n onChangeConditionType(conditionType: ConditionType, conditionId: string): void {\n this.store.dispatch(\n AbacRulesActions.updateEditAbacRuleConditionProperty({\n conditionId,\n property: { type: 'type', value: conditionType }\n })\n );\n }\n}\n","@if (condition$ | async; as condition) {\n @if (condition.type === OR || condition.type === AND) {\n <div class=\"o-pry-composed-condition-wrapper\" [class.root-element]=\"rootElement\">\n <div class=\"o-pry-composed-condition\">\n <div class=\"o-pry-composed-condition__type -vertical-bar\">\n <div class=\"o-pry-composed-condition__type__content\">\n <pry-toggle\n leftword=\"ET\"\n rightword=\"OU\"\n [ngModel]=\"condition.type === AND\"\n (ngModelChange)=\"onChangeConditionType($event ? AND : OR, condition.id)\"\n [alwaysActive]=\"true\"\n [disabled]=\"readonly\"\n ></pry-toggle>\n </div>\n </div>\n <div class=\"o-pry-composed-condition__content\">\n @for (id of condition.composed; track id) {\n <pry-composed-condition [readonly]=\"readonly\" [id]=\"id\"></pry-composed-condition>\n }\n @if (!readonly) {\n @if (editAbacRuleType$ | async; as ruleType) {\n <div>\n <button\n type=\"button\"\n aria-pressed=\"false\"\n class=\"a-btn a-btn--iconcircle-text\"\n (click)=\"panelOpen = true\"\n [pryOverlay]=\"selectOverlay\"\n [(overlayOpen)]=\"panelOpen\"\n pryOverlayPosition=\"start-bottom\"\n >\n <span class=\"a-btn--iconcircle-text__icon-wrapper\">\n <pry-icon iconSvg=\"add\" [height]=\"14\" [width]=\"14\"></pry-icon>\n </span>\n <span>\n {{\n '@pry.admin.abac-rules.form.' + (ruleType === ATTRIBUTE ? 'addAttribute' : 'addMetadata') | i18n\n }}\n </span>\n </button>\n </div>\n <ng-template #selectOverlay>\n @if (ruleType === ATTRIBUTE) {\n <pry-abac-select-attribute\n (attributeSelected)=\"onAddNewAttribute($event, condition.id)\"\n ></pry-abac-select-attribute>\n } @else {\n <pry-abac-select-metadata\n (metadataSelected)=\"onAddNewMetadata($event, condition.id)\"\n ></pry-abac-select-metadata>\n }\n </ng-template>\n }\n }\n </div>\n </div>\n @if (!readonly) {\n <div class=\"o-pry-composed-condition__add-item\">\n <button\n type=\"button\"\n aria-pressed=\"false\"\n class=\"a-btn a-btn--iconcircle-text\"\n (click)=\"onAddNewNestedCondition(condition.id)\"\n >\n <span class=\"a-btn--iconcircle-text__icon-wrapper\">\n <pry-icon iconSvg=\"add\" [height]=\"14\" [width]=\"14\"></pry-icon>\n </span>\n <span>\n {{ '@pry.admin.abac-rules.form.addGroup' | i18n }}\n </span>\n </button>\n </div>\n }\n </div>\n } @else {\n @if (condition.type === METADATA) {\n <pry-metadata-condition [readonly]=\"readonly\" [id]=\"condition.id\"></pry-metadata-condition>\n }\n @if (condition.type === ATTRIBUTE) {\n <pry-attribute-condition [readonly]=\"readonly\" [id]=\"condition.id\"></pry-attribute-condition>\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { PredicatesSelectors } from '../../admin-predicates/store/predicates.selectors';\nimport { AbacRulesActions } from '../store/abac-rules.actions';\nimport { AbacRule, AbacRuleType, ConditionType } from '../store/abac-rules.model';\nimport { AbacRulesSelectors } from '../store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-admin-abac-rules-form',\n templateUrl: './admin-abac-rules-form.component.html'\n})\nexport class AdminAbacRulesFormComponent {\n readonly ATTRIBUTE: ConditionType = 'ATTRIBUTE';\n readonly METADATA: ConditionType = 'METADATA';\n @Input() readonly = false;\n @Input() edit = false;\n\n predicates$: Observable<Predicate[]>;\n editAbacRuleType$: Observable<AbacRuleType | undefined>;\n\n isSubmitted = false;\n\n editAbacRuleConditionsMasterId$: Observable<string | null>;\n typeSelected$: Observable<string | undefined>;\n editAbacRule$: Observable<AbacRule | null>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.predicates$ = this.store.select(PredicatesSelectors.predicates);\n this.editAbacRule$ = this.store.select(AbacRulesSelectors.editAbacRule);\n this.editAbacRuleType$ = this.store.select(AbacRulesSelectors.editAbacRuleType);\n this.editAbacRuleConditionsMasterId$ = this.store.select(AbacRulesSelectors.editAbacRuleConditionsMasterId);\n this.typeSelected$ = this.store.select(AbacRulesSelectors.editAbacRuleConditionsTypeSelected);\n }\n\n toPredicate(item: Predicate): Predicate {\n return item;\n }\n\n onChangeAbacRuleProperty(property: keyof AbacRule, value: string): void {\n this.store.dispatch(AbacRulesActions.updateEditAbacRuleByProperty({ property, value }));\n }\n\n onCreateAbacRule(form: NgForm): void {\n this.isSubmitted = true;\n if (form.valid) {\n this.isSubmitted = false;\n const backPath = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(AbacRulesActions.saveEditAbacRule({ redirect: backPath.toString() }));\n }\n }\n\n goBack() {\n const backPath = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(AbacRulesActions.cancelAbacRuleEdition({ redirect: backPath.toString() }));\n }\n}\n","@if (editAbacRule$ | async; as rule) {\n <form class=\"o-form\" #abacRuleForm=\"ngForm\">\n <div class=\"row\">\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"name-label\" for=\"inputName\">\n {{ '@pry.admin.abac-rules.form.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"inputName\"\n type=\"text\"\n [ngModel]=\"rule.name\"\n (ngModelChange)=\"onChangeAbacRuleProperty('name', $event)\"\n class=\"a-form-field\"\n name=\"name\"\n #name=\"ngModel\"\n maxlength=\"50\"\n required\n [readonly]=\"readonly\"\n [attr.aria-labelledby]=\"isSubmitted && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && name?.invalid\"\n />\n @if (isSubmitted && name.invalid) {\n <label\n class=\"a-label a-label--help -error\"\n id=\"name-error\"\n for=\"inputName\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n }\n </div>\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.status' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n <div class=\"m-form-radio-group\">\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleTrue\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"true\"\n />\n <label for=\"newRuleTrue\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusActive' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"newRuleFalse\"\n name=\"active\"\n [ngModel]=\"rule.active\"\n (ngModelChange)=\"!readonly && onChangeAbacRuleProperty('active', $event)\"\n [value]=\"false\"\n />\n <label for=\"newRuleFalse\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.statusInactive' | i18n }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n <div class=\"col\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abac-rules-description\">{{\n '@pry.admin.abac-rules.form.description' | i18n\n }}</label>\n <textarea\n name=\"description\"\n id=\"abac-rules-description\"\n [ngModel]=\"rule.description\"\n (ngModelChange)=\"onChangeAbacRuleProperty('description', $event)\"\n class=\"a-form-field\"\n maxlength=\"90\"\n [readonly]=\"readonly\"\n ></textarea>\n </div>\n <div class=\"m-form-label-field\">\n <label id=\"predicate-label\" for=\"predicate\" class=\"a-label\">\n {{ '@pry.admin.abac-rules.form.predicate' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"predicate\"\n [attr.aria-labelledby]=\"\n isSubmitted && abacRuleForm.form.get('predicate')?.invalid\n ? 'predicate-label predicate-error'\n : 'predicate-label'\n \"\n [disabled]=\"readonly\"\n [items]=\"predicates$ | async\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [template]=\"templateOption\"\n name=\"predicate\"\n [ngModel]=\"rule.predicate\"\n (ngModelChange)=\"onChangeAbacRuleProperty('predicate', $event)\"\n [isForm]=\"!readonly\"\n [attr.aria-invalid]=\"isSubmitted && abacRuleForm.form.get('predicate')?.invalid\"\n required\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n @if (toPredicate(item); as item) {\n <div class=\"u-display-flex -column\">\n <span>#{{ item.id }}</span>\n <span>{{ item.name }}</span>\n <span>{{ item.value }}</span>\n </div>\n }\n </ng-template>\n @if (isSubmitted && abacRuleForm.form.get('predicate')?.invalid) {\n <label\n class=\"a-label a-label--help -error\"\n id=\"predicate-error\"\n for=\"predicate\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n }\n </div>\n <fieldset class=\"m-form-radio-group-wrapper\" [disabled]=\"readonly\">\n <legend class=\"a-label\">\n <label>{{ '@pry.admin.abac-rules.form.type' | i18n }}</label> *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </legend>\n <div class=\"m-form-radio-group\">\n @if (typeSelected$ | async) {\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"METADATA\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n disabled\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n value=\"ATTRIBUTE\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n @if (!readonly) {\n <span style=\"font-size: 12px; font-style: italic\">{{\n '@pry.admin.abac-rules.form.typeSelected' | i18n\n }}</span>\n }\n } @else {\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"metadataId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', METADATA)\"\n value=\"METADATA\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"metadataId\">\n {{ '@pry.admin.abac-rules.form.typeMetadata' | i18n }}\n </label>\n </div>\n <div class=\"m-form-radio-group__item\">\n <input\n class=\"a-form-field\"\n type=\"radio\"\n id=\"attributeId\"\n name=\"type\"\n [ngModel]=\"rule.type\"\n (ngModelChange)=\"onChangeAbacRuleProperty('type', ATTRIBUTE)\"\n value=\"ATTRIBUTE\"\n [disabled]=\"readonly\"\n />\n <label class=\"a-label\" for=\"attributeId\">\n {{ '@pry.admin.abac-rules.form.typeAttribute' | i18n }}\n </label>\n </div>\n }\n </div>\n </fieldset>\n </div>\n </div>\n @if (editAbacRuleConditionsMasterId$ | async; as masterId) {\n <div class=\"row\">\n <div class=\"col\">\n <pry-composed-condition\n class=\"o-component-pry-composed-condition\"\n style=\"margin: 1rem\"\n [rootElement]=\"true\"\n [id]=\"masterId\"\n [readonly]=\"readonly\"\n ></pry-composed-condition>\n </div>\n </div>\n }\n @if (!readonly) {\n <div class=\"m-btn-group -align-center -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"onCreateAbacRule(abacRuleForm)\">\n {{ '@pry.admin.' + (edit ? 'edit' : 'create') | i18n }}\n </button>\n </div>\n }\n </form>\n }\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ClassActions, FieldActions } from '@provoly/dashboard';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { PredicatesActions } from '../../admin-predicates/store/predicates.actions';\nimport { AbacRulesActions } from '../store/abac-rules.actions';\n\n@Component({\n selector: 'pry-admin-abac-rules-edit',\n templateUrl: './admin-abac-rules-edit.component.html'\n})\nexport class AdminAbacRulesEditComponent implements OnInit, OnDestroy {\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.store.dispatch(MetadataActions.loadMetadata());\n this.store.dispatch(MetadataActions.loadUserProfile());\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n const backPath = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: backPath.toString() }),\n label: 'back',\n icon: 'arrow_back'\n }\n ]\n })\n );\n const ruleId = params['id'];\n this.store.dispatch(AbacRulesActions.fetchAbacRule({ id: ruleId }));\n });\n }\n\n ngOnDestroy(): void {\n this.store.dispatch(AbacRulesActions.resetEditAbacRule());\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.abac-rules.title.edit' | i18n }}</h1>\n <pry-admin-abac-rules-form [edit]=\"true\"></pry-admin-abac-rules-form>\n</div>\n","import { Injectable } from '@angular/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AbacRule, AbacRulesConditions, Condition, NormalizedCondition, OperatorType } from './abac-rules.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AbacRulesService {\n initializeNewAbacRule(): AbacRule {\n return {\n id: uuidv4(),\n name: '',\n type: 'METADATA',\n description: '',\n active: true\n } as AbacRule;\n }\n\n initializeCondition(parentId: string | null = null, conditionId: string | null = null): NormalizedCondition {\n const id = uuidv4();\n return {\n id: conditionId ?? id,\n parentId: parentId ?? id,\n type: 'AND'\n } as NormalizedCondition;\n }\n\n getMetadataCondition(\n metadata: string,\n parentId: string,\n operator: OperatorType = 'EQUALS',\n value: any = ''\n ): NormalizedCondition {\n const id = uuidv4();\n return {\n id,\n metadata,\n parentId,\n operator: operator,\n type: 'METADATA',\n value: value\n } as NormalizedCondition;\n }\n\n getAttributeCondition(\n attribute: string,\n classId: string,\n parentId: string,\n operator: OperatorType = 'EQUALS',\n value: any = ''\n ): NormalizedCondition {\n const id = uuidv4();\n return {\n id,\n attribute,\n parentId,\n class: classId,\n operator: operator,\n type: 'ATTRIBUTE',\n value: value\n } as NormalizedCondition;\n }\n\n buildPayloadForAbacRule(rule: AbacRule, conditions: AbacRulesConditions): AbacRule {\n const condition = this.buildConditionsForAbacRule(conditions);\n return condition ? { ...rule, condition } : { ...rule };\n }\n\n buildConditionsForAbacRule(conditions: AbacRulesConditions): Condition | null {\n if (!conditions.masterId) {\n return null;\n }\n return this.mapNormalizedConditionToCondition(conditions.entities[conditions.masterId], conditions);\n }\n\n mapNormalizedConditionToCondition(cond: NormalizedCondition, tree: AbacRulesConditions): Condition {\n return {\n type: cond.type,\n attribute: cond.attribute,\n composed: cond.composed?.map((id) => this.mapNormalizedConditionToCondition(tree.entities[id], tree)),\n metadata: cond.metadata,\n operator: cond.operator,\n value: cond.value\n };\n }\n\n mapAbacRuleToEditAbacRule(rule: AbacRule): { rule: AbacRule; conditions: AbacRulesConditions } {\n const editRule: AbacRule = {\n id: rule.id,\n active: rule.active,\n description: rule.description,\n name: rule.name,\n predicate: rule.predicate,\n type: rule.type\n };\n const masterId = uuidv4();\n const conditions = rule.condition\n ? this.createNormalizedConditions(rule.condition, masterId, masterId).conditions\n : [this.initializeCondition(masterId, masterId)];\n const editRuleCondtitions: AbacRulesConditions = {\n masterId,\n ids: conditions.map((cond) => cond.id),\n entities: conditions.reduce((acc, cond) => ({ ...acc, [cond.id]: cond }), {})\n };\n return {\n rule: editRule,\n conditions: editRuleCondtitions\n };\n }\n\n createNormalizedConditions(\n cond: Condition,\n parentId: string,\n masterId: string | null = null\n ): { id: string; conditions: NormalizedCondition[] } {\n if (cond.type === 'AND' || cond.type === 'OR') {\n const id = masterId ?? uuidv4();\n if (cond.composed) {\n const children = cond.composed.map((cond) => this.createNormalizedConditions(cond, id));\n const ids = children.map((child) => child.id);\n const normalizedChildren = children.reduce(\n (acc, res) => [...acc, ...res.conditions],\n [] as NormalizedCondition[]\n );\n return {\n id,\n conditions: [\n {\n id,\n parentId: parentId,\n type: cond.type,\n composed: ids\n },\n ...normalizedChildren\n ]\n };\n }\n return {\n id,\n conditions: [\n {\n id,\n parentId: parentId,\n type: cond.type\n }\n ]\n };\n } else if (cond.type === 'ATTRIBUTE') {\n const id = masterId ?? uuidv4();\n return {\n id,\n conditions: [\n {\n id,\n parentId,\n type: 'ATTRIBUTE',\n attribute: cond.attribute,\n operator: cond.operator,\n value: cond.value\n }\n ]\n };\n } else {\n const id = masterId ?? uuidv4();\n return {\n id,\n conditions: [\n {\n id: id,\n parentId,\n type: 'METADATA',\n metadata: cond.metadata,\n operator: cond.operator,\n value: cond.value\n }\n ]\n };\n }\n }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { ClassActions, FieldActions } from '@provoly/dashboard';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\nimport { PredicatesActions } from '../../admin-predicates/store/predicates.actions';\nimport { AbacRulesActions } from '../store/abac-rules.actions';\nimport { AbacRulesService } from '../store/abac-rules.service';\n\n@Component({\n selector: 'pry-admin-abac-rules-new',\n templateUrl: './admin-abac-rules-new.component.html'\n})\nexport class AdminAbacRulesNewComponent implements OnDestroy {\n constructor(\n private store: Store<any>,\n private abacRuleService: AbacRulesService\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.store.dispatch(MetadataActions.loadMetadata());\n this.store.dispatch(MetadataActions.loadUserProfile());\n const newRule = this.abacRuleService.initializeNewAbacRule();\n this.store.dispatch(AbacRulesActions.initEditAbacRule({ rule: newRule }));\n }\n\n ngOnDestroy(): void {\n this.store.dispatch(AbacRulesActions.resetEditAbacRule());\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.abac-rules.title.add' | i18n }}</h1>\n <pry-admin-abac-rules-form [readonly]=\"false\" [edit]=\"false\"></pry-admin-abac-rules-form>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ClassActions, FieldActions } from '@provoly/dashboard';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { PredicatesActions } from '../../admin-predicates/store/predicates.actions';\nimport { AbacRulesActions } from '../store/abac-rules.actions';\n\n@Component({\n selector: 'pry-admin-abac-rules-view',\n templateUrl: './admin-abac-rules-view.component.html'\n})\nexport class AdminAbacRulesViewComponent implements OnInit {\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.store.dispatch(MetadataActions.loadMetadata());\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n const path = this.router.createUrlTree(['.', 'edit'], { relativeTo: this.route });\n const backPath = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: backPath.toString() }),\n label: 'back',\n icon: 'arrow_back'\n },\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'abac_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n const ruleId = params['id'];\n this.store.dispatch(AbacRulesActions.fetchAbacRule({ id: ruleId }));\n });\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-1\">{{ '@pry.admin.abac-rules.title.view' | i18n }}</h1>\n <pry-admin-abac-rules-form [readonly]=\"true\"></pry-admin-abac-rules-form>\n</div>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { PredicatesActions } from '../admin-predicates/store/predicates.actions';\nimport { AbacRulesActions } from './store/abac-rules.actions';\nimport { AbacRule } from './store/abac-rules.model';\nimport { AbacRulesSelectors } from './store/abac-rules.selectors';\n\n@Component({\n selector: 'pry-admin-abac-rules',\n templateUrl: './admin-abac-rules.component.html'\n})\nexport class AdminAbacRulesComponent {\n rules$: Observable<AbacRule[]>;\n loading$: Observable<boolean>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(AbacRulesActions.loadAbacRules());\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.rules$ = this.store.select(AbacRulesSelectors.abacRules);\n this.loading$ = this.store.select(AbacRulesSelectors.loading);\n const newAbacRulePath = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: newAbacRulePath.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'abac_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n goToSelectRule(rule: AbacRule) {\n const path = this.router.createUrlTree(['.', `${rule.id}`], { relativeTo: this.route });\n this.store.dispatch(AdminActions.routeTo({ path: path.toString() }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.abac-rules.title.list' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.abac-rules.title.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.abac-rules.form.name' | i18n }}</th>\n <th prySortHeader=\"type\">{{ '@pry.admin.abac-rules.form.type' | i18n }}</th>\n <th prySortHeader=\"active\">{{ '@pry.admin.abac-rules.form.status' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (rule of rules$ | async | prySortData: sortActive : sortDirection; track rule) {\n <tr (click)=\"goToSelectRule(rule)\">\n <td class=\"view-details\">\n <button\n [id]=\"'button-arule-' + rule.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n >\n <span class=\"u-visually-hidden\">{{ rule.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ rule.name }}</td>\n <td>\n {{ '@pry.admin.abac-rules.form.' + (rule.type === 'METADATA' ? 'typeMetadata' : 'typeAttribute') | i18n }}\n </td>\n <td>\n <span class=\"a-badge\" [ngClass]=\"{ '-status-ok': rule.active, '-status-inactive': !rule.active }\">\n {{\n (rule.active ? '@pry.admin.abac-rules.form.statusActive' : '@pry.admin.abac-rules.form.statusInactive')\n | i18n\n }}\n </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { Attribute, AttributeExtended, Category, Class } from '@provoly/dashboard';\n\nexport const AdminClassActions = {\n updateToolbox: createAction('[Admin/Classes] Update Toolbox Class'),\n\n saveInterClass: createAction('[Admin/Classes] Save Inter Class', props<{ class: Class; route: string }>()),\n resetInterClass: createAction('[Admin/Classes] Reset Inter Class'),\n\n saveClass: createAction('[Admin/Classes] Save Class', props<{ class: Class; route: string }>()),\n saveClassSuccess: createAction('[Admin/Classes Api] Save Class Success', props<{ route: string }>()),\n saveClassFailure: createAction('[Admin/Classes Api] Save Class Failure', props<{ error: any }>()),\n\n saveCategory: createAction('[Admin/Classes] Save Category', props<{ category: Category }>()),\n saveCategorySuccess: createAction('[Admin/Classes Api] Save Category Success'),\n saveCategoryFailure: createAction('[Admin/Classes Api] Save Category Failure', props<{ error: any }>()),\n\n selectClass: createAction('[Admin/Classes] Select Class', props<{ clazz: Class }>()),\n selectClassFailure: createAction('[Admin/Classes Api] Select Class Failure', props<{ error: any }>()),\n\n unselectClass: createAction('[Admin/Classes] Unselect Class'),\n\n deleteClass: createAction('[Admin/Classes] Delete Class', props<{ id: string; route: string }>()),\n deleteClassSuccess: createAction('[Admin/Classes Api] Delete Class Success', props<{ route: string }>()),\n deleteClassFailure: createAction('[Admin/Classes Api] Delete Class Failure', props<{ error: any }>()),\n\n deleteAttributeForClass: createAction(\n '[Admin/Classes] Delete Attribute for Class',\n props<{ classId: string; attrId: string; backPath: string; addAttrPath: string }>()\n ),\n deleteAttributeForClassSuccess: createAction(\n '[Admin/Classes Api] Delete Attribute for Class Success',\n props<{ classId: string; backPath: string; addAttrPath: string }>()\n ),\n deleteAttributeForClassFailure: createAction(\n '[Admin/Classes Api] Delete Attribute for Class Failure',\n props<{ error: any }>()\n ),\n\n selectAttribute: createAction(\n '[Admin/Classes] Select current Attribute',\n props<{ attrExtended: AttributeExtended }>()\n ),\n unselectAttribute: createAction('[Admin/Classes] Unselect current Attribute'),\n\n saveAttributeForClass: createAction(\n '[Admin/Classes] Save Attribute for Selected Class',\n props<{ classId: string; attribute: Attribute; route: string }>()\n ),\n saveAttributeForClassSuccess: createAction(\n '[Admin/Classes Api] Save Attribute for Selected Class Success',\n props<{ route: string }>()\n ),\n saveAttributeForClassFailure: createAction(\n '[Admin/Classes Api] Save Attribute for Selected Class Failure',\n props<{ error: any }>()\n ),\n back: createAction('[Admin/Classes] back', props<{ path: string }>()),\n openModal: createAction('[Class] Open modal'),\n closeModal: createAction('[Class] Close modal'),\n confirmClassDeletion: createAction('[Class] Open modal for deleting class', props<{ id: string; path: string }>()),\n confirmAttributeDeletion: createAction(\n '[Class] Open modal for attribute deletion',\n props<{\n classId: string;\n attrId: string;\n backPath: string;\n addAttrPath: string;\n }>()\n ),\n getStorageOptions: createAction('[Admin/Classes] Get Storage Options List'),\n getStorageOptionsSuccess: createAction(\n '[Admin/Classes] Get Storage Options List Success',\n props<{ storageOptions: string[] }>()\n ),\n getStorageOptionsFailure: createAction('[Admin/Classes] Get Storage Options List Failure', props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { AttributeExtended, Class } from '@provoly/dashboard';\nimport { AdminClassActions } from './admin-class.actions';\n\nexport const classesFeatureKey = '@pry/admin/classes';\n\nexport interface AdminClassState {\n loading: boolean;\n selectedClass?: Class;\n selectedAttribute?: AttributeExtended;\n interClass?: Class;\n openModal: boolean;\n storageOptions: string[];\n}\n\nexport const initialClassState: AdminClassState = {\n loading: false,\n openModal: false,\n storageOptions: ['ELASTIC']\n};\n\nexport const classReducer = createReducer(\n initialClassState,\n on(AdminClassActions.selectClass, (state, action) => ({\n ...state,\n selectedClass: action.clazz\n })),\n on(AdminClassActions.unselectClass, (state, action) => ({\n ...state,\n selectedClass: undefined\n })),\n on(AdminClassActions.selectAttribute, (state, action) => ({\n ...state,\n selectedAttribute: action.attrExtended\n })),\n on(AdminClassActions.unselectAttribute, (state, action) => ({\n ...state,\n selectedAttribute: undefined\n })),\n on(AdminClassActions.saveInterClass, (state, action) => ({\n ...state,\n interClass: action.class\n })),\n on(AdminClassActions.saveClassSuccess, (state, action) => ({\n ...state,\n interClass: undefined\n })),\n on(AdminClassActions.back, (state) => ({\n ...state,\n interClass: undefined,\n selectedClass: undefined\n })),\n on(AdminClassActions.resetInterClass, (state) => ({\n ...state,\n interClass: undefined\n })),\n on(AdminClassActions.openModal, (state) => ({\n ...state,\n openModal: true\n })),\n on(AdminClassActions.closeModal, (state) => ({\n ...state,\n openModal: false\n })),\n on(AdminClassActions.deleteAttributeForClass, (state) => ({\n ...state,\n selectedAttribute: undefined\n })),\n on(AdminClassActions.getStorageOptionsSuccess, (state, action) => ({\n ...state,\n storageOptions: action.storageOptions\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromClass from './admin-class.reducer';\n\nconst feature = createFeatureSelector<fromClass.AdminClassState>(fromClass.classesFeatureKey);\n\nconst loading = createSelector(feature, (state) => state?.loading);\nconst selectedClass = createSelector(feature, (state) => state?.selectedClass);\nconst selectedClassId = createSelector(selectedClass, (state) => state?.id);\nconst selectedAttribute = createSelector(feature, (state) => state?.selectedAttribute);\nconst selectedAttributeId = createSelector(selectedAttribute, (state) => state?.id);\nconst interClass = createSelector(feature, (state) => state?.interClass);\nconst interClassId = createSelector(interClass, (state) => state?.id);\nconst openModal = createSelector(feature, (state) => state.openModal);\nconst storageOptions = createSelector(feature, (state) => state.storageOptions);\n\nexport const AdminClassSelectors = {\n feature,\n loading,\n selectedClass,\n selectedClassId,\n selectedAttribute,\n selectedAttributeId,\n interClass,\n interClassId,\n openModal,\n storageOptions\n};\n","import {\n Component,\n ComponentRef,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n AttributeSimpleValue,\n BaseTooltipComponent,\n Class,\n ClassSelectors,\n ConfigActions,\n ConfigSelectors,\n Field,\n FieldSelectors,\n Item,\n PryI18nService,\n SubscriptionnerDirective,\n TooltipFactoryService,\n TooltipOfClass\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { v4 } from 'uuid';\n\n@Component({\n selector: 'pry-admin-classes-customize-tooltip',\n templateUrl: './admin-classes-customize-tooltip.component.html'\n})\nexport class AdminClassesCustomizeTooltipComponent extends SubscriptionnerDirective implements OnDestroy {\n @ViewChild('example', { read: ViewContainerRef }) example!: ViewContainerRef;\n currentClassConfig: TooltipOfClass = { type: 'default' };\n possibleTooltipTypes$: Observable<{ value: string; label: string }[]>;\n advancedTooltip: boolean = false;\n possibleNonAttributesFields = [\n {\n name: 'id',\n id: 'id'\n },\n {\n name: 'oClass',\n id: 'oClass'\n }\n ] as Attribute[];\n @Output() backPressed = new EventEmitter<void>();\n private _currentClass$ = new BehaviorSubject<Class>({} as Class);\n strOptions: string = '';\n tmpComponent?: ComponentRef<BaseTooltipComponent>;\n defs: { [p: string]: TooltipOfClass } = {};\n noTooltip: boolean = false;\n classes$: Observable<Class[]>;\n fields$: Observable<Field[]>;\n attributesOfClass$: Observable<Attribute[]>;\n mockData: any;\n attributes: Attribute[] = [];\n\n @Input() set currentClass(clazz: Class | null | undefined) {\n this._currentClass$.next(clazz ?? ({} as Class));\n this.currentClassConfig = this.removeUnknown(\n structuredClone(this.defs[this.currentClass.id] ?? { type: 'default' })\n );\n }\n\n get currentClass(): Class {\n return this._currentClass$.value;\n }\n\n constructor(\n private tooltipFactoryService: TooltipFactoryService,\n private injector: Injector,\n private translateService: PryI18nService,\n private store: Store\n ) {\n super();\n this.possibleTooltipTypes$ = this.tooltipFactoryService.types$.pipe(\n map((types) =>\n types.map((type) => ({\n value: type,\n label: this.translateService.instant('@pry.tooltip.' + type)\n }))\n )\n );\n this.subscriptions.add(\n this.store.select(ConfigSelectors.tooltipDefinitions).subscribe((defs) => {\n this.defs = defs;\n this.currentClassConfig = structuredClone(defs[this.currentClass.id] ?? { type: 'default' });\n })\n );\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.attributesOfClass$ = combineLatest([this._currentClass$, this.classes$]).pipe(\n map(([clazz, classes]) => classes.find((cl) => cl.id === clazz.id)?.attributes ?? []),\n map((attrs) => [...attrs, ...this.possibleNonAttributesFields].sort((f1, f2) => f1.name.localeCompare(f2.name)))\n );\n this.subscriptions.add(\n this.attributesOfClass$.subscribe((attrs) => {\n this.attributes = attrs;\n this.mockData = attrs\n .map((attr) => ({\n [attr.technicalName]: {\n type: 'VALUE',\n value:\n '«' + this.translateService.instant('@pry.admin.customize.exemple', { expr: attr.technicalName }) + '»',\n visible: true\n } as AttributeSimpleValue\n }))\n .reduce((p, c) => ({ ...p, attributes: { ...p.attributes, ...c } }), {\n oClass: this.currentClass.id,\n id: v4(),\n label: '«' + this.translateService.instant('@pry.admin.customize.exemple', { expr: 'label' }) + '»',\n attributes: {} as { [key: string]: AttributeSimpleValue }\n } as Item);\n })\n );\n }\n\n tooltipTypeChanged($event: any) {\n this.currentClassConfig.type = $event;\n if (this.currentClassConfig.type === 'attribute') {\n this.currentClassConfig.options = { attributes: this.attributes.map((attr) => attr.id) };\n } else {\n this.currentClassConfig.options = {};\n }\n this.strOptions = JSON.stringify(this.currentClassConfig.options);\n this.updateExample();\n }\n\n optionsChanged() {\n this.currentClassConfig.options = JSON.parse(this.strOptions);\n if (this.tmpComponent) {\n this.tmpComponent.instance.context = this.currentClassConfig.options;\n }\n this.updateExample();\n }\n\n updateExample() {\n this.example?.clear();\n const component$ = this.tooltipFactoryService.generateTooltip(\n this.currentClassConfig.type,\n this.injector,\n this.example\n );\n component$.subscribe((component) => {\n this.noTooltip = !component;\n if (component) {\n component.instance.data.item = this.mockData;\n\n this.tmpComponent = component;\n\n component.instance.context = this.currentClassConfig.options;\n }\n });\n }\n\n updateTemplate() {\n this.store.dispatch(\n ConfigActions.saveTooltip({\n definitions: { [this.currentClass.id]: this.currentClassConfig }\n })\n );\n this.goBack();\n }\n\n goBack() {\n this.backPressed.emit();\n }\n\n changeAttributes($event: any) {\n this.currentClassConfig.options.attributes = $event;\n setTimeout(() => this.updateExample(), 100);\n }\n\n private removeUnknown(config: TooltipOfClass): TooltipOfClass {\n if (config.type === 'attribute') {\n const toRemove: string[] = [];\n config.options.attributes.forEach((attr: string) => {\n if (!this.attributes.map((attr) => attr.id).includes(attr)) {\n toRemove.push(attr);\n }\n });\n config.options.attributes = config.options.attributes.filter((attr: string) => !toRemove.includes(attr));\n }\n return config;\n }\n}\n","<div>\n <div class=\"m-form-label-field -width-xl\">\n <label class=\"a-label\" for=\"tooltip_type\">{{ '@pry.admin.customize.type' | i18n }}</label>\n <pry-select\n id=\"tooltip_type\"\n (ngModelChange)=\"tooltipTypeChanged($event)\"\n [ngModel]=\"currentClassConfig.type\"\n [items]=\"possibleTooltipTypes$ | async\"\n bindValue=\"value\"\n bindLabel=\"label\"\n ></pry-select>\n </div>\n\n <div>\n <pry-checkbox [(ngModel)]=\"advancedTooltip\">{{ '@pry.admin.customize.advanced' | i18n }}</pry-checkbox>\n </div>\n\n @if (!advancedTooltip && currentClassConfig.type === 'attribute') {\n <div class=\"m-form-label-field -width-xl\">\n <label class=\"a-label\" for=\"customize_simplified\">{{ '@pry.admin.customize.simplified' | i18n }}</label>\n <pry-select\n id=\"customize_simplified\"\n (ngModelChange)=\"changeAttributes($event)\"\n [ngModel]=\"currentClassConfig.options.attributes\"\n [items]=\"attributesOfClass$ | async\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n bindLabel=\"name\"\n bindValue=\"id\"\n ></pry-select>\n </div>\n }\n\n @if (advancedTooltip) {\n <textarea\n cols=\"100\"\n rows=\"15\"\n class=\"a-form-field\"\n [(ngModel)]=\"strOptions\"\n (focusout)=\"optionsChanged()\"\n ></textarea>\n }\n</div>\n\n<div class=\"m-tooltip m-tooltip--example\" [class.-hidden]=\"noTooltip\">\n <div #example></div>\n</div>\n\n<div class=\"m-btn-group -width-md\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" (click)=\"updateTemplate()\">\n {{ '@pry.admin.customize.update' | i18n }}\n </button>\n</div>\n","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n compareOperationFunctions,\n ConfigActions,\n ConfigSelectors,\n DEFAULT_ICON_URL,\n IconDefinitions,\n IconOptions,\n IconPosition,\n PryI18nService,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { distinctUntilChanged } from 'rxjs';\n\nconst DEFAULT_RULE = {\n isDefault: true,\n iconUrl: DEFAULT_ICON_URL,\n iconSize: [25, 25]\n};\n\n@Component({\n selector: 'pry-admin-classes-customize-symbol',\n templateUrl: './admin-classes-customize-symbol.component.html'\n})\nexport class AdminClassesCustomizeSymbolComponent extends SubscriptionnerDirective implements OnDestroy {\n @Output() backPressed = new EventEmitter<void>();\n private _currentClass: Class = {} as Class;\n definitions: IconOptions[] = [];\n initialDefinitions?: IconOptions[] = undefined;\n baseDefs: IconDefinitions = {};\n positions = Object.values(IconPosition).map((pos) => ({\n label: '@pry.admin.position.' + pos,\n value: pos\n }));\n fieldsForClass: Attribute[] = [];\n operations = Object.keys(compareOperationFunctions).map((op) => ({\n label: '@pry.admin.classes.operations.' + op,\n name: op\n }));\n sizes = [25, 50, 100].map((size) => ({\n label: `${size}x${size}`,\n value: size\n }));\n\n @Input() set currentClass(clazz: Class | null | undefined) {\n this._currentClass = clazz ?? ({} as Class);\n this.definitions = !!this.baseDefs ? structuredClone(this.baseDefs[clazz?.id ?? ''] ?? [DEFAULT_RULE]) : [];\n this.definitions.sort((def1, def2) => (def1.isDefault ? -1 : 1) - (def2.isDefault ? -1 : 1));\n if (!this.initialDefinitions && !!this.baseDefs) {\n this.initialDefinitions = structuredClone(this.definitions);\n }\n this.fieldsForClass = [...(clazz ?? { attributes: [] }).attributes].sort((attr1, attr2) =>\n attr1.name.localeCompare(attr2.name)\n );\n }\n\n get currentClass() {\n return this._currentClass;\n }\n\n constructor(\n private translateService: PryI18nService,\n private store: Store\n ) {\n super();\n this.subscriptions.add(\n this.store\n .select(ConfigSelectors.iconDefinitions)\n .pipe(distinctUntilChanged((a, b) => equal(a, b)))\n .subscribe((defs) => {\n this.baseDefs = defs;\n this.definitions = !!defs ? structuredClone(defs[this.currentClass?.id ?? ''] ?? [DEFAULT_RULE]) : [];\n this.definitions.sort((def1, def2) => (def1.isDefault ? -1 : 1) - (def2.isDefault ? -1 : 1));\n if (!this.initialDefinitions && !!defs) {\n this.initialDefinitions = structuredClone(this.definitions);\n }\n })\n );\n }\n\n changeForImage(icon: string, i: number) {\n this.definitions[i].iconUrl = icon;\n this.store.dispatch(\n ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } })\n );\n }\n\n changePosition($event: any, i: number) {\n this.definitions[i].position = $event;\n }\n\n changeAttrName($event: any, i: number) {\n // @ts-ignore\n this.definitions[i].rule.attributeName = $event;\n }\n\n changeValue($event: any, i: number) {\n // @ts-ignore\n this.definitions[i].rule.value = $event;\n }\n\n changeOperation($event: any, i: number) {\n // @ts-ignore\n this.definitions[i].rule.operation = $event;\n }\n\n toggleRule(i: number) {\n if (!this.definitions[i].rule) {\n this.definitions[i].rule = { attributeName: '', value: '', operation: 'EQUALS' };\n } else {\n this.definitions[i].rule = undefined;\n }\n this.store.dispatch(\n ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } })\n );\n }\n\n goBack() {\n this.backPressed.emit();\n }\n\n changeIcon(i: number, $event: string) {\n this.definitions[i].iconUrl = $event;\n }\n\n changeSize($event: number) {\n const defaultRule = this.definitions.find((def) => def.isDefault);\n if (defaultRule) {\n defaultRule.iconSize = [$event, $event];\n }\n }\n\n valid() {\n this.store.dispatch(ConfigActions.saveIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } }));\n this.initialDefinitions = structuredClone(this.definitions);\n this.goBack();\n }\n\n addRule() {\n this.definitions.push({ iconUrl: DEFAULT_ICON_URL, iconSize: [25, 25] });\n this.store.dispatch(\n ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } })\n );\n }\n\n removeRule(i: number) {\n this.definitions.splice(i, 1);\n this.store.dispatch(\n ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } })\n );\n }\n\n restoreSymbols() {\n this.store.dispatch(\n ConfigActions.updateIcons({\n definitions: { [this.currentClass?.id ?? '']: this.initialDefinitions ?? this.definitions }\n })\n );\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.restoreSymbols();\n }\n\n move(index: number, nextIndex: number) {\n const tmp = this.definitions[index];\n this.definitions[index] = this.definitions[nextIndex];\n this.definitions[nextIndex] = tmp;\n this.store.dispatch(\n ConfigActions.updateIcons({ definitions: { [this.currentClass?.id ?? '']: this.definitions } })\n );\n }\n}\n","<ul class=\"m-rule-wrapper\">\n @for (definition of definitions; track definition; let i = $index) {\n <li\n [class.m-rule--default]=\"definition.isDefault\"\n class=\"m-rule\"\n >\n <div class=\"m-rule__header\">\n <h3 class=\"a-h3\">\n {{ '@pry.admin.rule' | i18n : { id: i + 1 } }}\n <span>{{ definition.isDefault ? ('@pry.admin.defaultRule' | i18n) : '' }}</span>\n </h3>\n @if (!definition.isDefault) {\n <div class=\"m-rule__actions\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i <= 1\"\n [disabled]=\"i <= 1\"\n (click)=\"move(i, i - 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_haut\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveUp' | i18n }}</span>\n </button>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n [class.-disabled]=\"i >= definitions.length - 1\"\n [disabled]=\"i >= definitions.length - 1\"\n (click)=\"move(i, i + 1)\"\n >\n <pry-icon [height]=\"25\" [width]=\"25\" iconSvg=\"fleche_bas\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.moveDown' | i18n }}</span>\n </button>\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"removeRule(i)\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"delete\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.action.delete' | i18n }}</span>\n </button>\n </div>\n }\n </div>\n <div>\n <pry-select-image [iconUrl]=\"definition.iconUrl\" (changed)=\"changeForImage($event, i)\"></pry-select-image>\n @if (definition.isDefault) {\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"size\">{{ '@pry.admin.size' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSize($event)\"\n [items]=\"sizes\"\n [ngModel]=\"definition.iconSize[0]\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"size\"\n ></pry-select>\n </div>\n }\n @if (!definition.isDefault) {\n <div class=\"m-form-label-field m-rule__display-mode\">\n <label class=\"a-label\" for=\"display_mode\">{{ '@pry.admin.displayModeImage' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changePosition($event, i)\"\n [items]=\"positions\"\n [ngModel]=\"definition.position\"\n bindLabel=\"label\"\n bindValue=\"value\"\n id=\"display_mode\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"!!definition.rule\" (click)=\"toggleRule(i)\">{{\n '@pry.admin.classes.condition' | i18n\n }}</pry-checkbox>\n </div>\n }\n @if (!!definition.rule && !definition.isDefault) {\n <div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_attrname\">{{ '@pry.admin.classes.attrName' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAttrName($event, i)\"\n [items]=\"fieldsForClass\"\n [ngModel]=\"definition.rule.attributeName\"\n bindLabel=\"name\"\n bindValue=\"name\"\n id=\"classes_attrname\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_operation\">{{ '@pry.admin.classes.operation' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event, i)\"\n [items]=\"operations\"\n [ngModel]=\"definition.rule.operation\"\n bindLabel=\"label\"\n bindValue=\"name\"\n id=\"classes_operation\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"classes_value\">{{ '@pry.admin.classes.value' | i18n }}</label>\n <input\n id=\"classes_value\"\n type=\"text\"\n class=\"a-form-field\"\n (ngModelChange)=\"changeValue($event, i)\"\n [ngModel]=\"definition.rule.value\"\n />\n </div>\n </div>\n }\n </div>\n </li>\n }\n</ul>\n\n<button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"addRule()\">\n <pry-icon iconSvg=\"add\"></pry-icon>\n Ajouter une règle\n</button>\n\n<div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"restoreSymbols(); goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"'@pry.admin.customize.updateIcons' | i18n\"\n (click)=\"valid()\"\n ></button>\n</div>\n","import { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { Component, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Class,\n ClassActions,\n ClassSelectors,\n ConfigActions,\n ConfigSelectors,\n Field,\n FieldActions,\n FieldSelectors,\n ItemUtils,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { combineLatest, combineLatestWith, map, Observable, of, switchMap } from 'rxjs';\nimport { AdminClassActions } from '../store/admin-class.actions';\nimport { AdminClassSelectors } from '../store/admin-class.selectors';\n\n@Component({\n selector: 'pry-admin-classes-customize',\n templateUrl: './admin-classes-customize.component.html'\n})\nexport class AdminClassesCustomizeComponent extends SubscriptionnerDirective implements OnDestroy {\n currentClass$: Observable<Class | undefined>;\n currentClass: Class = {} as Class;\n defaultAttributes: string[] = [];\n otherAttributes: string[] = [];\n currentPropertiesConfig$: Observable<string[]>;\n currentTilePropertiesConfig$: Observable<string[]>;\n classes$: Observable<Class[]> = of([]);\n defaultTileAttributes: string[] = [];\n otherTileAttributes: string[] = [];\n maxTilesAttributes = 5;\n fields$: Observable<Field[]>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n super();\n this.subscriptions.add(\n this.route.params.subscribe((params) =>\n this.store.dispatch(AdminClassActions.selectClass({ clazz: { id: params['id'] } as Class }))\n )\n );\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(ConfigActions.loadCustomization({}));\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.currentClass$ = combineLatest([\n this.store.select(AdminClassSelectors.selectedClass),\n this.store.select(ClassSelectors.classes)\n ]).pipe(switchMap(([clazz, _]) => this.store.select(ClassSelectors.classById(clazz?.id ?? ''))));\n this.subscriptions.add(this.currentClass$.subscribe((clazz) => (this.currentClass = clazz ?? ({} as Class))));\n this.currentPropertiesConfig$ = this.store.select(ConfigSelectors.tableDefaultAttributesDefinitions).pipe(\n combineLatestWith(this.currentClass$, this.fields$),\n map(([defs, clazz, fields]) =>\n ItemUtils.getClassNonGeoAttributesNames((clazz ?? { attributes: [] }) as Class, defs, fields)\n )\n );\n this.subscriptions.add(\n this.currentPropertiesConfig$.pipe(combineLatestWith(this.currentClass$)).subscribe(([attrs, clazz]) => {\n this.defaultAttributes = structuredClone(attrs);\n this.otherAttributes = (clazz ?? { attributes: [] }).attributes\n .filter((attr) => !attrs.includes(attr.name))\n .map((attr) => attr.name);\n })\n );\n this.currentTilePropertiesConfig$ = this.store.select(ConfigSelectors.tileAttributesDefinitions).pipe(\n combineLatestWith(this.currentClass$, this.fields$),\n map(([defs, clazz, fields]) =>\n ItemUtils.getClassNonGeoAttributesNames((clazz ?? { attributes: [] }) as Class, defs, fields)\n ),\n map((attrs) => attrs.filter((_, i) => i < this.maxTilesAttributes))\n );\n this.subscriptions.add(\n this.currentTilePropertiesConfig$.pipe(combineLatestWith(this.currentClass$)).subscribe(([attrs, clazz]) => {\n this.defaultTileAttributes = structuredClone(attrs);\n this.otherTileAttributes = (clazz ?? { attributes: [] }).attributes\n .filter((attr) => !attrs.includes(attr.name))\n .map((attr) => attr.name);\n })\n );\n this.subscriptions.add(\n this.store.select(ConfigSelectors.maxAttributesInTiles).subscribe((max) => {\n this.maxTilesAttributes = max;\n })\n );\n }\n\n goBack() {\n const path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n this.store.dispatch(AdminClassActions.back({ path: path.toString() }));\n }\n\n drop(event: CdkDragDrop<string[]>) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n }\n const toSort = event.previousContainer.id === 'cdk-drop-list-1' ? event.previousContainer : event.container;\n toSort.data.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));\n }\n\n updateTableAttrs() {\n this.store.dispatch(\n ConfigActions.saveTableDefaultAttributes({\n definitions: { [this.currentClass.id]: this.defaultAttributes.sort() }\n })\n );\n this.goBack();\n }\n\n updateTileAttrs() {\n this.store.dispatch(\n ConfigActions.saveTileAttributes({\n definitions: { [this.currentClass.id]: this.defaultTileAttributes }\n })\n );\n this.goBack();\n }\n\n isTileConfValid() {\n return this.defaultTileAttributes.length > 0 && this.defaultTileAttributes.length <= this.maxTilesAttributes;\n }\n}\n","<div class=\"o-pry-admin-classes-customize\">\n <h1 class=\"a-h1\" id=\"tab-custom\">{{ '@pry.admin.customize.title' | i18n }}</h1>\n\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"customizeTemplate\" name=\"customize.template\"></pry-tab>\n <pry-tab [templateRef]=\"customizeTable\" name=\"customize.table\"></pry-tab>\n <pry-tab [templateRef]=\"customizeSymbol\" name=\"classes.rules\"></pry-tab>\n <pry-tab [templateRef]=\"customizeTile\" name=\"customize.tile\"></pry-tab>\n </pry-tab-group>\n\n <ng-template #customizeTemplate>\n <pry-admin-classes-customize-tooltip\n (backPressed)=\"goBack()\"\n [currentClass]=\"currentClass$ | async\"\n ></pry-admin-classes-customize-tooltip>\n </ng-template>\n <ng-template #customizeTable>\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.tableAttrs' | i18n }}</h2>\n <div\n cdkDropList\n #defaultList=\"cdkDropList\"\n [cdkDropListData]=\"defaultAttributes\"\n [cdkDropListConnectedTo]=\"[notDefaultList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (item of defaultAttributes; track item) {\n <div class=\"item\" cdkDrag>{{ item }}</div>\n }\n </div>\n </div>\n\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.noTableAttrs' | i18n }}</h2>\n <div\n cdkDropList\n #notDefaultList=\"cdkDropList\"\n [cdkDropListData]=\"otherAttributes\"\n [cdkDropListConnectedTo]=\"[defaultList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (item of otherAttributes; track item) {\n <div class=\"item\" cdkDrag>{{ item }}</div>\n }\n </div>\n </div>\n\n <div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" (click)=\"updateTableAttrs()\">\n {{ '@pry.admin.customize.updateTable' | i18n }}\n </button>\n </div>\n </ng-template>\n <ng-template #customizeSymbol>\n <pry-admin-classes-customize-symbol\n (backPressed)=\"goBack()\"\n [currentClass]=\"currentClass$ | async\"\n ></pry-admin-classes-customize-symbol>\n </ng-template>\n <ng-template #customizeTile>\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.tile' | i18n }}</h2>\n <div\n cdkDropList\n #defaultTilesList=\"cdkDropList\"\n [cdkDropListData]=\"defaultTileAttributes\"\n [cdkDropListConnectedTo]=\"[notDefaultTilesList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (item of defaultTileAttributes; track item) {\n <div class=\"item\" cdkDrag>{{ item }}</div>\n }\n </div>\n </div>\n\n <div class=\"container\">\n <h2>{{ '@pry.admin.customize.noTileAttrs' | i18n }}</h2>\n <div\n cdkDropList\n #notDefaultTilesList=\"cdkDropList\"\n [cdkDropListData]=\"otherTileAttributes\"\n [cdkDropListConnectedTo]=\"[defaultTilesList]\"\n class=\"list\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (item of otherTileAttributes; track item) {\n <div class=\"item\" cdkDrag>{{ item }}</div>\n }\n </div>\n </div>\n\n <div>\n @if (!isTileConfValid()) {\n <p>{{ '@pry.admin.customize.tileHint' | i18n : { max: maxTilesAttributes } }}</p>\n }\n </div>\n\n <div class=\"m-btn-group -width-lg\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" (click)=\"updateTileAttrs()\" [disabled]=\"!isTileConfValid()\">\n {{ '@pry.admin.customize.updateTile' | i18n }}\n </button>\n </div>\n </ng-template>\n</div>\n","import { Component } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { AdminActions } from '../store/admin.actions';\nimport { AdminState } from '../store/admin.reducer';\n\n@Component({\n selector: 'pry-admin',\n templateUrl: './admin.component.html'\n})\nexport class PryAdminComponent extends SubscriptionnerDirective {\n limit?: string;\n\n constructor(private store: Store<AdminState>, private route: ActivatedRoute) {\n super();\n this.store.dispatch(AdminActions.resetActions());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.subscriptions.add(this.route.data.subscribe((data) => (this.limit = data['limitMenu'])));\n }\n}\n\nexport function noWhitespaceValidator(control: AbstractControl) {\n const isWhitespace = (control.value || '').trim().length < 3 && /\\s/.test(control.value);\n const isValid = !isWhitespace;\n return isValid ? null : { whitespace: true };\n}\n","<h2 class=\"admin__title\">{{ (!limit ? '@pry.admin.title' : '@pry.admin.menus.' + limit) | i18n }}</h2>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassActions, ClassSelectors, SubscriptionnerDirective } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\nimport { noWhitespaceValidator } from '../../../components/admin.component';\nimport { AdminClassActions } from '../store/admin-class.actions';\nimport { AdminClassSelectors } from '../store/admin-class.selectors';\n\n@Component({\n selector: 'pry-admin-classes-form',\n templateUrl: './admin-classes-form.component.html'\n})\nexport class AdminClassesFormComponent extends SubscriptionnerDirective implements OnInit, OnDestroy {\n classNames$?: Observable<string[]>;\n nameAlreadyExists$?: Observable<boolean>;\n storageOptions$: Observable<string[]>;\n\n sub = new Subscription();\n\n isSubmitted = false;\n classForm: UntypedFormGroup;\n _currentClass?: Class;\n\n @Input() set currentClass(val: Class) {\n this._currentClass = val;\n if (!!this._currentClass) {\n this.classForm.controls['storage'].disable({ onlySelf: true });\n } else {\n this.classForm.controls['storage'].enable({ onlySelf: true });\n }\n }\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder\n ) {\n super();\n this.classForm = this.formBuilder.group({\n id: [uuid()],\n name: ['', [Validators.required, Validators.minLength(3), Validators.maxLength(100), noWhitespaceValidator]],\n description: [{ value: '', disabled: true }],\n storage: ['ELASTIC']\n });\n this.store.dispatch(AdminClassActions.getStorageOptions());\n this.storageOptions$ = this.store.select(AdminClassSelectors.storageOptions);\n }\n\n ngOnInit(): void {\n this.store.dispatch(ClassActions.load({}));\n this.classNames$ = this.store\n .select(ClassSelectors.classes)\n .pipe(map((classes: Class[]) => classes.map((clazz: Class) => clazz.name.toLowerCase())));\n this.nameAlreadyExists$ = combineLatest([\n this.classForm.get('name')?.valueChanges as Observable<string>,\n this.classNames$\n ]).pipe(\n map(([value, classNames]) => classNames.includes(value.toLowerCase()) && value != this._currentClass?.name)\n );\n this.subscriptions.add(\n this.nameAlreadyExists$.subscribe((value) => {\n if (value) {\n this.classForm.controls['name'].setErrors({ 'same-name': true });\n }\n return value;\n })\n );\n\n if (this._currentClass) {\n this.classForm.patchValue({\n id: this._currentClass.id,\n name: this._currentClass.name,\n storage: this._currentClass.storage\n });\n }\n }\n\n goBack() {\n const redirectPath = this._currentClass ? '../..' : '..';\n const path = this.router.createUrlTree([redirectPath], { relativeTo: this.route });\n this.store.dispatch(AdminClassActions.back({ path: path.toString() }));\n }\n\n addClass() {\n this.classForm.patchValue({\n name: this.classForm.value.name.trim()\n });\n this.isSubmitted = true;\n if (this.classForm.valid) {\n this.isSubmitted = false;\n let classToSave = this.classForm.getRawValue();\n if (this._currentClass) {\n classToSave = {\n ...this._currentClass,\n name: this.classForm.value.name\n } as Class;\n let path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n this.store.dispatch(AdminClassActions.saveClass({ class: classToSave, route: path.toString() }));\n } else {\n classToSave.attributes = [];\n let path = this.router.createUrlTree(['..', classToSave.id], { relativeTo: this.route });\n this.store.dispatch(AdminClassActions.saveInterClass({ class: classToSave, route: path.toString() }));\n }\n }\n }\n}\n","<form class=\"o-form\" [formGroup]=\"classForm\" (ngSubmit)=\"addClass()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.classes.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n [attr.aria-labelledby]=\"isSubmitted && classForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n class=\"a-form-field\"\n formControlName=\"name\"\n id=\"name\"\n required\n type=\"text\"\n [attr.aria-invalid]=\"isSubmitted && classForm.get('name')?.invalid\"\n />\n @if (isSubmitted && classForm.get('name')?.invalid) {\n <label\n id=\"name-error\"\n for=\"name\"\n class=\"a-label a-label--help -error\"\n >\n @if (classForm.get('name')?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (classForm.get('name')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (classForm.get('name')?.hasError('minlength')) {\n <span>{{ '@pry.admin.minLength' | i18n: { len: 3 } }}</span>\n }\n @if (classForm.get('name')?.hasError('maxlength')) {\n <span>{{\n '@pry.admin.maxLength' | i18n: { len: 100 }\n }}</span>\n }\n @if (classForm.get('name')?.hasError('whitespace')) {\n <span>{{ '@pry.admin.noWhitespace' | i18n }}</span>\n }\n </label>\n }\n </div>\n <div class=\"u-display-flex -row -align-center\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"storage_options\">\n {{ '@pry.admin.storage.label' | i18n }}\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n [items]=\"storageOptions$ | async\"\n i18nPrefix=\"@pry.admin.storage.options.\"\n formControlName=\"storage\"\n id=\"storage_options\"\n ></pry-select>\n </div>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-md\"\n [attr.data-tooltip]=\"'@pry.admin.storage.description.' + classForm.get('storage')?.value | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(_currentClass ? '@pry.admin.edit' : '@pry.admin.next') | i18n\"\n ></button>\n </div>\n</form>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassActions, ClassSelectors } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-admin-classes-edit',\n templateUrl: './admin-classes-edit.component.html'\n})\nexport class AdminClassesEditComponent implements OnInit {\n currentClass$?: Observable<Class | undefined>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n }\n\n ngOnInit(): void {\n this.route.params.subscribe(\n (params) => (this.currentClass$ = this.store.select(ClassSelectors.classById(params['id'])))\n );\n }\n}\n","@if (currentClass$ | async; as currentClass) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.classes.rename' | i18n }}</h1>\n <pry-admin-classes-form [currentClass]=\"currentClass\"></pry-admin-classes-form>\n </div>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-classes-new',\n templateUrl: './admin-classes-new.component.html'\n})\nexport class AdminClassesNewComponent {}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.classes.add' | i18n }}</h1>\n <pry-admin-classes-form></pry-admin-classes-form>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { Category, Dataset, MissingGroupsByEntity } from '@provoly/dashboard';\n\nexport const AdminDatasetActions = {\n failure: createAction('[Dataset] Failure effect Dataset', props<{ error: any }>()),\n create: createAction('[Dataset] Create Dataset', props<{ dataset: Dataset; route: string }>()),\n update: createAction('[Dataset] Update Dataset', props<{ dataset: Dataset; route?: string }>()),\n confirmDatasetDeletion: createAction(\n '[Dataset] Confirm deletion',\n props<{ name: string; route: string; addRoute: string }>()\n ),\n delete: createAction('[Dataset] Delete Dataset', props<{ name: string; route: string; addRoute: string }>()),\n deleted: createAction('[Dataset] Dataset is deleted call to admin', props<{ addRoute: string }>()),\n\n selectDataset: createAction('[Dataset] Open Dataset details', props<{ dataset: Dataset }>()),\n unselectDataset: createAction('[Dataset] Unselect Dataset'),\n getDatasetById: createAction('[Dataset] Get Dataset by ID', props<{ id: string }>()),\n getDatasetByIdSuccess: createAction('[Dataset] Get Dataset by Id Success', props<{ data: Dataset }>()),\n getDatasetByIdFailure: createAction('[Dataset] Get Dataset by Id Failure', props<{ error: any }>()),\n openNewDataset: createAction('[Dataset] Open New Dataset', props<{ route: string }>()),\n setMissingGroups: createAction('[Dataset] Set Missing Groups', props<{ missingGroups?: MissingGroupsByEntity }>()),\n addCategory: createAction('[Dataset] Add Category', props<{ category: Category }>())\n};\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AdminDatasetActions } from '../../admin-dataset/store/admin-dataset.actions';\nimport {\n Category,\n CategoryActions,\n CategorySelectors,\n DataSourceActions,\n DataSourceSelectors\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { v4 as uuid } from 'uuid';\nimport { AdminClassActions } from '../../admin-classes/store/admin-class.actions';\n\n@Component({\n selector: 'pry-add-category-modal',\n templateUrl: './add-category-modal.component.html'\n})\nexport class AddCategoryModalComponent implements OnInit {\n categories$!: Observable<Category[]>;\n filteredCategories$!: Observable<Category[]>;\n catToAdd = {\n id: uuid(),\n name: ''\n };\n search$ = new BehaviorSubject<string | undefined>(undefined);\n\n @Input({ required: true }) entityType!: 'attribute' | 'dataset';\n @Output() closeModal = new EventEmitter<void>();\n @Output() category = new EventEmitter<Category>();\n\n actions = {\n attribute: {\n load: () => this.store.dispatch(CategoryActions.load({})),\n select: () => this.store.select(CategorySelectors.categories),\n add: (category: Category) => this.store.dispatch(AdminClassActions.saveCategory({ category }))\n },\n dataset: {\n load: () => this.store.dispatch(DataSourceActions.dataset.getCategories()),\n select: () => this.store.select(DataSourceSelectors.categories),\n add: (category: Category) => this.store.dispatch(AdminDatasetActions.addCategory({ category }))\n }\n };\n\n constructor(private store: Store<any>) {}\n\n ngOnInit() {\n this.loadCategories();\n this.categories$ = this.selectCategories();\n this.filteredCategories$ = combineLatest([this.categories$, this.search$]).pipe(\n map(([categories, search]) =>\n search\n ? categories.filter((category) => category.name.toLowerCase().includes(search?.toLowerCase()))\n : categories\n )\n );\n }\n\n loadCategories(): void {\n this.actions[this.entityType].load();\n }\n\n selectCategories(): Observable<Category[]> {\n return this.actions[this.entityType].select();\n }\n\n addCategory(): void {\n this.actions[this.entityType].add(this.catToAdd);\n this.selectCategory(this.catToAdd);\n }\n\n selectCategory(category: Category) {\n this.category.emit(category);\n this.closeModal.emit();\n }\n\n search($event: Event) {\n this.search$.next(($event.target as HTMLInputElement).value);\n }\n}\n","<div class=\"o-modal o-modal--selector\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.admin.shared.categoryModal.' + entityType + '.select' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeModal.emit()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <form (ngSubmit)=\"addCategory()\">\n <div class=\"m-form-label-field selector\">\n <label class=\"a-label\" for=\"name-search\">{{\n '@pry.admin.shared.categoryModal.' + entityType + '.searchOrCreate' | i18n\n }}</label>\n <input\n type=\"text\"\n class=\"a-form-field\"\n (input)=\"search($event)\"\n [(ngModel)]=\"catToAdd.name\"\n name=\"name\"\n id=\"name-search\"\n />\n </div>\n <div>\n <h3>\n {{ '@pry.admin.shared.categoryModal.' + entityType + '.name' | i18n }}\n </h3>\n <div class=\"u-display-flex -column\">\n @for (category of filteredCategories$ | async; track category.id) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--ghost -no-padding u-display-flex -justify-start -width-full\"\n (click)=\"selectCategory(category)\"\n >\n <span class=\"u-visually-hidden\">{{\n '@pry.admin.shared.categoryModal.' + entityType + '.selectIt' | i18n\n }}</span>\n {{ category.name }}\n </button>\n }\n </div>\n </div>\n @if ((categories$ | async)?.length === 0) {\n <span>{{ '@pry.admin.shared.categoryModal.noCategories' | i18n }}</span>\n } @else if ((filteredCategories$ | async)?.length === 0) {\n <div class=\"u-display-flex -column\">\n <p class=\"a-p\">\n <strong>{{ catToAdd.name }} </strong>\n <span [innerHTML]=\"'@pry.admin.shared.categoryModal.' + entityType + '.add' | i18n\"></span>\n </p>\n <button type=\"submit\" class=\"a-btn a-btn--primary u-self-center\">\n {{ '@pry.admin.shared.categoryModal.' + entityType + '.create' | i18n }}\n </button>\n </div>\n }\n </form>\n</div>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Category,\n CategoryActions,\n CategorySelectors,\n Class,\n DEFAULT_CATEGORY_UUID,\n Field,\n FIELD_I18N,\n FieldActions,\n FieldSelectors,\n PryDialogService,\n PryI18nService,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { combineLatest, debounceTime, distinctUntilChanged, map, Observable, startWith } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\nimport { noWhitespaceValidator } from '../../../../components/admin.component';\nimport { AdminActions } from '../../../../store/admin.actions';\nimport { AdminClassActions } from '../../store/admin-class.actions';\nimport { AddCategoryModalComponent } from '../../../shared/add-category-modal/add-category-modal.component';\n\n@Component({\n selector: 'pry-admin-attributes-form',\n templateUrl: './admin-attributes-form.component.html'\n})\nexport class AdminAttributesFormComponent extends SubscriptionnerDirective implements OnInit, OnDestroy {\n attrForm: UntypedFormGroup;\n\n attributeNames?: string[];\n attributeTechnicalNames?: string[];\n nameAlreadyExists$?: Observable<boolean>;\n technicalNameAlreadyExists$?: Observable<boolean>;\n nameAlreadyExists = false;\n technicalNameAlreadyExists = false;\n\n fields$: Observable<Field[]>;\n selectedFieldTypeDescription$!: Observable<string>;\n categories$: Observable<Category[]>;\n\n @Input() selectedClass?: Class;\n @Input() interClass?: Class;\n @Input() selectedAttribute?: Attribute;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder,\n private i18nService: PryI18nService,\n private dialog: PryDialogService\n ) {\n super();\n this.store.dispatch(FieldActions.load({}));\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.store.dispatch(CategoryActions.load({}));\n this.categories$ = this.store.select(CategorySelectors.categories);\n\n this.attrForm = this.formBuilder.group({\n id: [uuid()],\n technicalName: [\n '',\n [Validators.required, Validators.minLength(2), Validators.maxLength(100), noWhitespaceValidator]\n ],\n name: ['', [Validators.maxLength(50), noWhitespaceValidator]],\n description: [{ value: '', disabled: true }],\n field: ['', [Validators.required]],\n category: [DEFAULT_CATEGORY_UUID],\n multiValued: [false]\n });\n }\n\n ngOnInit(): void {\n this.attributeNames = this.interClass?.attributes.map((attr: Attribute) => attr.name);\n this.attributeTechnicalNames = this.interClass?.attributes.map((attr: Attribute) => attr.technicalName);\n\n if (this.selectedClass) {\n this.attributeNames = this.selectedClass.attributes.map((attr: Attribute) => attr.name);\n this.attributeTechnicalNames = this.selectedClass.attributes.map((attr: Attribute) => attr.technicalName);\n\n if (this.selectedAttribute) {\n this.attrForm.patchValue({\n id: this.selectedAttribute.id,\n technicalName: this.selectedAttribute.technicalName,\n name: this.selectedAttribute.name ?? this.selectedAttribute.technicalName,\n field: this.selectedAttribute.field,\n category: this.selectedAttribute.category\n });\n this.attrForm.controls['field'].disable();\n }\n }\n\n if (this.attributeNames) {\n this.nameAlreadyExists$ = this.attrForm\n .get('name')!\n .valueChanges.pipe(\n map((value) => !!this.attributeNames?.includes(value) && value != this.selectedAttribute?.name)\n );\n this.subscriptions.add(this.nameAlreadyExists$.subscribe((value) => (this.nameAlreadyExists = value)));\n }\n\n this.subscriptions.add(\n this.attrForm\n .get('technicalName')!\n .valueChanges.pipe(distinctUntilChanged(), debounceTime(500))\n .subscribe((value) => {\n this.attrForm.patchValue({\n name: value.slice(0, 50)\n });\n })\n );\n\n if (this.attributeTechnicalNames) {\n this.technicalNameAlreadyExists$ = this.attrForm\n .get('technicalName')!\n .valueChanges.pipe(\n map(\n (value) => !!this.attributeTechnicalNames?.includes(value) && value != this.selectedAttribute?.technicalName\n )\n );\n this.subscriptions.add(\n this.technicalNameAlreadyExists$.subscribe((value) => {\n this.technicalNameAlreadyExists = value;\n })\n );\n }\n\n this.selectedFieldTypeDescription$ = combineLatest([\n this.attrForm.get('field')!.valueChanges.pipe(startWith(this.attrForm.get('field')?.value)),\n this.fields$\n ]).pipe(\n map(([selectedFieldId, fields]) =>\n !selectedFieldId\n ? ''\n : FIELD_I18N.information +\n fields.find(\n (field) => field.id === (typeof selectedFieldId === 'string' ? selectedFieldId : selectedFieldId.id)\n )?.type\n )\n );\n }\n\n goBack() {\n const redirectPath = this.selectedAttribute ? '../..' : '..';\n const path = this.router.createUrlTree([redirectPath], { relativeTo: this.route });\n this.store.dispatch(AdminActions.routeTo({ path: path.toString() }));\n }\n\n addAttribute() {\n this.attrForm.patchValue({\n name: this.attrForm.value.name.trim()\n });\n\n if (!this.attrForm.value.name) {\n this.attrForm.patchValue({\n name: this.attrForm.value.technicalName.slice(0, 50)\n });\n }\n\n if (this.attrForm.valid) {\n let attrToSave = this.attrForm.getRawValue() as Attribute;\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n\n if (this.selectedAttribute) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n\n if (this.selectedClass) {\n this.store.dispatch(\n AdminClassActions.saveAttributeForClass({\n classId: this.selectedClass.id,\n attribute: attrToSave,\n route: path.toString()\n })\n );\n } else if (this.interClass) {\n let interAttribute = Object.assign([], this.interClass.attributes);\n let interClassUpdated = { ...this.interClass };\n interAttribute.push(attrToSave);\n interClassUpdated.attributes = interAttribute;\n this.store.dispatch(AdminClassActions.saveInterClass({ class: interClassUpdated, route: path.toString() }));\n }\n }\n }\n\n openModal() {\n const ref = this.dialog.open(AddCategoryModalComponent);\n ref.component!.entityType = 'attribute';\n this.subscriptions.add(\n ref.component!.category.subscribe((category) => {\n this.attrForm.patchValue({\n category: category.id\n });\n })\n );\n this.subscriptions.add(ref.component!.closeModal.subscribe(() => ref.close()));\n }\n\n protected readonly FIELD_I18N = FIELD_I18N;\n}\n","<form class=\"o-form\" [formGroup]=\"attrForm\" (ngSubmit)=\"addAttribute()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_technicalName\">{{ '@pry.admin.classes.attributes.technicalName' | i18n }}</label>\n <input id=\"attr_technicalName\" type=\"text\" class=\"a-form-field\" formControlName=\"technicalName\" required />\n @if (technicalNameAlreadyExists$ | async) {\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n }\n @if (attrForm.get('technicalName')?.invalid) {\n <div>\n @if (attrForm.get('technicalName')?.dirty && attrForm.get('technicalName')?.hasError('required')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n }\n @if (attrForm.get('technicalName')?.hasError('minlength')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.minLength' | i18n: { len: 2 }\n }}</label>\n </div>\n }\n @if (attrForm.get('technicalName')?.hasError('maxlength')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.maxLength' | i18n: { len: 100 }\n }}</label>\n </div>\n }\n @if (\n attrForm.get('technicalName')?.hasError('whitespace') && !attrForm.get('technicalName')?.hasError('minlength')\n ) {\n <div\n >\n <label class=\"a-label a-label--help -error\" for=\"attr_technicalName\">{{\n '@pry.admin.noWhitespace' | i18n\n }}</label>\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"attr_name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</label>\n <input id=\"attr_name\" type=\"text\" class=\"a-form-field\" formControlName=\"name\" />\n @if (nameAlreadyExists$ | async) {\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.exists' | i18n\n }}</label>\n }\n @if (attrForm.get('name')?.invalid) {\n <div>\n @if (attrForm.get('name')?.hasError('maxlength')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{\n '@pry.admin.maxLength' | i18n: { len: 50 }\n }}</label>\n </div>\n }\n @if (attrForm.get('name')?.hasError('whitespace')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"attr_name\">{{ '@pry.admin.noWhitespace' | i18n }}</label>\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"type\">{{ '@pry.admin.classes.attributes.field' | i18n }}</label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"type\"\n formControlName=\"field\"\n [items]=\"fields$ | async\"\n [autocomplete]=\"true\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n required=\"true\"\n [template]=\"templateOption\"\n ></pry-select>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"aligned-option\">\n <p>{{ item.name }}</p>\n @if (item.crs) {\n <div class=\"a-chip\">{{ item.crs }}</div>\n }\n </div>\n </ng-template>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-lg u-self-center u-flex-shrink-0\"\n [attr.data-tooltip]=\"(selectedFieldTypeDescription$ | async) ?? '' | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n @if (attrForm.get('field')?.invalid) {\n <div>\n @if (attrForm.get('field')?.dirty && attrForm.get('field')?.hasError('required')) {\n <div>\n <label class=\"a-label a-label--help -error\" for=\"type\">{{ '@pry.admin.required' | i18n }}</label>\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</label>\n <pry-select\n id=\"category\"\n class=\"form-control\"\n formControlName=\"category\"\n [items]=\"categories$ | async\"\n (click)=\"openModal()\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n *pryAccess=\"{ module: 'admin', page: 'classes', action: 'add_attribute' }\"\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"attrForm.invalid || nameAlreadyExists || technicalNameAlreadyExists\"\n [innerHTML]=\"(selectedAttribute ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n</form>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Attribute, Class, ClassActions, ClassSelectors } from '@provoly/dashboard';\nimport { map, Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-admin-attributes-edit',\n templateUrl: './admin-attributes-edit.component.html'\n})\nexport class AdminAttributesEditComponent implements OnInit {\n selectedClass$?: Observable<Class>;\n selectedAttribute$?: Observable<Attribute | undefined>;\n\n constructor(\n private store: Store<any>,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.selectedClass$ = this.store.select(ClassSelectors.classById(params['id']));\n this.selectedAttribute$ = this.selectedClass$.pipe(\n map((selectedClass) => selectedClass.attributes.find((attr) => attr.id == params['attrId']))\n );\n });\n }\n}\n","@if (selectedClass$ | async; as selectedClass) {\n <div class=\"classes-container\">\n @if (selectedAttribute$ | async; as selectedAttribute) {\n <div>\n <h2 class=\"classes__title\" [innerHTML]=\"'@pry.admin.classes.attributes.edit' | i18n\"></h2>\n <pry-admin-attributes-form\n [selectedClass]=\"selectedClass\"\n [selectedAttribute]=\"selectedAttribute\"\n ></pry-admin-attributes-form>\n </div>\n }\n </div>\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassActions, ClassSelectors } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminClassSelectors } from '../../store/admin-class.selectors';\n\n@Component({\n selector: 'pry-admin-attributes-new',\n templateUrl: './admin-attributes-new.component.html'\n})\nexport class AdminAttributesNewComponent implements OnInit {\n selectedClass$?: Observable<Class>;\n interClass$?: Observable<Class | undefined>;\n\n constructor(\n private store: Store<any>,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.selectedClass$ = this.store.select(ClassSelectors.classById(params['id']));\n this.interClass$ = this.store.select(AdminClassSelectors.interClass);\n });\n }\n}\n","@if (selectedClass$ | async; as selectedClass) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">\n {{ '@pry.admin.classes.title' | i18n: { class: selectedClass.name } }}\n </h1>\n <h2>\n {{ '@pry.admin.classes.attributes.add' | i18n }}\n </h2>\n <pry-admin-attributes-form [selectedClass]=\"selectedClass\"></pry-admin-attributes-form>\n </div>\n}\n\n@if (interClass$ | async; as selectedClass) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\" [innerHTML]=\"'@pry.admin.classes.attributes.add' | i18n: { class: selectedClass.name }\"></h1>\n <pry-admin-attributes-form [interClass]=\"selectedClass\"></pry-admin-attributes-form>\n </div>\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, OnDestroy, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n AttributeExtended,\n BaseToolboxAction,\n Category,\n CategoryActions,\n CategorySelectors,\n Class,\n ClassActions,\n ClassSelectors,\n ConfigActions,\n Field,\n FieldActions,\n FieldSelectors,\n PryI18nService\n} from '@provoly/dashboard';\nimport { combineLatest, filter, map, Observable, of, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminClassActions } from '../store/admin-class.actions';\nimport { AdminClassSelectors } from '../store/admin-class.selectors';\n\n@Component({\n selector: 'pry-admin-classes-view',\n templateUrl: './admin-classes-view.component.html'\n})\nexport class AdminClassesViewComponent implements OnInit, OnDestroy {\n selectedclass$?: Observable<Class>;\n interClass$?: Observable<Class | undefined>;\n attributes$: Observable<Attribute[]> = of([]);\n fields$: Observable<Field[]> = of([]);\n categories$: Observable<Category[]> = of([]);\n attributesExtended$?: Observable<AttributeExtended[]>;\n selectedAttributeId$: Observable<string | undefined>;\n\n interClass?: Class;\n\n sub = new Subscription();\n sortActive? = 'name';\n sortDirection? = 'asc';\n selectedClassId = '';\n backPath: string;\n addAttributePath: string;\n openModal$: Observable<boolean>;\n private overlayRef?: OverlayRef;\n @ViewChild('confirmationModal', { read: TemplateRef }) confirmationModal!: TemplateRef<any>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private i18n: PryI18nService\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(CategoryActions.load({}));\n this.store.dispatch(AdminClassActions.unselectAttribute());\n\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.categories$ = this.store.select(CategorySelectors.categories);\n this.selectedAttributeId$ = this.store.select(AdminClassSelectors.selectedAttributeId);\n this.backPath = this.router.createUrlTree(['..'], { relativeTo: this.route }).toString();\n this.addAttributePath = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route }).toString();\n this.openModal$ = this.store.select(AdminClassSelectors.openModal);\n }\n\n ngOnInit(): void {\n this.interClass$ = this.store.select(AdminClassSelectors.interClass);\n this.sub.add(this.interClass$.subscribe((c) => (this.interClass = c)));\n if (this.interClass) {\n if (this.interClass.attributes.length > 0) {\n this.attributes$ = of(this.interClass.attributes);\n this.attributesExtended$ = this.getAttrExtended();\n }\n } else {\n this.route.params.subscribe((params) => {\n this.selectedClassId = params['id'];\n this.selectedclass$ = this.store.select(ClassSelectors.classById(this.selectedClassId));\n this.attributes$ = this.selectedclass$.pipe(map((selectedClass) => selectedClass.attributes));\n this.attributesExtended$ = this.getAttrExtended();\n });\n }\n this.setClassActions();\n this.sub.add(\n this.openModal$.subscribe((open) => {\n if (open) {\n this.showModal();\n } else {\n this.closeModal();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n private getAttrExtended() {\n return combineLatest([this.attributes$, this.categories$]).pipe(\n filter(([attributes, categories]) => categories.length > 0),\n map(([attributes, categories]) => {\n return attributes.map(\n (attr: Attribute) =>\n ({\n ...attr,\n fieldName: attr.field.name,\n categoryName: attr.category\n ? categories.find((category) => category.id === attr.category)?.name ??\n this.i18n.instant('@pry.admin.attributes.unknownCategory')\n : this.i18n.instant('@pry.admin.attributes.noCategory')\n }) as AttributeExtended\n );\n })\n );\n }\n\n private setClassActions() {\n this.store.dispatch(AdminActions.resetActions());\n let actions = [\n {\n action: AdminClassActions.back({ path: this.backPath }),\n label: 'back',\n icon: 'arrow_back'\n },\n {\n action: AdminActions.routeTo({ path: this.addAttributePath }),\n label: 'addAttribute',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ] as BaseToolboxAction[];\n\n if (this.interClass) {\n actions.push({\n action: AdminClassActions.openModal(),\n label: 'addClass',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n });\n }\n\n this.store.dispatch(\n AdminActions.mainActions({\n actions: actions\n })\n );\n }\n\n private setAttributeActions(attrId: string) {\n this.sub.add(\n this.selectedAttributeId$.subscribe((attributeId) => {\n let editPath = this.router.createUrlTree([attributeId, 'edit'], { relativeTo: this.route }).toString();\n\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminClassActions.back({ path: this.backPath }),\n label: 'back',\n icon: 'arrow_back'\n },\n {\n action: AdminActions.routeTo({ path: editPath }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'fields',\n actionAccess: 'write'\n },\n {\n action: AdminClassActions.confirmAttributeDeletion({\n classId: this.selectedClassId,\n attrId: attrId,\n backPath: this.backPath,\n addAttrPath: this.addAttributePath\n }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n })\n );\n })\n );\n }\n\n selectAttr(attr: AttributeExtended) {\n this.store.dispatch(AdminClassActions.selectAttribute({ attrExtended: attr }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminAttributesSelectComponent' }));\n this.setAttributeActions(attr.id);\n this.store.dispatch(AdminActions.fetchAttributeAssociations({ id: attr.id }));\n }\n\n dispatchCloseModal() {\n this.store.dispatch(AdminClassActions.closeModal());\n }\n\n showModal() {\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['o-modal-wrapper'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe((_) => this.closeModal());\n this.overlayRef.attach(new TemplatePortal(this.confirmationModal, this.viewContainerRef));\n }\n\n closeModal() {\n this.overlayRef?.dispose();\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n }\n\n saveClass() {\n if (this.interClass) {\n this.store.dispatch(AdminClassActions.saveClass({ class: this.interClass, route: this.backPath }));\n }\n this.dispatchCloseModal();\n }\n}\n","@if ((selectedclass$ | async) || (interClass$ | async); as selectedClass) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">\n {{ '@pry.admin.classes.title' | i18n : { class: selectedClass.name } }}\n </h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.classes.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"technicalName\">{{ '@pry.admin.classes.attributes.technicalName' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.classes.attributes.name' | i18n }}</th>\n <th prySortHeader=\"field\">{{ '@pry.admin.classes.attributes.field' | i18n }}</th>\n <th prySortHeader=\"category\">{{ '@pry.admin.classes.attributes.category' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (attr of attributesExtended$ | async | prySortData : sortActive : sortDirection; track attr) {\n <tr\n (click)=\"selectAttr(attr)\"\n [class.is-selected]=\"(selectedAttributeId$ | async) === attr.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-attr-' + attr.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedAttributeId$ | async) === attr.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-attr-' + attr.id\"\n >\n <span class=\"u-visually-hidden\">{{ attr.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ attr.technicalName }}</td>\n <td>{{ attr.name }}</td>\n <td>{{ attr.fieldName }}</td>\n <td>{{ attr.categoryName }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n}\n\n<ng-template #confirmationModal>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">\n {{ '@pry.admin.classes.createClassConfirmMessage' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"dispatchCloseModal()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--primary\" (click)=\"saveClass()\">\n {{ '@pry.toolbox.manifest.validate' | i18n }}\n </button>\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"dispatchCloseModal()\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassActions, ClassSelectors, ConfigActions, DatasetCount } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { AdminClassActions } from './store/admin-class.actions';\nimport { AdminClassSelectors } from './store/admin-class.selectors';\n\n@Component({\n selector: 'pry-admin-classes',\n templateUrl: './admin-classes.component.html'\n})\nexport class AdminClassesComponent implements OnInit, OnDestroy {\n classes$: Observable<Class[]>;\n selectedClassId$: Observable<string | undefined>;\n datasetCounts$: Observable<DatasetCount[]>;\n classesInputFlows$: Observable<any[]>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n sub = new Subscription();\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.loadDatasetCount());\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(AdminClassActions.unselectClass());\n this.store.dispatch(AdminClassActions.resetInterClass());\n this.store.dispatch(ConfigActions.loadCustomization({}));\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.selectedClassId$ = this.store.select(AdminClassSelectors.selectedClassId);\n this.datasetCounts$ = this.store.select(ClassSelectors.datasetCounts);\n this.classesInputFlows$ = combineLatest([this.classes$, this.datasetCounts$]).pipe(\n map(([classes, datasetCounts]) => {\n return classes.map((item) => ({\n name: item.name,\n id: item.id,\n count: datasetCounts.find((datasetCount) => datasetCount.id === item.id)?.count || 0\n }));\n })\n );\n }\n\n ngOnInit(): void {\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n viewAttributesClass(clazz: Class) {\n this.store.dispatch(AdminClassActions.selectClass({ clazz: clazz }));\n const path = this.router.createUrlTree(['.', clazz.id], { relativeTo: this.route });\n this.store.dispatch(AdminActions.routeTo({ path: path.toString() }));\n }\n\n selectClass(clazz: Class) {\n this.store.dispatch(AdminActions.fetchClassAssociations({ id: clazz.id }));\n this.store.dispatch(AdminClassActions.selectClass({ clazz: clazz }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminClassesSelectComponent' }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.classes.list' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.classes.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"image\">{{ '@pry.admin.classes.image' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.classes.name' | i18n }}</th>\n <th prySortHeader=\"lines\">{{ '@pry.admin.menus.dataset' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (clazz of classesInputFlows$ | async | prySortData: sortActive : sortDirection; track clazz) {\n <tr\n (click)=\"selectClass(clazz)\"\n [class.is-selected]=\"(selectedClassId$ | async) === clazz.id\"\n >\n <td class=\"view-details\">\n <button\n id=\"button-class-{{ clazz.id }}\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedClassId$ | async) === clazz.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-class-' + clazz.id\"\n >\n <span class=\"u-visually-hidden\">{{ clazz.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"clazz.id | translateId: { type: 'class', output: 'icon' } | async\"\n />\n </td>\n <td>{{ clazz.name }}</td>\n <td>{{ clazz.count }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { Dataset, MissingGroupsByEntity } from '@provoly/dashboard';\nimport { createReducer, on } from '@ngrx/store';\nimport { AdminDatasetActions } from './admin-dataset.actions';\n\nexport const datasetFeatureKey = '@pry/admin/datasets';\n\nexport interface AdminDatasetState {\n isLoading: boolean;\n error?: Error;\n selectedDataset: Dataset | null;\n missingGroups?: MissingGroupsByEntity;\n}\n\nexport const initialDatasetState: AdminDatasetState = {\n isLoading: false,\n selectedDataset: null\n};\n\nexport const datasetReducer = createReducer(\n initialDatasetState,\n on(AdminDatasetActions.getDatasetById, (state, action) => ({\n ...state,\n loading: true\n })),\n on(AdminDatasetActions.getDatasetByIdSuccess, (state, action) => ({\n ...state,\n selectedDataset: action.data,\n loading: false\n })),\n on(AdminDatasetActions.getDatasetByIdFailure, (state, action) => ({\n ...state,\n error: action.error,\n loading: false\n })),\n on(AdminDatasetActions.setMissingGroups, (state, { missingGroups }) => ({\n ...state,\n missingGroups\n })),\n on(AdminDatasetActions.unselectDataset, (state) => ({\n ...state,\n selectedDataset: null\n })),\n on(AdminDatasetActions.selectDataset, (state, action) => ({\n ...state,\n selectedDataset: action.dataset\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { AdminDatasetState, datasetFeatureKey } from './admin-dataset.reducer';\n\nconst selectFeature = createFeatureSelector<AdminDatasetState>(datasetFeatureKey);\n\nconst errors = createSelector(selectFeature, (state) => state.error);\nconst isLoading = createSelector(selectFeature, (state) => state.isLoading);\nconst selectedDatasetId = createSelector(selectFeature, (state) => state?.selectedDataset?.id);\nconst selectedDataset = createSelector(selectFeature, (state) => state?.selectedDataset);\nconst selectedDatasetMetadata = createSelector(selectFeature, (state) => state?.selectedDataset?.metadata ?? []);\nconst selectedDatasetMissingGroups = createSelector(selectFeature, (state) => state?.missingGroups);\n\nexport const AdminDatasetSelectors = {\n selectFeature,\n errors,\n isLoading,\n selectedDataset,\n selectedDatasetMetadata,\n selectedDatasetMissingGroups,\n selectedDatasetId\n};\n","import { Component, ElementRef, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n ClassActions,\n ClassSelectors,\n Dataset,\n DataSourceActions,\n DataSourceSelectors,\n DataSourceState,\n getShareLevel,\n PryI18nService\n} from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { IConfigHeader } from '../admin-metadata/shared/list-metadata/pry-list-metadata.component';\nimport { AdminDatasetActions } from './store/admin-dataset.actions';\nimport { AdminDatasetSelectors } from './store/admin-dataset.selectors';\n\n@Component({\n selector: 'pry-admin-dataset',\n templateUrl: './admin-dataset.component.html'\n})\nexport class AdminDatasetComponent {\n @ViewChild('input') input!: ElementRef;\n datasetList$: Observable<Dataset[]>;\n selectedDataset$: Observable<string | undefined>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n value: string = '';\n configHeader: Array<IConfigHeader>;\n labelDatasetSelected: string = '';\n editOpened: boolean = false;\n loading$: Observable<boolean>;\n\n validateAction: () => void;\n cancelAction: () => void;\n\n constructor(\n private store: Store<DataSourceState>,\n private translateService: PryI18nService,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.loading$ = this.store.select(ClassSelectors.loading);\n this.store.dispatch(DataSourceActions.dataset.loadDataset({}));\n this.store.dispatch(ClassActions.load({}));\n this.validateAction = () => this.validateName(this.labelDatasetSelected);\n this.cancelAction = () => this.cancelEdition();\n this.configHeader = [\n { headerType: 'label', label: this.translateService.instant('@pry.admin.dataset.name') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.dataset.oClass') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.dataset.type') }\n ];\n this.datasetList$ = this.store.select(DataSourceSelectors.datasets);\n this.selectedDataset$ = this.store.select(AdminDatasetSelectors.selectedDatasetId);\n this.store.dispatch(AdminDatasetActions.unselectDataset());\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminDatasetActions.openNewDataset({ route: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n cancelEdition(): void {\n this.toggleEditionDataset();\n this.store.dispatch(AdminDatasetActions.unselectDataset());\n }\n\n toggleEditionDataset(): void {\n this.editOpened = !this.editOpened;\n if (this.editOpened) {\n setTimeout(() => {\n this.input.nativeElement.focus();\n }, 10);\n }\n }\n\n validateName(newLabel: string): void {\n this.toggleEditionDataset();\n }\n\n changeValue($event: any) {\n this.labelDatasetSelected = $event;\n }\n\n selectDataset(dataset: Dataset) {\n this.store.dispatch(AdminActions.fetchDatasetAssociations({ id: dataset.id }));\n this.store.dispatch(AdminDatasetActions.selectDataset({ dataset }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminSelectDatasetComponent' }));\n }\n\n protected readonly getShareLevel = getShareLevel;\n}\n","<div class=\"o-base-container u-display-flex -column\">\n <h1 class=\"a-h1\">{{ '@pry.admin.dataset.title' | i18n }}</h1>\n @if (loading$ | async; as loading) {\n <div class=\"a-page-loader -relative\" [style.display]=\"'flex'\">\n <pry-page-loader></pry-page-loader>\n <p>{{ '@pry.widget.target.loading' | i18n }}...</p>\n </div>\n } @else {\n @if (datasetList$ | async; as datasetList) {\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.dataset.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n @for (conf of configHeader; track conf) {\n <th [prySortHeader]=\"conf.label\">{{ conf.label }}</th>\n }\n <th></th>\n </tr>\n </thead>\n <tbody>\n @for (dataset of datasetList | prySortData: sortActive : sortDirection; track dataset) {\n <tr\n (click)=\"selectDataset(dataset)\"\n [class.is-selected]=\"(selectedDataset$ | async) === dataset.id\"\n >\n <td class=\"view-details\">\n <button\n id=\"button-dataset- + {{ dataset.id }}\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedDataset$ | async) === dataset.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-dataset-' + dataset.id\"\n >\n <span class=\"u-visually-hidden\">{{ dataset.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ dataset.name }}</td>\n <td>{{ dataset.oClass | translateId: { type: 'class', output: 'name' } | async }}</td>\n <td>{{ '@pry.admin.dataset.' + dataset.type | i18n }}</td>\n <td>\n <pry-icon\n [iconSvg]=\"getShareLevel(dataset.groups).toLowerCase()\"\n class=\"a-tooltip -tooltip-no-wrap\"\n [attr.data-tooltip]=\"'@pry.share.iconLabel.' + getShareLevel(dataset.groups) | i18n\"\n data-tooltip-position=\"left\"\n [height]=\"17\"\n [width]=\"17\"\n ></pry-icon>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n }\n</div>\n\n<pry-modal\n [titleModal]=\"'@pry.toolbox.rename' | i18n\"\n [validateLabel]=\"'@pry.toolbox.manifest.check' | i18n\"\n [validateAction]=\"validateAction\"\n [cancelLabel]=\"'@pry.toolbox.manifest.close' | i18n\"\n [cancelAction]=\"cancelAction\"\n [opened]=\"this.editOpened\"\n >\n <div class=\"field__input\">\n <span>{{ '@pry.toolbox.manifest.name' | i18n }}</span>\n <input\n type=\"text\"\n (keyup.enter)=\"validateName(input.value)\"\n [ngModel]=\"labelDatasetSelected\"\n (ngModelChange)=\"changeValue($event)\"\n #input\n />\n </div>\n</pry-modal>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Category,\n Class,\n ClassActions,\n ClassSelectors,\n Dataset,\n DataSourceActions,\n DataSourceSelectors,\n DataSourceState,\n PryDatasetType,\n PryDialogService,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AdminDatasetActions } from '../store/admin-dataset.actions';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AddCategoryModalComponent } from '../../shared/add-category-modal/add-category-modal.component';\n\n@Component({\n selector: 'pry-admin-form-dataset',\n templateUrl: './admin-form-dataset.component.html'\n})\nexport class AdminFormDatasetComponent extends SubscriptionnerDirective implements OnInit, OnDestroy {\n @Input() dataset$?: Observable<Dataset | null>;\n\n datasetList$: Observable<Dataset[]>;\n datasetList: Dataset[] = [];\n datasetTypes: { label: string; value: string }[] = [];\n classes$: Observable<Class[]>;\n categories$: Observable<Category[]>;\n\n form!: UntypedFormGroup;\n\n isSameName = false;\n isSubmitted = false;\n\n constructor(\n private store: Store<DataSourceState>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder,\n private dialog: PryDialogService\n ) {\n super();\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(DataSourceActions.dataset.loadDataset({}));\n this.store.dispatch(DataSourceActions.dataset.getCategories());\n this.datasetList$ = this.store.select(DataSourceSelectors.datasets);\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.categories$ = this.store.select(DataSourceSelectors.categories);\n\n this.form = this.formBuilder.group({\n id: [uuidv4()],\n name: ['', [Validators.required, Validators.maxLength(100)]],\n oClass: ['', [Validators.required]],\n type: ['', [Validators.required]],\n description: ['', [Validators.maxLength(500)]],\n categories: [[]]\n });\n }\n\n ngOnInit(): void {\n this.isSameName = false;\n this.subscriptions.add(\n this.datasetList$.subscribe((dataset) => {\n this.datasetList = dataset;\n })\n );\n\n this.datasetTypes = Object.keys(PryDatasetType).map((label) => ({\n label: '@pry.admin.dataset.' + label,\n value: label\n }));\n\n this.subscriptions.add(\n this.dataset$?.subscribe((dataset: Dataset | null) => {\n if (dataset) {\n this.form.patchValue({\n id: dataset.id,\n name: dataset.name,\n oClass: dataset.oClass,\n type: dataset.type,\n description: dataset.description,\n categories: dataset.categories\n });\n\n this.form.controls['oClass'].disable();\n this.form.controls['type'].disable();\n }\n })\n );\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath() }));\n }\n\n getPath() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n if (this.dataset$) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n return path.toString();\n }\n\n changeValueName(value: string) {\n this.isSameName = false;\n }\n\n submit() {\n this.isSubmitted = true;\n if (this.form.valid) {\n this.isSubmitted = false;\n if (this.dataset$) {\n const path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n this.store.dispatch(AdminDatasetActions.update({ dataset: this.form.getRawValue(), route: path.toString() }));\n return;\n }\n const path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.isSameName = !!this.datasetList.find(\n (dataset) => this.form.get('name')?.value.toLowerCase() === dataset.name.toLowerCase()\n );\n if (!this.isSameName) {\n this.store.dispatch(AdminDatasetActions.create({ dataset: this.form.getRawValue(), route: path.toString() }));\n }\n }\n }\n\n openModal() {\n const ref = this.dialog.open(AddCategoryModalComponent);\n ref.component!.entityType = 'dataset';\n this.subscriptions.add(\n ref.component!.category.subscribe((category) => {\n if (!this.form.get('categories')?.value?.some((cat: Category) => cat.id === category.id)) {\n this.form.patchValue({\n categories: [...(this.form.get('categories')?.value ?? []), category]\n });\n }\n })\n );\n this.subscriptions.add(ref.component!.closeModal.subscribe(() => ref.close()));\n }\n}\n","<form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.dataset.name' | i18n }} <span class=\"-error\">*</span>\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n (ngModelChange)=\"changeValueName($event)\"\n [attr.aria-labelledby]=\"isSubmitted && form.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && form.get('name')?.invalid\"\n required\n />\n @if (\n (isSubmitted && form.get('name')?.invalid) ||\n (form.get('name')?.touched && form.get('name')?.hasError('required'))\n ) {\n <label class=\"a-label a-label--help -error\" id=\"name-error\" for=\"name\">{{ '@pry.admin.required' | i18n }}</label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"description-label\" for=\"description\"\n >{{ '@pry.admin.fields.description' | i18n }}\n </label>\n <textarea\n class=\"-resizable-both\"\n formControlName=\"description\"\n name=\"description\"\n id=\"description\"\n maxlength=\"500\"\n ></textarea>\n @if (form.get('description')?.hasError('maxlength')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"item-label\" for=\"class\"\n >{{ '@pry.admin.dataset.oClass' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"class\"\n formControlName=\"oClass\"\n [items]=\"classes$ | async\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"item-label\"\n ></pry-select>\n @if (form.get('oClass')?.touched && form.get('oClass')?.hasError('required')) {\n <label for=\"description\" class=\"a-label a-label--help -error\">\n {{ '@pry.presentation.maxLength' | i18n: { len: '500' } }}\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"user-label\" for=\"type\"\n >{{ '@pry.admin.dataset.type' | i18n }}\n @if (!dataset$) {\n <span>*</span>\n }\n </label>\n <pry-select\n id=\"type\"\n formControlName=\"type\"\n [items]=\"datasetTypes\"\n bindValue=\"value\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n aria-labelledby=\"user-label\"\n ></pry-select>\n </div>\n\n <div class=\"u-display-flex -gap-20\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"tags-label\" for=\"tags\">{{ '@pry.dataset.tags' | i18n }}</label>\n <pry-select\n id=\"tags\"\n formControlName=\"categories\"\n [items]=\"categories$ | async\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n aria-labelledby=\"tags-label\"\n [multiple]=\"true\"\n [closeOnSelect]=\"false\"\n ></pry-select>\n </div>\n <button class=\"a-btn a-btn--primary u-self-center\" type=\"button\" (click)=\"openModal()\">\n {{ '@pry.admin.dataset.addTag' | i18n }}\n </button>\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"goBack()\">\n {{ '@pry.admin.cancel' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" [disabled]=\"form.invalid\">\n {{ (dataset$ ? '@pry.admin.edit' : '@pry.admin.create') | i18n }}\n </button>\n </div>\n</form>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Dataset } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminDatasetActions } from '../store/admin-dataset.actions';\nimport { AdminDatasetSelectors } from '../store/admin-dataset.selectors';\nimport { AdminDatasetState } from '../store/admin-dataset.reducer';\n\n@Component({\n selector: 'pry-admin-edit-dataset',\n templateUrl: './admin-edit-dataset.component.html'\n})\nexport class AdminEditDatasetComponent implements OnInit {\n datasetSelected$: Observable<Dataset | null>;\n\n constructor(\n private store: Store<AdminDatasetState>,\n private route: ActivatedRoute\n ) {\n this.datasetSelected$ = this.store.select(AdminDatasetSelectors.selectedDataset);\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.store.dispatch(AdminDatasetActions.getDatasetById({ id: params['uuid'] }));\n });\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.dataset.edit.title' | i18n }}</h1>\n <pry-admin-form-dataset [dataset$]=\"datasetSelected$\"></pry-admin-form-dataset>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-new-dataset',\n templateUrl: './admin-new-dataset.component.html'\n})\nexport class AdminNewDatasetComponent {}\n","<div class=\"o-base-container\">\n <h4 class=\"admin__title\">{{ '@pry.admin.dataset.add.title' | i18n }}</h4>\n <pry-admin-form-dataset></pry-admin-form-dataset>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { Environment } from '@provoly/dashboard';\n\nexport const EnvironmentActions = {\n loadEnvironments: createAction('[Admin/Environment] Load Environments'),\n loadEnvironmentsSuccess: createAction(\n '[Admin/Environment Api] Load Environments Success',\n props<{ datas: Environment[] }>()\n ),\n loadEnvironmentsFailure: createAction('[Admin/Environment Api] Load Environments Failure', props<{ error: any }>()),\n\n saveEnvironment: createAction('[Admin/Environment] Save Environment', props<{ env: Environment; route: string }>()),\n saveEnvironmentSuccess: createAction('[Admin/Environment Api] Save Environment Success', props<{ route: string }>()),\n saveEnvironmentFailure: createAction('[Admin/Environment Api] Save Environment Failure', props<{ error: any }>()),\n\n selectEnvironment: createAction('[Admin/Environment] Select Environment', props<{ name: string }>()),\n selectEnvironmentSuccess: createAction(\n '[Admin/Environment Api] Select Environment Success',\n props<{ data: Environment }>()\n ),\n selectEnvironmentFailure: createAction('[Admin/Environment Api] Select Environment Failure', props<{ error: any }>()),\n\n updateEnvironment: createAction('[Admin/Environment] Update Environment', props<{ env: Environment }>()),\n updateEnvironmentSuccess: createAction(\n '[Admin/Environment Api] Update Environment Success',\n props<{ env: Environment }>()\n ),\n updateEnvironmentFailure: createAction('[Admin/Environment Api] Update Environment Failure', props<{ error: any }>()),\n\n deleteEnvironment: createAction(\n '[Admin/Environment] Delete Environment',\n props<{ name: string; route: string; addRoute: string }>()\n ),\n deleteEnvironmentSuccess: createAction(\n '[Admin/Environment Api] Delete Environment Success',\n props<{ route: string; addRoute: string }>()\n ),\n deleteEnvironmentFailure: createAction('[Admin/Environment Api] Delete Environment Failure', props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { Environment } from '@provoly/dashboard';\nimport { EnvironmentActions } from './environment.actions';\n\nexport const environmentFeatureKey = '@pry/admin/environment';\n\nexport interface EnvironmentState {\n environments: Environment[];\n loading: boolean;\n currentEnv?: Environment;\n}\n\nexport const initialEnvironmentState: EnvironmentState = {\n environments: [],\n loading: false\n};\n\nexport const environmentReducer = createReducer(\n initialEnvironmentState,\n on(EnvironmentActions.loadEnvironments, (state, action) => ({\n ...state,\n loading: true,\n currentEnv: undefined\n })),\n on(EnvironmentActions.loadEnvironmentsSuccess, (state, action) => ({\n ...state,\n environments: [...action.datas],\n loading: false\n })),\n on(EnvironmentActions.loadEnvironmentsFailure, (state, action) => ({\n ...state,\n loading: false\n })),\n on(EnvironmentActions.saveEnvironment, (state, action) => ({\n ...state,\n loading: true\n })),\n on(EnvironmentActions.saveEnvironmentSuccess, (state, action) => ({\n ...state,\n loading: false\n })),\n on(EnvironmentActions.saveEnvironmentFailure, (state, action) => ({\n ...state,\n loading: false\n })),\n\n on(EnvironmentActions.selectEnvironment, (state, action) => ({\n ...state,\n loading: true\n })),\n on(EnvironmentActions.selectEnvironmentSuccess, (state, action) => ({\n ...state,\n currentEnv: action.data,\n loading: false\n })),\n on(EnvironmentActions.selectEnvironmentFailure, (state, action) => ({\n ...state,\n loading: false\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromEnvironment from './environment.reducer';\n\nconst feature = createFeatureSelector<fromEnvironment.EnvironmentState>(fromEnvironment.environmentFeatureKey);\n\nconst environments = createSelector(feature, (state) => state?.environments);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst currentEnv = createSelector(feature, (state) => state?.currentEnv);\nconst currentEnvName = createSelector(currentEnv, (env) => env?.name);\n\nexport const EnvironmentSelectors = {\n feature,\n environments,\n loading,\n currentEnv,\n currentEnvName\n};\n","import { DatePipe } from '@angular/common';\nimport { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ENV_OPTIONS, Environment } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subject, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { EnvironmentActions } from '../store/environment.actions';\nimport { EnvironmentSelectors } from '../store/environment.selectors';\n\n@Component({\n selector: 'pry-admin-environment-form',\n templateUrl: './admin-environment-form.component.html'\n})\nexport class AdminEnvironmentFormComponent implements OnInit, OnChanges, OnDestroy {\n envNames$?: Observable<string[]>;\n nameAlreadyExists$?: Observable<boolean>;\n private currentEnv$ = new Subject<Environment>();\n sub = new Subscription();\n\n _currentEnv?: Environment;\n envForm: UntypedFormGroup;\n envOptions = ENV_OPTIONS;\n currentTypeTranslation = '';\n isSubmitted = false;\n\n @Input() set currentEnv(val: Environment) {\n this.currentEnv$.next(val);\n this._currentEnv = val;\n }\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder,\n private datePipe: DatePipe\n ) {\n this.envForm = this.formBuilder.group({\n name: ['', [Validators.required, Validators.pattern('^[a-zA-Z0-9_-]*$')]],\n type: [this.envOptions[0].varType],\n value: ['', [Validators.required, Validators.pattern('^[+-]?[0-9]*$')]]\n });\n this.sub.add(\n this.currentEnv$.subscribe((ce) => {\n this._currentEnv = ce;\n const type = ENV_OPTIONS.find((el) => el.varType === ce?.type);\n this.currentTypeTranslation = type ? type.translation : ENV_OPTIONS[0].translation;\n if (!!this._currentEnv) {\n this.envForm.controls['type'].disable({ onlySelf: true });\n } else {\n this.envForm.controls['type'].enable({ onlySelf: true });\n }\n })\n );\n }\n\n ngOnInit(): void {\n if (!this._currentEnv) {\n this.store.dispatch(EnvironmentActions.loadEnvironments());\n this.envNames$ = this.store\n .select(EnvironmentSelectors.environments)\n .pipe(map((envs: Environment[]) => envs.map((env: Environment) => env.name.toLowerCase())));\n\n this.nameAlreadyExists$ = combineLatest([\n this.envForm.get('name')?.valueChanges as Observable<string>,\n this.envNames$\n ]).pipe(map(([value, envNames]) => envNames.includes(value.toLowerCase())));\n this.sub.add(\n this.nameAlreadyExists$.subscribe((value) => {\n if (value) {\n this.envForm.controls['name'].setErrors({ 'same-name': true });\n }\n return value;\n })\n );\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this._currentEnv) {\n this.envForm.patchValue({\n name: this._currentEnv.name,\n type: this._currentEnv.type,\n value:\n this._currentEnv.type === 'DATE'\n ? this.datePipe.transform(this._currentEnv.value, 'yyyy-MM-dd')\n : this._currentEnv.value\n });\n this.onTypeChange(this._currentEnv.type);\n this.envForm.controls['name'].disable();\n }\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath(), params: undefined }));\n }\n\n addEnvironment() {\n this.isSubmitted = true;\n if (this.envForm.valid) {\n this.isSubmitted = false;\n let newEnv = this.envForm.getRawValue();\n if (newEnv.type === 'INTEGER') {\n newEnv.value = parseInt(newEnv.value);\n } else if (newEnv.type === 'DOUBLE') {\n newEnv.value = parseFloat(newEnv.value);\n } else if (newEnv.type === 'DATE') {\n newEnv.value = this.datePipe.transform(newEnv.value, 'yyyy/MM/dd');\n }\n this.store.dispatch(EnvironmentActions.saveEnvironment({ env: newEnv, route: this.getPath() }));\n }\n }\n\n onTypeChange(type: string) {\n if (type === 'INTEGER') {\n this.envForm.controls['value'].setValidators([Validators.required, Validators.pattern('^[+-]?[0-9]*$')]);\n } else if (type === 'DOUBLE') {\n this.envForm.controls['value'].setValidators([\n Validators.required,\n Validators.pattern('[+-]?([0-9]*[.])?[0-9]+')\n ]);\n } else {\n this.envForm.controls['value'].setValidators([Validators.required]);\n }\n }\n\n getPath() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n if (this._currentEnv) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n return path.toString();\n }\n}\n","<div class=\"o-base-container\">\n <form class=\"o-form\" [formGroup]=\"envForm\" (ngSubmit)=\"addEnvironment()\">\n <div class=\"m-form-label-field -width-sm\">\n <label for=\"environment_name\" id=\"name-label\" class=\"a-label\">\n {{ '@pry.admin.environment.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"environment_name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n [required]=\"!_currentEnv\"\n [attr.aria-labelledby]=\"isSubmitted && envForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && envForm.get('name')?.invalid\"\n />\n @if (isSubmitted && envForm.get('name')?.invalid) {\n <label\n id=\"name-error\"\n for=\"environment_name\"\n class=\"a-label a-label--help -error\"\n >\n @if (envForm.get('name')?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (envForm.get('name')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (envForm.get('name')?.hasError('pattern')) {\n <span>{{ '@pry.admin.environment.formatName' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"environment-type\">{{ '@pry.admin.environment.type' | i18n }}</label>\n <pry-select\n id=\"environment-type\"\n formControlName=\"type\"\n [items]=\"envOptions\"\n bindValue=\"varType\"\n bindLabel=\"translation\"\n (ngModelChange)=\"onTypeChange($event)\"\n [isForm]=\"true\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n @if (envForm.value.type === 'DATE') {\n <label class=\"a-label\" for=\"value_date\">\n {{ '@pry.admin.environment.value' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input type=\"date\" id=\"value_date\" class=\"a-form-field\" formControlName=\"value\" required />\n @if (isSubmitted && envForm.get('value')?.invalid && envForm.get('value')?.hasError('required')) {\n <label\n id=\"value_date_error\"\n for=\"value_date\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n } @else {\n <label id=\"value-label\" class=\"a-label\">{{ '@pry.admin.environment.value' | i18n }}</label>\n <input\n id=\"environment_value\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && envForm.get('value')?.invalid ? 'value-label value-error' : 'value-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && envForm.get('value')?.invalid\"\n required\n />\n @if (isSubmitted && envForm.get('value')?.invalid) {\n <label\n id=\"value-error\"\n for=\"environment_value\"\n class=\"a-label a-label--help -error\"\n >\n @if (envForm.get('value')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (envForm.get('value')?.hasError('pattern')) {\n @if (envForm.value.type === 'DOUBLE') {\n <span>{{ '@pry.admin.environment.formatDouble' | i18n }}</span>\n }\n @if (envForm.value.type === 'INTEGER') {\n <span>{{ '@pry.admin.environment.formatInt' | i18n }}</span>\n }\n }\n </label>\n }\n }\n\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"predicate-create a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(_currentEnv ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-environment-new',\n templateUrl: './admin-environment-new.component.html'\n})\nexport class AdminEnvironmentNewComponent {}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.environment.add' | i18n }}</h1>\n <pry-admin-environment-form></pry-admin-environment-form>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Environment } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { EnvironmentActions } from '../store/environment.actions';\nimport { EnvironmentSelectors } from '../store/environment.selectors';\n\n@Component({\n selector: 'pry-admin-environment-update',\n templateUrl: './admin-environment-update.component.html'\n})\nexport class AdminEnvironmentUpdateComponent implements OnInit {\n currentEnv$: Observable<Environment | undefined>;\n\n constructor(\n private store: Store<any>,\n private route: ActivatedRoute\n ) {\n this.currentEnv$ = this.store.select(EnvironmentSelectors.currentEnv);\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) =>\n this.store.dispatch(EnvironmentActions.selectEnvironment({ name: params['name'] }))\n );\n }\n}\n","@if (currentEnv$ | async; as currentEnv) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.environment.edit' | i18n }}</h1>\n <pry-admin-environment-form [currentEnv]=\"currentEnv\"></pry-admin-environment-form>\n </div>\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ENV_OPTIONS, Environment } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { EnvironmentActions } from './store/environment.actions';\nimport { EnvironmentSelectors } from './store/environment.selectors';\n\n@Component({\n selector: 'pry-admin-environment',\n templateUrl: './admin-environment.component.html'\n})\nexport class AdminEnvironmentComponent {\n environments$: Observable<Environment[]>;\n loading$: Observable<boolean>;\n\n sortActive? = 'name';\n sortDirection? = 'asc';\n currentEnvName$: Observable<string | undefined>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.currentEnvName$ = this.store.select(EnvironmentSelectors.currentEnvName);\n this.store.dispatch(EnvironmentActions.loadEnvironments());\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'environment',\n actionAccess: 'write'\n }\n ]\n })\n );\n this.environments$ = this.store.select(EnvironmentSelectors.environments);\n this.loading$ = this.store.select(EnvironmentSelectors.loading);\n }\n\n goToSelectEnv(env: Environment) {\n this.store.dispatch(EnvironmentActions.selectEnvironment({ name: env.name }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminEnvironmentSelectComponent' }));\n }\n\n getTranslationType(type: string) {\n return ENV_OPTIONS.find((el) => el.varType === type)?.translation || 'undefined';\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.environment.list' | i18n }}</h1>\n\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.environment.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.environment.name' | i18n }}</th>\n <th prySortHeader=\"type\">{{ '@pry.admin.environment.type' | i18n }}</th>\n <th prySortHeader=\"value\">{{ '@pry.admin.environment.value' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (env of environments$ | async | prySortData: sortActive : sortDirection; track env) {\n <tr\n (click)=\"goToSelectEnv(env)\"\n [class.is-selected]=\"(currentEnvName$ | async) === env.name\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-env-' + env.name\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(currentEnvName$ | async) === env.name\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-env-' + env.name\"\n >\n <span class=\"u-visually-hidden\">{{ env.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ env.name }}</td>\n <td>{{ getTranslationType(env.type) | i18n }}</td>\n <td>{{ env.value }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { Field } from '@provoly/dashboard';\n\nexport const FieldsActions = {\n updateToolbox: createAction('[Admin/Fields] Update Toolbox Class'),\n failure: createAction('[Admin/Fields] failure action', props<{ error: any }>()),\n\n saveField: createAction('[Admin/Fields] Save Field', props<{ field: Field; route: string }>()),\n saveFieldSuccess: createAction('[Admin/Fields Api] Save Field Success', props<{ route: string }>()),\n updateField: createAction('[Admin/Fields] Update Field', props<{ field: Field; route: string }>()),\n updateFieldSuccess: createAction('[Admin/Fields Api] Update Field Success', props<{ route: string }>()),\n confirmFieldDeletion: createAction(\n '[Admin/Fields] Open Modal for Deleting Field',\n props<{ id: string; path: string }>()\n ),\n deleteField: createAction('[Admin/Fields] Delete Field', props<{ id: string; route: string }>()),\n deleteFieldSuccess: createAction('[Admin/Fields] Delete Field Success'),\n\n selectField: createAction('[Admin/Fields] Select Field', props<{ field: Field }>()),\n unselectField: createAction('[Admin/Fields] unselect Field')\n};\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Field,\n FIELD_I18N,\n FieldActions,\n FieldSelectors,\n FieldType,\n GeometricFieldTypes,\n PryI18nService,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\nimport { noWhitespaceValidator } from '../../../components/admin.component';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { FieldsActions } from '../store/fields.actions';\nimport { dateFormatOptions } from '@provoly/dashboard/components/data-format';\n\nexport const CRS_OPTIONS = [\n { label: 'WGS84 (EPSG:4326)', code: 'EPSG:4326' },\n { label: 'Lambert93 (EPSG: 2154)', code: 'EPSG:2154' }\n];\n\ninterface FieldForm {\n name: FormControl<string>;\n type: FormControl<FieldType>;\n crs?: FormControl<string | undefined>;\n formatOptions?: FormGroup<FormatOptionsForm>;\n}\n\ninterface FormatOptionsForm {\n localeFormat?: FormControl<boolean | null>;\n unit?: FormControl<string | null>;\n decimalPrecision?: FormControl<number | null>;\n dateFormat?: FormControl<string | null>;\n}\n\n@Component({\n selector: 'pry-admin-fields-form',\n templateUrl: './admin-fields-form.component.html'\n})\nexport class AdminFieldsFormComponent extends SubscriptionnerDirective implements OnInit, OnDestroy {\n @Input() currentField?: Field;\n\n form: FormGroup<FieldForm>;\n fieldTypes: FieldType[];\n fieldNames$: Observable<string[]>;\n nameAlreadyExists$?: Observable<boolean>;\n\n dateFormats = Object.keys(dateFormatOptions.value);\n\n goBackPath: string;\n goBackPathEdit: string;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private i18n: PryI18nService\n ) {\n super();\n this.store.dispatch(FieldActions.load({}));\n\n this.fieldNames$ = this.store\n .select(FieldSelectors.fields)\n .pipe(map((fields) => fields.map((field) => field.name.toLowerCase())));\n\n this.fieldTypes = Object.values(FieldType)\n .filter((type) => type !== FieldType.GEOMETRYCOLLECTION)\n .sort((a, b) => {\n const [labelA, labelB] = [this.i18n.instant(FIELD_I18N.label + a), this.i18n.instant(FIELD_I18N.label + b)];\n return labelA.localeCompare(labelB);\n });\n\n this.form = new FormGroup<FieldForm>({\n name: new FormControl('', {\n validators: [Validators.required, Validators.minLength(3), Validators.maxLength(100), noWhitespaceValidator],\n nonNullable: true\n }),\n type: new FormControl(this.fieldTypes[0], { nonNullable: true }),\n formatOptions: new FormGroup({})\n });\n\n this.subscriptions.add(this.type?.valueChanges.subscribe((type) => this.setFormatOptionControls(type)));\n this.form.patchValue({ type: this.fieldTypes[0] });\n\n this.nameAlreadyExists$ = combineLatest([this.name!.valueChanges, this.fieldNames$]).pipe(\n map(([value, fieldNames]) => fieldNames.includes(value.toLowerCase()) && value != this.currentField?.name)\n );\n this.subscriptions.add(\n this.nameAlreadyExists$.subscribe((value) => {\n if (value) {\n this.name?.setErrors({ 'same-name': true });\n }\n return value;\n })\n );\n\n this.goBackPath = this.router.createUrlTree(['..'], { relativeTo: this.route }).toString();\n this.goBackPathEdit = this.router.createUrlTree(['../..'], { relativeTo: this.route }).toString();\n }\n\n ngOnInit(): void {\n if (this.currentField) {\n this.form.patchValue({\n name: this.currentField.name,\n type: this.currentField.type\n });\n this.type!.disable();\n if (this.isGeographicType) {\n this.form.addControl<'crs'>(\n 'crs',\n new FormControl(this.currentField.crs, { validators: [Validators.required], nonNullable: true })\n );\n this.crs?.disable();\n }\n this.setFormatOptionValues();\n }\n this.subscriptions.add(\n this.type!.valueChanges.subscribe((type) => {\n if (this.isGeographicType) {\n this.form.addControl(\n 'crs',\n new FormControl(CRS_OPTIONS[0].code, { validators: [Validators.required], nonNullable: true })\n );\n } else {\n this.form.removeControl('crs');\n }\n })\n );\n }\n\n get name(): AbstractControl<string> | null {\n return this.form.get('name');\n }\n\n get type(): AbstractControl<FieldType> | null {\n return this.form.get('type');\n }\n\n get crs(): AbstractControl<string | undefined> | null {\n return this.form.get('crs');\n }\n\n get formatOptions(): FormGroup<FormatOptionsForm> | null {\n return this.form.get('formatOptions') as FormGroup<FormatOptionsForm>;\n }\n\n get decimalPrecision(): AbstractControl | null | undefined {\n return this.form.get('formatOptions')?.get('decimalPrecision');\n }\n\n get isGeographicType(): boolean {\n return GeometricFieldTypes.includes(this.type?.value as string);\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath(), params: undefined }));\n }\n\n getFormValue() {\n return {\n name: this.name!.value,\n type: this.type!.value,\n crs: this.crs?.value,\n unit: this.formatOptions?.value.unit ?? undefined,\n decimalPrecision: this.formatOptions?.value.decimalPrecision ?? undefined,\n localeFormat: this.formatOptions?.value.localeFormat ?? undefined,\n format: this.formatOptions?.value.dateFormat ?? undefined\n };\n }\n\n submit() {\n this.form.patchValue({\n name: this.name?.value?.trim()\n });\n if (this.form.valid) {\n this.currentField ? this.updateField() : this.saveField();\n }\n }\n\n saveField() {\n this.store.dispatch(\n FieldsActions.saveField({\n field: { id: uuid(), ...this.getFormValue() },\n route: this.getPath()\n })\n );\n }\n\n updateField() {\n this.store.dispatch(\n FieldsActions.updateField({\n field: { id: this.currentField!.id, ...this.getFormValue() },\n route: this.getPath()\n })\n );\n }\n\n setFormatOptionControls(type: FieldType | null) {\n switch (type) {\n case FieldType.INTEGER:\n case FieldType.LONG:\n this.formatOptions?.addControl('localeFormat', new FormControl(true));\n this.formatOptions?.setControl('unit', new FormControl(null));\n this.formatOptions?.removeControl('decimalPrecision');\n this.formatOptions?.removeControl('dateFormat');\n break;\n case FieldType.DECIMAL:\n this.formatOptions?.addControl('localeFormat', new FormControl(true));\n this.formatOptions?.setControl('unit', new FormControl(null));\n this.formatOptions?.setControl('decimalPrecision', new FormControl(2, [Validators.min(0), Validators.max(20)]));\n this.formatOptions?.removeControl('dateFormat');\n break;\n case FieldType.INSTANT:\n this.formatOptions?.removeControl('localeFormat');\n this.formatOptions?.removeControl('unit');\n this.formatOptions?.removeControl('decimalPrecision');\n this.formatOptions?.setControl('dateFormat', new FormControl('DATETIME'));\n break;\n default:\n this.form.setControl('formatOptions', new FormGroup({}));\n break;\n }\n }\n\n setFormatOptionValues() {\n switch (this.currentField?.type) {\n case FieldType.INTEGER:\n case FieldType.LONG:\n this.formatOptions?.patchValue({\n localeFormat: this.currentField?.localeFormat,\n unit: this.currentField?.unit\n });\n break;\n case FieldType.DECIMAL:\n this.formatOptions?.patchValue({\n localeFormat: this.currentField?.localeFormat,\n unit: this.currentField?.unit,\n decimalPrecision: this.currentField?.decimalPrecision\n });\n break;\n case FieldType.INSTANT:\n this.formatOptions?.patchValue({ dateFormat: this.currentField?.format });\n break;\n default:\n break;\n }\n }\n\n private getPath() {\n return this.currentField ? this.goBackPathEdit : this.goBackPath;\n }\n\n protected readonly CRS_OPTIONS = CRS_OPTIONS;\n protected readonly FieldType = FieldType;\n protected readonly FIELD_I18N = FIELD_I18N;\n}\n","<div>\n <form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"name-label\" for=\"field_name\" class=\"a-label\">\n {{ '@pry.admin.fields.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"field_name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"name?.dirty && name?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"name?.dirty && name?.invalid\"\n />\n @if (name?.dirty && name?.invalid) {\n <label id=\"name-error\" for=\"field_name\" class=\"a-label a-label--help -error\">\n @if (name?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (name?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (name?.hasError('minlength')) {\n <span>{{ '@pry.admin.minLength' | i18n: { len: 3 } }}</span>\n }\n @if (name?.hasError('maxlength')) {\n <span>{{ '@pry.admin.maxLength' | i18n: { len: 100 } }}</span>\n }\n @if (name?.hasError('whitespace') && !name?.hasError('minlength')) {\n <span>{{ '@pry.admin.noWhitespace' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_type\">\n {{ '@pry.admin.fields.type' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n id=\"field_type\"\n class=\"u-flex-grow-1\"\n formControlName=\"type\"\n [items]=\"fieldTypes\"\n [i18nPrefix]=\"FIELD_I18N.label\"\n [isForm]=\"true\"\n ></pry-select>\n <div\n class=\"m-info-icon a-tooltip -tooltip-width-lg u-self-center u-flex-shrink-0\"\n [attr.data-tooltip]=\"FIELD_I18N.information + this.type?.value | i18n\"\n data-tooltip-position=\"right\"\n >\n <span>i</span>\n </div>\n </div>\n </div>\n\n @if (isGeographicType) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"crs\">\n {{ '@pry.admin.fields.crs' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <div class=\"u-display-flex\">\n <pry-select\n class=\"-width-sm\"\n formControlName=\"crs\"\n [items]=\"CRS_OPTIONS\"\n bindValue=\"code\"\n bindLabel=\"label\"\n [isForm]=\"true\"\n id=\"crs\"\n ></pry-select>\n </div>\n @if (crs?.dirty && crs?.invalid) {\n <label id=\"crs-error\" for=\"crs\" class=\"a-label a-label--help -error\">\n @if (crs?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n </label>\n }\n </div>\n }\n\n @if (\n type?.value === FieldType.INTEGER ||\n type?.value === FieldType.LONG ||\n type?.value === FieldType.DECIMAL ||\n type?.value === FieldType.INSTANT\n ) {\n <div formGroupName=\"formatOptions\">\n <h3 class=\"a-h3\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n @if (type?.value === FieldType.INTEGER || type?.value === FieldType.LONG || type?.value === FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n } @else if (type?.value === FieldType.INSTANT) {\n <ng-container *ngTemplateOutlet=\"dateFormatOptions\"></ng-container>\n }\n\n <ng-template #numberFormatOptions>\n @if (type?.value === FieldType.DECIMAL) {\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_comma\">{{\n '@pry.admin.fields.formatOptions.decimalPrecision' | i18n\n }}</label>\n <input\n formControlName=\"decimalPrecision\"\n id=\"field_format_comma\"\n type=\"number\"\n min=\"0\"\n class=\"a-form-field\"\n />\n @if (decimalPrecision?.dirty && decimalPrecision?.invalid) {\n <label id=\"decimalPrecision-error\" for=\"crs\" class=\"a-label a-label--help -error\">\n <label class=\"a-label a-label--help -error\" for=\"field_format_comma\">\n {{ '@pry.admin.invalid' | i18n }}\n </label>\n </label>\n }\n </div>\n }\n <div class=\"m-form-label-field -width-sm\">\n <pry-checkbox formControlName=\"localeFormat\" inputId=\"field_format_locale_number_format\" [inhibit]=\"false\">\n {{ '@pry.admin.fields.formatOptions.localeFormat' | i18n }}\n </pry-checkbox>\n </div>\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_unit\">{{ '@pry.admin.fields.formatOptions.unit' | i18n }}</label>\n <input formControlName=\"unit\" id=\"field_format_unit\" type=\"text\" class=\"a-form-field\" />\n </div>\n </ng-template>\n\n <ng-template #dateFormatOptions>\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" for=\"field_format_date\">{{\n '@pry.admin.fields.formatOptions.dateFormat' | i18n\n }}</label>\n <pry-select\n formControlName=\"dateFormat\"\n id=\"field_format_date\"\n [items]=\"dateFormats\"\n [isForm]=\"true\"\n i18nPrefix=\"@pry.admin.fields.formatOptions.dateFormatOptions.\"\n [clearable]=\"true\"\n ></pry-select>\n </div>\n </ng-template>\n </div>\n }\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [disabled]=\"form.invalid\"\n [innerHTML]=\"(currentField ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Field, FieldActions, FieldSelectors } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-admin-fields-edit',\n templateUrl: './admin-fields-edit.component.html'\n})\nexport class AdminFieldsEditComponent implements OnInit {\n currentField$?: Observable<Field | undefined>;\n\n constructor(\n private store: Store<any>,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(FieldActions.load({}));\n }\n\n ngOnInit(): void {\n this.route.params.subscribe(\n (params) => (this.currentField$ = this.store.select(FieldSelectors.fieldById(params['id'])))\n );\n }\n}\n","@if (currentField$ | async; as currentField) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.fields.edit' | i18n }}</h1>\n <pry-admin-fields-form [currentField]=\"currentField\"></pry-admin-fields-form>\n </div>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-fields-new',\n templateUrl: './admin-fields-new.component.html'\n})\nexport class AdminFieldsNewComponent {}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.fields.add' | i18n }}</h1>\n <pry-admin-fields-form></pry-admin-fields-form>\n</div>\n","import { createReducer, on } from '@ngrx/store';\nimport { Field } from '@provoly/dashboard';\nimport { FieldsActions } from './fields.actions';\n\nexport const fieldsFeatureKey = '@pry/admin/fields';\n\nexport interface FieldState {\n loading: boolean;\n selectedField?: Field;\n}\n\nexport const initialFieldState: FieldState = {\n loading: false\n};\n\nexport const fieldReducer = createReducer(\n initialFieldState,\n on(FieldsActions.selectField, (state, action) => ({\n ...state,\n selectedField: action.field\n })),\n on(FieldsActions.unselectField, (state, action) => ({\n ...state,\n selectedField: undefined\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromField from './fields.reducer';\n\nconst feature = createFeatureSelector<fromField.FieldState>(fromField.fieldsFeatureKey);\n\nconst loading = createSelector(feature, (state) => state?.loading);\nconst selectedField = createSelector(feature, (state) => state?.selectedField);\nconst selectedFieldId = createSelector(selectedField, (state) => state?.id);\n\nexport const FieldsSelectors = {\n feature,\n loading,\n selectedField,\n selectedFieldId\n};\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Class, ClassActions, ClassSelectors, FIELD_I18N, FieldActions, FieldSelectors } from '@provoly/dashboard';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { FieldExtended } from './store/admin-fields.model';\nimport { FieldsActions } from './store/fields.actions';\nimport { FieldsSelectors } from './store/fields.selectors';\n\n@Component({\n selector: 'pry-admin-fields',\n templateUrl: './admin-fields.component.html'\n})\nexport class AdminFieldsComponent {\n fields$: Observable<FieldExtended[]>;\n\n sortActive? = 'name';\n sortDirection? = 'asc';\n currentFieldId$: Observable<string | undefined>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(FieldActions.load({}));\n this.store.dispatch(FieldsActions.unselectField());\n this.currentFieldId$ = this.store.select(FieldsSelectors.selectedFieldId);\n\n this.fields$ = combineLatest([\n this.store.select(FieldSelectors.fields),\n this.store.select(ClassSelectors.classes)\n ]).pipe(\n map(([fields, classes]) =>\n fields.map((f) => ({\n ...f,\n attributeCount: classes.reduce(\n (p: number, c: Class) => p + c.attributes.filter((a) => a.field.id === f.id).length,\n 0\n )\n }))\n )\n );\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'fields',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n selectField(field: any) {\n this.store.dispatch(FieldsActions.selectField({ field: field }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminFieldsSelectComponent' }));\n this.store.dispatch(AdminActions.fetchFieldAssociations({ id: field.id }));\n }\n\n protected readonly FIELD_I18N = FIELD_I18N;\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.fields.list' | i18n }}</h1>\n @if (fields$ | async; as fields) {\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.fields.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.fields.name' | i18n }}</th>\n <th prySortHeader=\"type\">{{ '@pry.admin.fields.type' | i18n }}</th>\n <th prySortHeader=\"attributes\">{{ '@pry.admin.fields.attributes' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (field of fields | prySortData: sortActive : sortDirection; track field.id) {\n <tr (click)=\"selectField(field)\" [class.is-selected]=\"(currentFieldId$ | async) === field.id\">\n <td class=\"view-details\">\n <button\n [id]=\"'button-field-' + field.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(currentFieldId$ | async) === field.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-field-' + field.id\"\n >\n <span class=\"u-visually-hidden\">{{ field.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ field.name }}</td>\n <td>{{ FIELD_I18N.label + field.type | i18n }}</td>\n <td>{{ field.attributeCount }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n</div>\n","import { createReducer, on } from '@ngrx/store';\nimport { Associations, BaseMenuItem, BaseToolboxAction } from '@provoly/dashboard';\nimport { AdminActions } from './admin.actions';\n\nexport const adminFeatureKey = '@pry/admin';\n\nexport interface AdminState {\n highlightedMenu: string;\n menus: BaseMenuItem[];\n menuOpen: boolean;\n actions: BaseToolboxAction[];\n subActions: BaseToolboxAction[];\n panelOpen: boolean;\n componentType: string | null;\n selectedAssociation: Associations | undefined;\n}\n\nexport const initialAdminState: AdminState = {\n highlightedMenu: 'environment',\n menus: [\n { menu: 'classes', module: 'admin', page: 'classes', subMenu: 'model' },\n { menu: 'fields', module: 'admin', page: 'fields', subMenu: 'model' },\n { menu: 'dataset', module: 'admin', page: 'dataset', subMenu: 'model' },\n { menu: 'relation-types', module: 'admin', page: 'relation_types', subMenu: 'model' },\n { menu: 'links', module: 'admin', page: 'links', subMenu: 'model' },\n { menu: 'metadata', module: 'admin', page: 'metadata', subMenu: 'model' },\n { menu: 'metadata-rules', module: 'admin', page: 'metadata_rules', subMenu: 'model' },\n { menu: 'user', module: 'admin', page: 'user', subMenu: 'access' },\n { menu: 'metadata-user', module: 'admin', page: 'metadata_user', subMenu: 'access' },\n { menu: 'environment', module: 'admin', page: 'environment', subMenu: 'access' },\n { menu: 'predicates', module: 'admin', page: 'predicates', subMenu: 'access' },\n { menu: 'abac-rules', module: 'admin', page: 'abac_rules', subMenu: 'access' }\n ],\n menuOpen: true,\n actions: [],\n subActions: [],\n panelOpen: true,\n componentType: null,\n selectedAssociation: undefined\n};\n\nexport const adminReducer = createReducer(\n initialAdminState,\n on(AdminActions.highlightMenu, (state, action) => ({\n ...state,\n highlightedMenu: action.menu\n })),\n on(AdminActions.toggleMenu, (state) => ({\n ...state,\n menuOpen: !state.menuOpen\n })),\n on(AdminActions.resetActions, (state) => ({\n ...state,\n actions: [],\n subActions: [],\n componentType: null\n })),\n on(AdminActions.mainActions, (state, action) => ({\n ...state,\n actions: [...action.actions]\n })),\n on(AdminActions.subActions, (state, action) => ({\n ...state,\n subActions: [...action.actions]\n })),\n on(AdminActions.togglePanel, (state, action) => {\n if (!action.panelOpen) {\n return { ...state, panelOpen: action.panelOpen, componentType: null };\n }\n return { ...state, panelOpen: action.panelOpen };\n }),\n on(AdminActions.selectComponentType, (state, action) => ({\n ...state,\n componentType: action.componentType\n })),\n on(AdminActions.fetchAssociationsSuccess, (state, action) => ({\n ...state,\n selectedAssociation: action.association\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport { SubMenu } from '@provoly/dashboard';\nimport * as fromAdmin from './admin.reducer';\n\nconst feature = createFeatureSelector<fromAdmin.AdminState>(fromAdmin.adminFeatureKey);\n\nconst highlightedMenu = createSelector(feature, (state) => state?.highlightedMenu);\nconst menuOpen = createSelector(feature, (state) => state.menuOpen);\nconst menus = createSelector(feature, (state) => state?.menus);\nconst actions = createSelector(feature, (state) => state.actions);\nconst subActions = createSelector(feature, (state) => state.subActions);\nconst panelOpen = createSelector(feature, (state) => state.panelOpen);\nconst componentType = createSelector(feature, (state) => state?.componentType);\nconst subMenus = createSelector(\n feature,\n (state) =>\n state?.menus.reduce((p: SubMenu[], c) => {\n const key = c.subMenu ?? 'none';\n let menu = p.find((menu) => menu.name === key);\n if (!menu) {\n menu = { name: c.subMenu, subMenus: [], icon: c.subMenu === 'model' ? 'data' : 'shield-lock' } as SubMenu;\n p.push(menu);\n }\n menu.subMenus.push(c);\n return p;\n }, []) as SubMenu[]\n);\nconst selectedAssociation = createSelector(feature, (state) => state?.selectedAssociation);\n\nexport const AdminSelectors = {\n feature,\n highlightedMenu,\n menuOpen,\n menus,\n subMenus,\n actions,\n subActions,\n panelOpen,\n componentType,\n selectedAssociation\n};\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Associations } from '@provoly/dashboard';\n\n@Component({\n selector: 'pry-association',\n templateUrl: './association.component.html',\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class PryAssociationComponent {\n @Input() associations?: Associations | null;\n}\n","@for (association of associations?.associations; track association) {\n <div class=\"a-container-type\">\n <p class=\"a-label-type {{ association.type }}\">\n <strong>{{ '@pry.admin.association.' + association.type | i18n }}</strong>\n </p>\n <p>\n {{ association.name }}\n </p>\n </div>\n}\n@if (associations?.usedElsewhere === true) {\n <p class=\"a-p\">\n <strong>{{ '@pry.admin.classes.usedElsewhere' | i18n }}</strong>\n </p>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Associations, Class, DataSourceSelectors } from '@provoly/dashboard';\nimport { map, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminClassActions } from '../store/admin-class.actions';\nimport { AdminClassSelectors } from '../store/admin-class.selectors';\nimport { AdminSelectors } from '../../../store/admin.selectors';\nimport { concatLatestFrom } from '@ngrx/operators';\n\n@Component({\n selector: 'pry-admin-classes-select',\n templateUrl: './admin-classes-select.component.html'\n})\nexport class AdminClassesSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminClassesSelectComponent';\n sub = new Subscription();\n currentClass$: Observable<Class | undefined>;\n linkedObjects$: Observable<any[]>;\n associations$: Observable<Associations | undefined>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.currentClass$ = this.store.select(AdminClassSelectors.selectedClass);\n this.associations$ = this.store.select(AdminSelectors.selectedAssociation);\n this.linkedObjects$ = this.currentClass$.pipe(\n concatLatestFrom((clazz) => this.store.select(DataSourceSelectors.datasets)),\n map(([clazz, datasets]) => datasets.filter((dataset) => dataset.oClass === clazz?.id))\n );\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.currentClass$.pipe(concatLatestFrom((clazz) => this.linkedObjects$)).subscribe(([clazz, linkedObjects]) => {\n if (clazz) {\n const newPath = this.router.createUrlTree(['.', 'classes', 'new'], { relativeTo: this.route });\n const editPath = this.router.createUrlTree(['.', 'classes', clazz.id, 'edit'], { relativeTo: this.route });\n const customizePath = this.router.createUrlTree(['.', 'classes', clazz.id, 'customize'], {\n relativeTo: this.route\n });\n const viewAttributesPath = this.router.createUrlTree(['.', 'classes', clazz.id], {\n relativeTo: this.route\n });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'rename',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n },\n {\n action: AdminClassActions.confirmClassDeletion({ id: clazz.id, path: newPath.toString() }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write',\n disabled: linkedObjects.length > 0\n },\n {\n action: AdminActions.routeTo({ path: customizePath.toString() }),\n label: 'customize.title',\n icon: 'chat-settings',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n },\n {\n action: AdminActions.routeTo({ path: viewAttributesPath.toString() }),\n label: 'edit',\n icon: 'admin',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'classes', 'new'], { relativeTo: this.route });\n this.store.dispatch(AdminClassActions.unselectClass());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (currentClass$ | async; as clazz) {\n <div\n [id]=\"'panel-class-' + clazz.id\"\n [attr.aria-labelledby]=\"'button-class-' + clazz.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.classes.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"classDetails\" name=\"details\"></pry-tab>\n <pry-tab [templateRef]=\"classAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n <ng-template #classDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.name' | i18n }} :\n <strong>{{ clazz.name }}</strong>\n </p>\n <p class=\"a-p u-display-flex -align-center\">\n {{ '@pry.admin.classes.image' | i18n }} :\n <img\n alt=\"\"\n [height]=\"25\"\n [width]=\"25\"\n [src]=\"clazz.id | translateId : { type: 'class', output: 'icon' } | async\"\n />\n </p>\n </ng-template>\n <ng-template #classAssociations>\n @if (associations$ | async; as associations) {\n <div class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n }\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Associations, AttributeExtended, BaseToolboxAction, Class } from '@provoly/dashboard';\nimport { combineLatestWith, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../../store/admin.actions';\nimport { AdminClassActions } from '../../store/admin-class.actions';\nimport { AdminClassSelectors } from '../../store/admin-class.selectors';\nimport { AdminSelectors } from '../../../../store/admin.selectors';\n\n@Component({\n selector: 'pry-admin-attribute-select',\n templateUrl: './admin-attributes-select.component.html'\n})\nexport class AdminAttributesSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminAttributesSelectComponent';\n selectedAttribute$: Observable<AttributeExtended | undefined>;\n sub = new Subscription();\n associations$: Observable<Associations | undefined>;\n\n tab: number = 0;\n private classId?: string;\n private selectedClassId$: Observable<string | undefined>;\n private interClassId$: Observable<string | undefined>;\n interClass$: Observable<Class | undefined>;\n interClass?: Class;\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.selectedAttribute$ = this.store.select(AdminClassSelectors.selectedAttribute);\n this.selectedClassId$ = this.store.select(AdminClassSelectors.selectedClassId);\n this.interClass$ = this.store.select(AdminClassSelectors.interClass);\n this.interClassId$ = this.store.select(AdminClassSelectors.interClassId);\n this.associations$ = this.store.select(AdminSelectors.selectedAssociation);\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.interClass$.subscribe((interClass) => {\n this.interClass = interClass;\n })\n );\n this.sub.add(\n this.selectedClassId$.pipe(combineLatestWith(this.interClassId$)).subscribe(([selectClassid, interClassId]) => {\n this.classId = selectClassid ?? interClassId;\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n this.store.dispatch(AdminClassActions.unselectAttribute());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n if (this.classId) {\n const path = this.router.createUrlTree(['.', 'classes', this.classId, 'new'], { relativeTo: this.route });\n const backPath = this.router.createUrlTree(['classes'], { relativeTo: this.route }).toString();\n const savePath = this.router.createUrlTree(['..'], { relativeTo: this.route }).toString();\n const actions: BaseToolboxAction[] = [\n {\n action: AdminClassActions.back({ path: backPath }),\n label: 'back',\n icon: 'arrow_back'\n },\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'addAttribute',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ];\n if (this.interClass) {\n actions.push({\n action: AdminClassActions.saveClass({ class: this.interClass, route: savePath }),\n label: 'addClass',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n });\n }\n this.store.dispatch(\n AdminActions.mainActions({\n actions\n })\n );\n }\n }\n}\n","@if (selectedAttribute$ | async; as attribute) {\n <div\n [id]=\"'panel-attr-' + attribute.id\"\n [attr.aria-labelledby]=\"'button-attr-' + attribute.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.classes.attributes.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"attributeDetails\" name=\"details\"></pry-tab>\n <pry-tab [templateRef]=\"attributeAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n <ng-template #attributeDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.attributes.technicalName' | i18n }} :\n <strong>{{ attribute.technicalName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.attributes.name' | i18n }} :\n <strong>{{ attribute.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.attributes.field' | i18n }} :\n <strong>{{ attribute.fieldName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.attributes.category' | i18n }} :\n <strong>{{ attribute.categoryName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.classes.attributes.multiValued' | i18n }} :\n <strong>{{ attribute.multiValued }}</strong>\n </p>\n </ng-template>\n <ng-template #attributeAssociations>\n @if (associations$ | async; as associations) {\n <div class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n }\n </ng-template>\n </div>\n}\n","import { ChangeDetectorRef, Component, Inject, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Associations,\n DashboardSelectors,\n Dataset,\n DataSourceSelectors,\n MetadataValue,\n MissingGroupsByEntity,\n PRY_ACCESS_TOKEN,\n PryBaseAccess,\n PryI18nService,\n PryShareMode,\n SubscriptionnerDirective\n} from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors, MetaEventType } from '@provoly/dashboard/components/metadata-editor';\nimport { BehaviorSubject, combineLatest, map, Observable, of, Subscription, withLatestFrom } from 'rxjs';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminSelectors } from '../../../store/admin.selectors';\nimport { AdminDatasetActions } from '../store/admin-dataset.actions';\nimport { AdminDatasetSelectors } from '../store/admin-dataset.selectors';\n\ninterface MissingGroups {\n [key: string]: { groups: string[]; entityName: string };\n}\n\n@Component({\n selector: 'pry-admin-select-dataset',\n templateUrl: './admin-select-dataset.component.html'\n})\nexport class AdminSelectDatasetComponent extends SubscriptionnerDirective implements OnInit, OnDestroy {\n static id = 'AdminSelectDatasetComponent';\n selectedDataset$: Observable<Dataset | null>;\n associations$: Observable<Associations | undefined>;\n sub = new Subscription();\n currentTypeTranslation = '';\n datasetMetadata$: Observable<MetadataValue[]>;\n editable$: Observable<boolean>;\n accessGroups: string[] = [];\n selectedDatasetMissingGroups$: Observable<MissingGroupsByEntity | undefined>;\n missingGroups$: Observable<MissingGroups | undefined>;\n shareRadioValue$ = new BehaviorSubject<PryShareMode | undefined>(undefined);\n disableShareButton$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private i18n: PryI18nService,\n private cdr: ChangeDetectorRef,\n @Optional() @Inject(PRY_ACCESS_TOKEN) protected access: PryBaseAccess\n ) {\n super();\n this.store.dispatch(MetadataActions.loadMetadata());\n this.selectedDataset$ = this.store.select(AdminDatasetSelectors.selectedDataset);\n this.datasetMetadata$ = this.store.select(AdminDatasetSelectors.selectedDatasetMetadata);\n this.associations$ = this.store.select(AdminSelectors.selectedAssociation);\n this.editable$ = this.store.select(MetadataSelectors.editable);\n this.selectedDatasetMissingGroups$ = this.store.select(AdminDatasetSelectors.selectedDatasetMissingGroups);\n this.missingGroups$ = this.selectedDatasetMissingGroups$.pipe(\n withLatestFrom(this.store.select(DashboardSelectors.manifestsList)),\n map(([conflict, manifests]) => {\n const result: { [key: string]: { groups: string[]; entityName: string } } = {};\n Object.keys(conflict ?? {}).forEach((entityId) => {\n result[entityId] = {\n groups: conflict?.[entityId] ?? [],\n entityName: manifests.find((m) => m.id === entityId)?.name ?? entityId\n };\n });\n return Object.keys(result).length > 0 ? result : undefined;\n })\n );\n }\n\n ngOnInit(): void {\n this.subscriptions.add(\n combineLatest([this.selectedDataset$, this.store.select(DataSourceSelectors.datasetVersions)])\n .pipe(concatLatestFrom(([dataset, versions]) => (dataset ? this.canModify$(dataset) : of(false))))\n .subscribe(([[dataset, versions], canModify]) => {\n if (dataset) {\n this.accessGroups = dataset.groups ?? [];\n const editPath = this.router.createUrlTree(['.', 'dataset', 'edit', dataset.id], {\n relativeTo: this.route\n });\n if (canModify) {\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'dataset',\n actionAccess: 'write'\n },\n {\n action: AdminDatasetActions.confirmDatasetDeletion({\n name: dataset.id,\n route: this.router.createUrlTree(['.', 'dataset'], { relativeTo: this.route }).toString(),\n addRoute: this.router\n .createUrlTree(['.', 'dataset', 'new'], { relativeTo: this.route })\n .toString()\n }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'dataset',\n actionAccess: 'write',\n disabled: versions.filter((v) => v.dataset.id === dataset.id).length > 0\n }\n ]\n })\n );\n } else {\n this.store.dispatch(\n AdminActions.mainActions({\n actions: []\n })\n );\n }\n }\n })\n );\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'dataset', 'new'], { relativeTo: this.route });\n this.store.dispatch(AdminDatasetActions.unselectDataset());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n removeMetadata(metadata: MetaEventType) {\n this.store.dispatch(\n MetadataActions.deleteDatasetMetadata({ datasetId: metadata.id, metadataId: metadata.metadataId })\n );\n }\n\n addDatasetMetadata(metadata: MetaEventType) {\n this.store.dispatch(\n MetadataActions.addDatasetMetadata({\n datasetId: metadata.id,\n metadataId: metadata.metadataId,\n value: metadata.value\n })\n );\n }\n\n share(dataset: Dataset) {\n this.store.dispatch(AdminDatasetActions.update({ dataset: { ...dataset, groups: this.accessGroups }, route: '' }));\n }\n\n getGroupLabel(groupName: string) {\n const i18nBase = '@pry.components.chipsSelector.share.groups.';\n const label = this.i18n.instant(i18nBase + groupName, undefined, false);\n return label.startsWith(i18nBase) ? groupName : label;\n }\n\n changeGroup($event: string[]) {\n this.accessGroups = $event;\n this.updateDisableButtonValue();\n this.store.dispatch(AdminDatasetActions.setMissingGroups({ missingGroups: undefined }));\n }\n\n updateGroups($event: PryShareMode) {\n this.shareRadioValue$.next($event);\n this.updateDisableButtonValue();\n }\n\n updateDisableButtonValue() {\n if (this.shareRadioValue$.getValue() === PryShareMode.GROUPS && this.accessGroups.length === 0) {\n this.disableShareButton$.next(true);\n } else {\n if (this.disableShareButton$.getValue()) {\n this.disableShareButton$.next(false);\n }\n }\n this.cdr.detectChanges();\n }\n\n canModify$(dataset: Dataset) {\n return this.access ? this.access.canModifyDataset(dataset) : of(false);\n }\n}\n","@if (selectedDataset$ | async; as dataset) {\n <div\n [id]=\"'panel-dataset-' + dataset.id\"\n [attr.aria-labelledby]=\"'button-dataset-' + dataset.id\"\n class=\"o-panel o-pry-admin-dataset-select\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.dataset.datasetDetails' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"datasetDetails\" name=\"dataset.details\"></pry-tab>\n <pry-tab [templateRef]=\"datasetMetadata\" name=\"metadata.title\"></pry-tab>\n <pry-tab [templateRef]=\"datasetAssociations\" name=\"classes.associations\"></pry-tab>\n @if (canModify$(dataset) | async) {\n <pry-tab [templateRef]=\"shareDataset\" name=\"share\"></pry-tab>\n }\n </pry-tab-group>\n <ng-template #datasetDetails>\n <div class=\"u-display-flex -column -gap-20\">\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.name' | i18n }}</h4>\n <span>{{ dataset.name }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.description' | i18n }}</h4>\n @if (dataset.description) {\n <span>{{ dataset.description }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noDescription' | i18n }}</span>\n }\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.customize.name' | i18n }}</h4>\n <span>{{ dataset.oClass | translateId: { type: 'class', output: 'name' } | async }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.dataset.type' | i18n }}</h4>\n <span>{{ '@pry.admin.dataset.' + dataset.type | i18n }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.dataset.tags' | i18n }}</h4>\n @if (dataset.categories && dataset.categories.length > 0) {\n <div class=\"u-display-flex\">\n @for (category of dataset.categories; track category.id) {\n <span class=\"a-chip -md\">{{ category.name }}</span>\n }\n </div>\n } @else {\n <span class=\"-italic\">{{ '@pry.dataset.noTags' | i18n }}</span>\n }\n </div>\n </div>\n </ng-template>\n <ng-template #datasetMetadata>\n <pry-metadata-editor\n [targetId]=\"(selectedDataset$ | async)?.id ?? ''\"\n [isModification]=\"(editable$ | async) ?? false\"\n [metadata]=\"(datasetMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addDatasetMetadata($event)\"\n [type]=\"'meta'\"\n ></pry-metadata-editor>\n </ng-template>\n <ng-template #datasetAssociations>\n @if (associations$ | async; as associations) {\n <div class=\"o-tabs__panels__item__content\">\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations\"></pry-association>\n </div>\n }\n </ng-template>\n <ng-template #shareDataset>\n <div class=\"o-pry-admin-dataset-select__share\">\n <pry-group-share\n [ngModel]=\"dataset.groups\"\n (ngModelChange)=\"changeGroup($event)\"\n (radioValueChange)=\"updateGroups($event)\"\n ></pry-group-share>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary u-self-end\"\n #submit\n (click)=\"share(dataset)\"\n [disabled]=\"disableShareButton$ | async\"\n >\n {{ '@pry.admin.validate' | i18n }}\n </button>\n @if (selectedDatasetMissingGroups$ | async) {\n <h4 class=\"a-h4\">{{ '@pry.admin.dataset.success' | i18n }}</h4>\n }\n @if (missingGroups$ | async; as missingGroups) {\n <div class=\"u-display-flex -column\">\n <span>{{ '@pry.admin.dataset.conflict' | i18n }}</span>\n @for (missing of missingGroups | keyvalue; track missing.key) {\n <div>\n {{ '@pry.admin.dataset.entities.dashboard' | i18n }} <strong>{{ missing.value.entityName }}</strong>\n <div class=\"u-display-flex\">\n @for (group of missing.value.groups; track group) {\n <span class=\"a-chip\">{{ getGroupLabel(group) }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { ENV_OPTIONS, Environment } from '@provoly/dashboard';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { EnvironmentActions } from '../store/environment.actions';\nimport { EnvironmentSelectors } from '../store/environment.selectors';\n\n@Component({\n selector: 'pry-admin-environment-select',\n templateUrl: './admin-environment-select.component.html'\n})\nexport class AdminEnvironmentSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminEnvironmentSelectComponent';\n currentEnv$: Observable<Environment | undefined>;\n sub = new Subscription();\n currentTypeTranslation = '';\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.currentEnv$ = this.store.select(EnvironmentSelectors.currentEnv);\n this.sub.add(\n this.currentEnv$.subscribe((ce) => {\n const type = ENV_OPTIONS.find((el) => el.varType === ce?.type);\n this.currentTypeTranslation = type ? type.translation : ENV_OPTIONS[0].translation;\n })\n );\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.currentEnv$.subscribe((env) => {\n if (env) {\n const editPath = this.router.createUrlTree(['.', 'environment', 'edit', env.name], {\n relativeTo: this.route\n });\n const envsPath = this.router.createUrlTree(['.', 'environment'], { relativeTo: this.route });\n const addPath = this.router.createUrlTree(['.', 'environment', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'environment',\n actionAccess: 'write'\n },\n {\n action: EnvironmentActions.deleteEnvironment({\n name: env.name,\n route: envsPath.toString(),\n addRoute: addPath.toString()\n }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'environment',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'environment', 'new'], { relativeTo: this.route });\n this.store.dispatch(EnvironmentActions.loadEnvironments());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'environment',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (currentEnv$ | async; as env) {\n <div\n [id]=\"'panel-env-' + env.name\"\n [attr.aria-labelledby]=\"'button-env-' + env.name\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.environment.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"environmentDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #environmentDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.environment.name' | i18n }} :\n <strong>{{ env.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.environment.type' | i18n }} :\n <strong>{{ currentTypeTranslation | i18n }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.environment.value' | i18n }} :\n <strong>{{ env.value }}</strong>\n </p>\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { concatLatestFrom } from '@ngrx/operators';\nimport { Store } from '@ngrx/store';\nimport { Associations, ClassSelectors, Field, FIELD_I18N, FieldType } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { FieldsActions } from '../store/fields.actions';\nimport { FieldsSelectors } from '../store/fields.selectors';\nimport { AdminSelectors } from '../../../store/admin.selectors';\n\n@Component({\n selector: 'pry-admin-fields-select',\n templateUrl: './admin-fields-select.component.html'\n})\nexport class AdminFieldsSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminFieldsSelectComponent';\n currentField$: Observable<Field | undefined>;\n associations$: Observable<Associations | undefined>;\n sub = new Subscription();\n attributes$: Observable<{ technicalName: string; classId: string }[]>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.currentField$ = this.store.select(FieldsSelectors.selectedField);\n this.associations$ = this.store.select(AdminSelectors.selectedAssociation);\n this.attributes$ = combineLatest([this.currentField$, store.select(ClassSelectors.classes)]).pipe(\n map(([field, classes]) => {\n return classes\n .map((clazz) =>\n clazz.attributes\n .filter((attribute) => attribute.field.id === field?.id)\n .map((attribute) => ({ technicalName: attribute.technicalName, classId: clazz.id }))\n )\n .flat();\n })\n );\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.currentField$.pipe(concatLatestFrom((field) => this.attributes$)).subscribe(([curField, attributes]) => {\n const back = this.router.createUrlTree(['.', 'fields'], { relativeTo: this.route }).toString();\n let editPath = this.router\n .createUrlTree(['fields', 'edit', curField?.id], { relativeTo: this.route })\n .toString();\n if (curField) {\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'fields',\n actionAccess: 'write'\n },\n {\n action: FieldsActions.confirmFieldDeletion({ id: curField.id, path: back }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write',\n disabled: attributes.length > 0\n }\n ]\n })\n );\n }\n })\n );\n }\n\n closePanel() {\n this.store.dispatch(FieldsActions.unselectField());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n let path = this.router.createUrlTree(['fields', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'fields',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n protected readonly FIELD_I18N = FIELD_I18N;\n protected readonly FieldType = FieldType;\n}\n","@if (currentField$ | async; as field) {\n <div\n [id]=\"'panel-field-' + field.id\"\n [attr.aria-labelledby]=\"'button-field-' + field.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.fields.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"fieldDetails\" name=\"details\"></pry-tab>\n <pry-tab [templateRef]=\"fieldAssociations\" name=\"classes.associations\"></pry-tab>\n </pry-tab-group>\n <ng-template #fieldDetails>\n <div class=\"u-display-flex -column -gap-20\">\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.name' | i18n }}</h4>\n <span>{{ field.name }}</span>\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.type' | i18n }}</h4>\n <span>{{ FIELD_I18N.label + field.type | i18n }}</span>\n </div>\n @if ([FieldType.INTEGER, FieldType.LONG, FieldType.DECIMAL, FieldType.INSTANT].includes(field.type)) {\n <div>\n <h3 class=\"a-h3 -no-padding\">{{ '@pry.admin.fields.formatOptions.title' | i18n }}</h3>\n <div class=\"u-display-flex -column -gap-20\">\n @switch (field.type) {\n @case (FieldType.INTEGER) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.LONG) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n }\n @case (FieldType.DECIMAL) {\n <ng-container *ngTemplateOutlet=\"numberFormatOptions\"></ng-container>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.decimalPrecision' | i18n }}</h4>\n @if (field.decimalPrecision) {\n <span>{{ field.decimalPrecision }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDecimalPrecision' | i18n }}</span>\n }\n </div>\n }\n @case (FieldType.INSTANT) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.dateFormat' | i18n }}</h4>\n @if (field.format) {\n <span>{{ '@pry.admin.fields.formatOptions.dateFormatOptions.' + field.format | i18n }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noDateFormat' | i18n }}</span>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n @if (field.crs) {\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.crs' | i18n }}</h4>\n <span>{{ field.crs }}</span>\n </div>\n }\n </div>\n <ng-template #numberFormatOptions>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.unit' | i18n }}</h4>\n @if (field.unit) {\n <span>{{ field.unit }}</span>\n } @else {\n <span class=\"-italic\">{{ '@pry.admin.fields.formatOptions.noUnit' | i18n }}</span>\n }\n </div>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.fields.formatOptions.localeFormat' | i18n }}</h4>\n <span>{{ (field.localeFormat ? '@pry.action.yes' : '@pry.action.no') | i18n }}</span>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #fieldAssociations>\n <h4 class=\"a-h4\">{{ '@pry.admin.classes.associations' | i18n }}</h4>\n <pry-association [associations]=\"associations$ | async\"></pry-association>\n </ng-template>\n </div>\n}\n","import { createAction, props } from '@ngrx/store';\nimport { MetadataRules, MetadataRulesCreate } from '@provoly/dashboard';\n\nexport enum MetadataRulesActionTypes {\n LOAD = '[MetadataRules] load MetadataRules',\n LOADED = '[MetadataRules] loaded MetadataRules',\n POST = '[MetadataRules] post MetadataRules',\n DELETE = '[MetadataRules] delete MetadataRules',\n OPEN_DETAIL = '[MetadataRules] open MetadataRules details',\n OPEN_NEW_METADATA_RULES = '[MetadataRules] open new MetadataRules',\n UNSELECT_METADATA = '[MetadataRules] unselect MetadataRules',\n FAILURE = '[MetadataRules] failure effect metadataRules'\n}\n\nexport const AdminMetadataRulesActions = {\n load: createAction(MetadataRulesActionTypes.LOAD),\n loaded: createAction(MetadataRulesActionTypes.LOADED, props<{ list: MetadataRules[] }>()),\n failure: createAction(MetadataRulesActionTypes.FAILURE, props<{ error: any }>()),\n\n post: createAction(MetadataRulesActionTypes.POST, props<{ metadata: MetadataRulesCreate }>()),\n delete: createAction(MetadataRulesActionTypes.DELETE, props<{ name: string; route: string; addRoute: string }>()),\n\n unselectMetadata: createAction(MetadataRulesActionTypes.UNSELECT_METADATA),\n\n selectMetadata: createAction(MetadataRulesActionTypes.OPEN_DETAIL, props<{ metadataRules: MetadataRules }>()),\n\n openNewMetadataRules: createAction(MetadataRulesActionTypes.OPEN_NEW_METADATA_RULES, props<{ route: string }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { MetadataRules } from '@provoly/dashboard';\nimport { AdminMetadataRulesActions } from './metadata-rules.actions';\n\nexport const adminMetadataRulesFeatureKey = '@pry/admin/metadata-rules';\n\nexport interface MetadataRulesState {\n loading: boolean;\n errors: any;\n list: MetadataRules[];\n metadataRulesSelected: MetadataRules | null;\n isNameAlreadyExist: boolean;\n}\n\nexport const initialMetadataRulesState: MetadataRulesState = {\n loading: false,\n errors: null,\n list: [],\n metadataRulesSelected: null,\n isNameAlreadyExist: false\n};\n\nexport const adminMetadataRulesReducer = createReducer(\n initialMetadataRulesState,\n on(AdminMetadataRulesActions.load, (state) => ({\n ...state,\n loading: true\n })),\n on(AdminMetadataRulesActions.loaded, (state, action) => ({\n ...state,\n list: action.list,\n loading: false\n })),\n on(AdminMetadataRulesActions.unselectMetadata, (state) => ({\n ...state,\n metadataRulesSelected: null\n })),\n on(AdminMetadataRulesActions.selectMetadata, (state, action) => ({\n ...state,\n metadataRulesSelected: action.metadataRules\n })),\n on(AdminMetadataRulesActions.failure, (state, action) => ({\n ...state,\n error: action.error\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromMetadataRules from './metadata-rules.reducer';\n\nconst feature = createFeatureSelector<fromMetadataRules.MetadataRulesState>(\n fromMetadataRules.adminMetadataRulesFeatureKey\n);\n\nconst metadataRulesList = createSelector(feature, (state) => state?.list);\nconst metadataRulesSelectedId = createSelector(feature, (state) => state?.metadataRulesSelected?.id);\nconst metadataRulesSelected = createSelector(feature, (state) => state?.metadataRulesSelected);\n\nexport const MetadataRulesSelectors = {\n feature,\n metadataRulesList,\n metadataRulesSelected,\n metadataRulesSelectedId\n};\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { MetadataRules } from '@provoly/dashboard';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminMetadataRulesActions } from '../store/metadata-rules.actions';\nimport { MetadataRulesSelectors } from '../store/metadata-rules.selectors';\n\n@Component({\n selector: 'pry-admin-select-metadata-rules',\n templateUrl: './admin-select-metadata-rules.component.html'\n})\nexport class AdminSelectMetadataRulesComponent implements OnInit, OnDestroy {\n static id = 'AdminSelectMetadataRulesComponent';\n metadataRulesSelected$: Observable<MetadataRules | null>;\n sub = new Subscription();\n currentTypeTranslation = '';\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.metadataRulesSelected$ = this.store.select(MetadataRulesSelectors.metadataRulesSelected);\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.metadataRulesSelected$.subscribe((metadata) => {\n if (metadata) {\n const editPath = this.router.createUrlTree(['.', 'metadata-rules', 'edit', metadata.id], {\n relativeTo: this.route\n });\n const metadataPath = this.router.createUrlTree(['.', 'metadata-rules'], { relativeTo: this.route });\n const addPath = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n },\n {\n action: AdminMetadataRulesActions.delete({\n name: metadata.id,\n route: metadataPath.toString(),\n addRoute: addPath.toString()\n }),\n label: 'delete',\n icon: 'delete',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'metadata-rules', 'new'], { relativeTo: this.route });\n this.store.dispatch(AdminMetadataRulesActions.unselectMetadata());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (metadataRulesSelected$ | async; as metadataRules) {\n <div\n [id]=\"'panel-meta-rule-' + metadataRules.id\"\n [attr.aria-labelledby]=\"'button-meta-rule-' + metadataRules.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.metadata.details' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"metadataRuleDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #metadataRuleDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.label' | i18n }} :\n <strong>{{ metadataRules.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-item.name' | i18n }} :\n <strong>{{ metadataRules.metadata.name }}</strong>\n </p>\n @if (metadataRules.metadata.description) {\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-item.description' | i18n }} :\n <strong>{{ metadataRules.metadata.description }}</strong>\n </p>\n }\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-item.type' | i18n }} :\n <strong>{{ metadataRules.metadata.type }}</strong>\n </p>\n @if (metadataRules.metadata.allowedValues) {\n @for (item of metadataRules.metadata.allowedValues; track item) {\n <p class=\"a-p\">{{ item }}</p>\n }\n }\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-user.name' | i18n }} :\n <strong>{{ metadataRules.userProfile.name }}</strong>\n </p>\n @if (metadataRules.userProfile.description) {\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-user.description' | i18n }} :\n <strong>{{ metadataRules.userProfile.description }}</strong>\n </p>\n }\n <p class=\"a-p\">\n {{ '@pry.admin.metadata-rules.metadata-user.type' | i18n }} :\n <strong>{{ metadataRules.userProfile.type }}</strong>\n </p>\n @if (metadataRules.userProfile.allowedValues) {\n @for (item of metadataRules.userProfile.allowedValues; track item) {\n <p class=\"a-p\">{{ item }}</p>\n }\n }\n </ng-template>\n </div>\n}\n","import { createAction, props } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\n\nconst BASE = '[Admin/User]';\nconst BASEAPI = '[Admin/User Api]';\n\nexport const AdminMetadataUserActions = {\n selectMetadata: createAction(`${BASE} Select Metadata`, props<{ id: string }>()),\n unselectMetadata: createAction(`${BASE} unSelect Metadata`),\n\n createMetadata: createAction(`${BASE} create metadata`, props<{ metadata: IMetadata }>()),\n createMetadataSuccess: createAction(`${BASEAPI} create metadata Success`, props<{ metadata: IMetadata }>()),\n createMetadataFailure: createAction(`${BASEAPI} create metadata Failure`, props<{ error: any }>()),\n\n goToDetailsViewMetadata: createAction(`${BASE} go to details view metadata`, props<{ id: string }>()),\n goToDetailsViewMetadataSuccess: createAction(\n `${BASEAPI} go to details view metadata success`,\n props<{ metadata: IMetadata }>()\n ),\n goToDetailsViewMetadataFailure: createAction(\n `${BASEAPI} go to details view metadata failure`,\n props<{ error: any }>()\n ),\n\n goToEditMetadata: createAction(`${BASE} go to edit view`, props<{ id: string; route: string }>()),\n goToEditMetadataSuccess: createAction(\n `${BASE} go to edit view success`,\n props<{ metadata: IMetadata; route: string }>()\n ),\n goToEditMetadataFailure: createAction(`${BASE} go to edit view failure`, props<{ error: any }>()),\n\n updateMetadata: createAction(`${BASE} update meta data`, props<{ metadata: IMetadata }>()),\n updateMetadataSuccess: createAction(`${BASEAPI} update meta data Success`, props<{ metadata: IMetadata }>()),\n updateMetadataFailure: createAction(`${BASEAPI} update meta data Failure`, props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { AdminMetadataUserActions } from './admin-metadata-user.action';\n\nexport const adminMetadataUserFeatureKey = '@pry/admin/metadata/user';\n\nexport interface AdminMetadataUserState {\n loading: boolean;\n editable: boolean;\n errors: any;\n selectedMetadataId: string | null;\n}\n\nexport const initialAdminUserState: AdminMetadataUserState = {\n loading: false,\n editable: false,\n errors: null,\n selectedMetadataId: null\n};\n\nexport const adminMetadataUserReducer = createReducer(\n initialAdminUserState,\n on(AdminMetadataUserActions.selectMetadata, (state, action) => ({\n ...state,\n selectedMetadataId: action.id\n })),\n on(AdminMetadataUserActions.unselectMetadata, (state) => ({\n ...state,\n selectedMetadataId: null\n })),\n on(AdminMetadataUserActions.goToDetailsViewMetadata, (state, action) => ({\n ...state,\n selectedMetadataId: action.id,\n editable: false\n })),\n on(AdminMetadataUserActions.goToEditMetadata, (state, action) => ({\n ...state,\n selectedMetadataId: action.id,\n editable: true\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromAdminUser from './admin-metadata-user.reducer';\n\nconst feature = createFeatureSelector<fromAdminUser.AdminMetadataUserState>(fromAdminUser.adminMetadataUserFeatureKey);\nconst loading = createSelector(feature, (state) => state?.loading);\nconst editable = createSelector(feature, (state) => ({ value: state?.editable }));\nconst selectedMetadataId = createSelector(feature, (state) => state?.selectedMetadataId);\n\nexport const AdminMetadataUserSelectors = {\n feature,\n loading,\n selectedMetadataId,\n editable\n};\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, META_OPTIONS } from '@provoly/dashboard';\nimport { MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminMetadataUserActions } from '../store/admin-metadata-user.action';\nimport { AdminMetadataUserSelectors } from '../store/admin-metadata-user.selector';\n\n@Component({\n selector: 'pry-admin-user-select-metadata',\n templateUrl: './admin-user-select-metadata.component.html'\n})\nexport class AdminUserSelectMetadataComponent implements OnInit, OnDestroy {\n static id = 'AdminUserSelectMetadataComponent';\n metadata$: Observable<IMetadata | undefined>;\n sub = new Subscription();\n currentTypeTranslation = '';\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.metadata$ = combineLatest([\n this.store.select(AdminMetadataUserSelectors.selectedMetadataId),\n this.store.select(MetadataSelectors.userProfile)\n ]).pipe(map(([id, metas]) => metas.find((meta) => meta.id === id)));\n this.sub.add(\n this.metadata$.subscribe((meta) => {\n const type = META_OPTIONS.find((el) => el.varType === meta?.type);\n this.currentTypeTranslation = type ? type.translation : META_OPTIONS[0].translation;\n })\n );\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.metadata$.subscribe((metadata) => {\n if (metadata) {\n const editPath = this.router.createUrlTree(['.', 'metadata-user', 'edit', metadata.id], {\n relativeTo: this.route\n });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'metadata_user',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'user', 'metadata', 'new'], { relativeTo: this.route });\n this.store.dispatch(AdminMetadataUserActions.unselectMetadata());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_user',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (metadata$ | async; as metadata) {\n <div\n [id]=\"'panel-meta-' + metadata.id\"\n [attr.aria-labelledby]=\"'button-meta-' + metadata.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">{{ '@pry.admin.metadata.detailsUser' | i18n }}</h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"userMetadataDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #userMetadataDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.label' | i18n }} :\n <strong>{{ metadata.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.description' | i18n }} :\n <strong>{{ metadata.description ? metadata.description : '' }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.type' | i18n }} :\n <strong>{{ currentTypeTranslation | i18n }}</strong>\n </p>\n @if (metadata.allowedValues) {\n @for (item of metadata.allowedValues; track item) {\n <p class=\"a-p\">{{ item }}</p>\n }\n }\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, META_OPTIONS } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\n\n@Component({\n selector: 'pry-select-metadata',\n templateUrl: './admin-select-metadata.component.html'\n})\nexport class AdminSelectMetadataComponent implements OnInit, OnDestroy {\n static id = 'AdminSelectMetadataComponent';\n metadata$: Observable<IMetadata | undefined>;\n sub = new Subscription();\n currentTypeTranslation = '';\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.metadata$ = this.store.select(MetadataSelectors.selectedMetadata);\n this.sub.add(\n this.metadata$.subscribe((meta) => {\n const type = META_OPTIONS.find((el) => el.varType === meta?.type);\n this.currentTypeTranslation = type ? type.translation : META_OPTIONS[0].translation;\n })\n );\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.metadata$.subscribe((metadata) => {\n if (metadata) {\n const editPath = this.router.createUrlTree(['.', 'metadata', 'edit', metadata.id], {\n relativeTo: this.route\n });\n this.store.dispatch(\n AdminActions.mainActions({\n actions:\n metadata.readOnly === true\n ? []\n : [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'metadata',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'metadata', 'new'], { relativeTo: this.route });\n this.store.dispatch(MetadataActions.unselectMetadata());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (metadata$ | async; as metadata) {\n <div\n [id]=\"'panel-meta-' + metadata.id\"\n [attr.aria-labelledby]=\"'button-meta-' + metadata.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.metadata.details' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"metadataDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #metadataDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.label' | i18n }} :\n <strong>{{ metadata.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.description' | i18n }} :\n <strong>{{ metadata.description ? metadata.description : '' }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.type' | i18n }} :\n <strong>{{ currentTypeTranslation | i18n }}</strong>\n </p>\n @if (metadata.system !== undefined) {\n <p class=\"a-p\">\n {{ '@pry.admin.metadata.system' | i18n }} :\n <strong>{{ metadata.system ? '✔' : '✘' }}</strong>\n </p>\n }\n @if (metadata.allowedValues) {\n @for (item of metadata.allowedValues; track item) {\n <p>{{ item }}</p>\n }\n }\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { PredicatesActions } from '../store/predicates.actions';\nimport { PredicatesSelectors } from '../store/predicates.selectors';\n\n@Component({\n selector: 'pry-admin-predicates-select',\n templateUrl: './admin-predicates-select.component.html'\n})\nexport class AdminPredicatesSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminPredicatesSelectComponent';\n currentPredicate$: Observable<Predicate | undefined>;\n sub = new Subscription();\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.currentPredicate$ = this.store.select(PredicatesSelectors.currentPredicate);\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.currentPredicate$.subscribe((pred) => {\n if (pred) {\n const editPath = this.router.createUrlTree(['.', 'predicates', 'edit', pred.id], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: editPath.toString() }),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'predicates',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n const path = this.router.createUrlTree(['.', 'predicates', 'new'], { relativeTo: this.route });\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'predicates',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (currentPredicate$ | async; as pred) {\n <div\n [id]=\"'panel-pred-' + pred.id\"\n [attr.aria-labelledby]=\"'button-pred-' + pred.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.predicates.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"predicateDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #predicateDetails>\n <div>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.predicates.name' | i18n }} :\n <strong>{{ pred.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.predicates.value' | i18n }} :\n <strong>{{ pred.value }}</strong>\n </p>\n </div>\n </ng-template>\n </div>\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { RelationType, RelationTypesActions, RelationTypesSelectors } from '@provoly/dashboard';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\n\n@Component({\n selector: 'pry-admin-relation-types-select',\n templateUrl: './admin-relation-types-select.component.html'\n})\nexport class AdminRelationTypesSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminRelationTypesSelectComponent';\n currentRelationType$: Observable<RelationType | undefined>;\n sub = new Subscription();\n\n constructor(private store: Store<AdminRelationTypesSelectComponent>) {\n this.currentRelationType$ = this.store.select(RelationTypesSelectors.selectedRelationType);\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.currentRelationType$.subscribe((relationType) => {\n if (relationType) {\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: RelationTypesActions.openModal(),\n label: 'edit',\n icon: 'edit',\n moduleAccess: 'admin',\n pageAccess: 'relation_types',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(RelationTypesActions.unSelectRelationType());\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: RelationTypesActions.openModal(),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'relation_types',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n}\n","@if (currentRelationType$ | async; as relationType) {\n <div\n [id]=\"'panel-rt-' + relationType.id\"\n [attr.aria-labelledby]=\"'button-rt-' + relationType.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 class=\"a-h3\">\n {{ '@pry.admin.relationTypes.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"relationTypeDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #relationTypeDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.relationTypes.name' | i18n }} :\n <strong>{{ relationType.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.relationTypes.nbLink' | i18n }} :\n <strong>{{ relationType.nbLink }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.relationTypes.dateModification' | i18n }} :\n <strong>{{ relationType.modificationDate | date : 'dd-MM-yyyy, HH:mm:ss' }}</strong>\n </p>\n </ng-template>\n </div>\n}\n","import { createAction, props } from '@ngrx/store';\nimport { UserInfo } from '@provoly/dashboard';\n\nconst BASE = '[Admin/User]';\nconst BASEAPI = '[Admin/User Api]';\n\nexport const AdminUserActions = {\n loadUsers: createAction(`${BASE} Load Users`),\n loadUsersSuccess: createAction(`${BASEAPI} Load Users Success`, props<{ users: Array<UserInfo> }>()),\n loadUsersFailure: createAction(`${BASEAPI} Load Users Failure`, props<{ error: any }>()),\n\n selectUser: createAction(`${BASE} Select User`, props<{ userId: string }>()),\n unselectUser: createAction(`${BASE} unSelect User`),\n\n isEditable: createAction(`${BASE} Is editable`, props<{ editable: boolean }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { UserInfo } from '@provoly/dashboard';\nimport { AdminUserActions } from './admin-user.action';\n\nexport const adminUserFeatureKey = '@pry/admin/user';\n\nexport interface AdminUserState {\n users: Array<UserInfo>;\n selectedUser?: UserInfo;\n editable: boolean;\n}\n\nexport const initialAdminUserState: AdminUserState = {\n users: [],\n editable: false\n};\n\nexport const adminUserReducer = createReducer(\n initialAdminUserState,\n on(AdminUserActions.loadUsersSuccess, (state, action) => ({\n ...state,\n users: [...action.users]\n })),\n on(AdminUserActions.selectUser, (state, action) => ({\n ...state,\n selectedUser: state.users.find((user) => user.id == action.userId),\n editable: false\n })),\n on(AdminUserActions.unselectUser, (state, action) => ({\n ...state,\n selectedUser: undefined\n })),\n on(AdminUserActions.isEditable, (state, action) => ({\n ...state,\n editable: action.editable\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromAdminUser from './admin-user.reducer';\n\nconst feature = createFeatureSelector<fromAdminUser.AdminUserState>(fromAdminUser.adminUserFeatureKey);\nconst users = createSelector(feature, (state) => state?.users);\nconst selectedUser = createSelector(feature, (state) => state?.selectedUser);\nconst editable = createSelector(feature, (state) => state.editable);\n\nexport const AdminUserSelectors = {\n feature,\n users,\n selectedUser,\n editable\n};\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, MetadataUser, UserInfo } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors, MetaEventType } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminUserActions } from '../store/admin-user.action';\nimport { AdminUserSelectors } from '../store/admin-user.selector';\n\nlet nextCompId = 0;\n\n@Component({\n selector: 'pry-admin-user-select',\n templateUrl: './admin-user-select.component.html'\n})\nexport class AdminUserSelectComponent implements OnInit, OnDestroy {\n static id = 'AdminUserSelectComponent';\n userId = '';\n compId: number;\n selectedUser$: Observable<UserInfo | undefined>;\n userMetadata$: Observable<MetadataUser[] | undefined>;\n currentUsermetadatas?: MetadataUser[] | undefined;\n editable$: Observable<boolean>;\n\n metadata$: Observable<IMetadata[]>;\n\n tab: number = 0;\n sub = new Subscription();\n editable = false;\n\n isSubmitted = false;\n\n @Input() profil: boolean = false;\n\n constructor(private store: Store<AdminUserSelectComponent>) {\n this.store.dispatch(MetadataActions.loadUserProfile());\n\n this.selectedUser$ = this.store.select(AdminUserSelectors.selectedUser);\n this.userMetadata$ = this.store.select(MetadataSelectors.selectedUserProfile);\n this.userMetadata$.subscribe((metas) => {\n this.currentUsermetadatas = metas;\n });\n this.metadata$ = this.store.select(MetadataSelectors.userProfile);\n this.editable$ = this.store.select(AdminUserSelectors.editable);\n\n this.compId = nextCompId++;\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.selectedUser$.subscribe((user) => {\n if (user) {\n this.userId = user.id;\n }\n })\n );\n\n this.sub.add(this.editable$.subscribe((edit) => (this.editable = edit)));\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n closePanel() {\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: false }));\n this.store.dispatch(AdminUserActions.unselectUser());\n }\n\n addMetadataUser(metadata: MetaEventType) {\n const newMetadatas = this.getCurrentMetadatasValuesOfUserProfile(metadata.metadataId)\n // removing redundant values\n .filter((val) => val !== metadata.value)\n // removing previous value if editing\n .filter((val) => !metadata.previousValue || val !== metadata.previousValue);\n if (metadata.value) {\n newMetadatas.push(metadata.value);\n }\n this.store.dispatch(\n MetadataActions.addMetadataUser({\n userId: metadata.id,\n metaId: metadata.metadataId,\n value: newMetadatas\n })\n );\n }\n\n removeMetadata(metadata: MetaEventType) {\n this.store.dispatch(MetadataActions.deleteMetadataUser({ userId: this.userId, metadataId: metadata.metadataId }));\n }\n\n private getCurrentMetadatasValuesOfUserProfile(userProfileId: string): any[] {\n return (\n this.currentUsermetadatas\n ?.filter((metadata) => metadata.userProfile.id === userProfileId)\n .map((metadata) => metadata.value) ?? []\n );\n }\n}\n","@if (selectedUser$ | async; as user) {\n <div\n [id]=\"'panel-user-' + user.id\"\n [attr.aria-labelledby]=\"'button-user-' + user.id\"\n class=\"o-panel\"\n >\n <div class=\"o-panel__header\">\n <button type=\"button\" class=\"a-btn a-btn--icon-only\" (click)=\"closePanel()\">\n <span class=\"u-visually-hidden\">{{ '@pry.action.closePanel' | i18n }}</span>\n <pry-icon iconSvg=\"close\"></pry-icon>\n </button>\n <h3 [id]=\"'tab-title-' + compId\" class=\"a-h3\">\n {{ '@pry.admin.userInfo.info' | i18n }}\n </h3>\n </div>\n <pry-tab-group translationStringBase=\"@pry.admin.\">\n <pry-tab [templateRef]=\"userProfile\" name=\"userInfo.profile\"></pry-tab>\n <pry-tab [templateRef]=\"userDetails\" name=\"details\"></pry-tab>\n </pry-tab-group>\n <ng-template #userProfile>\n <pry-metadata-editor\n [targetId]=\"(selectedUser$ | async)?.id ?? ''\"\n [isModification]=\"(editable$ | async) ?? false\"\n [metadata]=\"(userMetadata$ | async) ?? []\"\n (removeMeta)=\"removeMetadata($event)\"\n (addMeta)=\"addMetadataUser($event)\"\n [type]=\"'user'\"\n ></pry-metadata-editor>\n </ng-template>\n <ng-template #userDetails>\n <h4 class=\"a-h4\">{{ '@pry.admin.properties' | i18n }}</h4>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.name' | i18n }} :\n <strong>{{ user?.name }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.familyName' | i18n }} :\n <strong>{{ user.familyName }}</strong>\n </p>\n <p class=\"a-p\">\n {{ '@pry.admin.userInfo.email' | i18n }} :\n <strong>{{ user.email }}</strong>\n </p>\n </ng-template>\n </div>\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { BaseMenuComponent } from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { map } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { AdminSelectors } from '../../store/admin.selectors';\n\n@Component({\n selector: 'pry-admin-menu',\n templateUrl: '../../../lib/core/components/base-menu/base-menu.component.html'\n})\nexport class AdminMenuComponent extends BaseMenuComponent {\n private limit$?: BehaviorSubject<string | undefined>;\n\n constructor(\n store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n super(store);\n this.baseMenuTranslation = '@pry.admin.menus.';\n this.subscriptions.add(this.route.data.subscribe((data) => this.limit$?.next(data['limitMenu'])));\n }\n\n override init() {\n this.menus$ = this.store.select(AdminSelectors.menus);\n this.highlightedMenu$ = this.store.select(AdminSelectors.highlightedMenu);\n this.limit$ = new BehaviorSubject<string | undefined>(undefined);\n this.subMenu$ = combineLatest([this.store.select(AdminSelectors.subMenus), this.limit$]).pipe(\n map(([menus, limit]) => (limit ? menus.filter((menu) => menu.name === limit) : menus))\n );\n }\n\n override select(menu: string): void {\n const path = this.router.createUrlTree([menu], { relativeTo: this.route });\n this.store.dispatch(AdminActions.routeTo({ path: path.toString(), params: undefined }));\n this.store.dispatch(AdminActions.highlightMenu({ menu }));\n }\n}\n","<nav class=\"m-nav-links\">\n @for (sub of subMenu$ | async; track sub) {\n <ul class=\"m-nav-links__list\">\n @for (menu of sub.subMenus; track menu) {\n <li\n *pryAccess=\"{ module: menu.module, page: menu.page, subMenu: menu.subMenu }\"\n class=\"m-nav-links__list__item\"\n >\n <a [routerLink]=\"menu.menu\" class=\"a-btn -width-full\" [routerLinkActive]=\"'is-active'\">\n {{ baseMenuTranslation + menu.menu | i18n }}\n </a>\n </li>\n }\n </ul>\n }\n</nav>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { SubscriptionnerDirective } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { AdminSelectors } from '../../store/admin.selectors';\n\n@Component({\n selector: 'pry-admin-title',\n templateUrl: './admin-title.component.html'\n})\nexport class AdminTitleComponent extends SubscriptionnerDirective {\n menuOpen$: Observable<boolean>;\n limit: any;\n\n constructor(\n private store: Store<any>,\n private route: ActivatedRoute\n ) {\n super();\n this.menuOpen$ = this.store.select(AdminSelectors.menuOpen);\n this.subscriptions.add(this.route.data.subscribe((data) => (this.limit = data['limitMenu'])));\n }\n\n onToggleMenu($event: any) {\n this.store.dispatch(AdminActions.toggleMenu());\n\n // Toggle button aria-pressed\n $event.target.setAttribute(\n 'aria-pressed',\n $event.target.getAttribute('aria-pressed') === 'true' ? 'false' : 'true'\n );\n }\n}\n","<h2 class=\"a-h3\">{{ (!limit ? '@pry.admin.title' : '@pry.admin.menus.' + limit) | i18n }}</h2>\n<button type=\"button\" class=\"a-btn a-btn--toggle\" (click)=\"onToggleMenu($event)\" aria-pressed=\"false\">\n <span class=\"u-visually-hidden\">{{ '@pry.admin.titleIndication' | i18n }}</span>\n</button>\n","import { AfterViewInit, Component, ComponentRef, OnDestroy, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { BaseLayoutComponent, BaseToolboxAction } from '@provoly/dashboard';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { AdminSelectors } from '../../store/admin.selectors';\nimport { AdminClassesSelectComponent } from '../admin-classes/admin-classes-select/admin-classes-select.component';\nimport { AdminAttributesSelectComponent } from '../admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component';\nimport { AdminSelectDatasetComponent } from '../admin-dataset/admin-select-dataset/admin-select-dataset.component';\nimport { AdminEnvironmentSelectComponent } from '../admin-environment/admin-environment-select/admin-environment-select.component';\nimport { AdminFieldsSelectComponent } from '../admin-fields/admin-fields-select/admin-fields-select.component';\nimport { AdminSelectMetadataRulesComponent } from '../admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component';\nimport { AdminUserSelectMetadataComponent } from '../admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component';\nimport { AdminSelectMetadataComponent } from '../admin-metadata/admin-select-metadata/admin-select-metadata.component';\nimport { AdminPredicatesSelectComponent } from '../admin-predicates/admin-predicates-select/admin-predicates-select.component';\nimport { AdminRelationTypesSelectComponent } from '../admin-relation-types/admin-relation-types-select/admin-relation-types-select.component';\nimport { AdminUserSelectComponent } from '../admin-user/admin-user-select/admin-user-select.component';\n\nexport const TEMPLATE_COMPONENTS: any[] = [\n AdminEnvironmentSelectComponent,\n AdminPredicatesSelectComponent,\n AdminSelectMetadataComponent,\n AdminUserSelectMetadataComponent,\n AdminAttributesSelectComponent,\n AdminClassesSelectComponent,\n AdminFieldsSelectComponent,\n AdminUserSelectComponent,\n AdminRelationTypesSelectComponent,\n AdminSelectMetadataRulesComponent,\n AdminSelectDatasetComponent\n];\n\n@Component({\n selector: 'pry-admin-layout',\n templateUrl: './admin-layout.component.html'\n})\nexport class AdminLayoutComponent extends BaseLayoutComponent implements AfterViewInit, OnDestroy {\n baseToolboxTranslation: string;\n actions$: Observable<BaseToolboxAction[]>;\n subActions$: Observable<BaseToolboxAction[]>;\n compoType$?: Observable<string | null>;\n panelOpen$: Observable<boolean>;\n sub = new Subscription();\n @ViewChild('adminPanel', { static: true, read: ViewContainerRef }) adminPanel!: ViewContainerRef;\n componentRef?: ComponentRef<any>;\n limit$ = new BehaviorSubject<string | undefined>(undefined);\n\n constructor(store: Store<any>, router: Router, private route: ActivatedRoute) {\n super(store, router);\n this.baseToolboxTranslation = '@pry.admin.';\n this.actions$ = this.store.select(AdminSelectors.actions);\n this.subActions$ = this.store.select(AdminSelectors.subActions);\n this.panelOpen$ = this.store.select(AdminSelectors.panelOpen);\n this.sub.add(\n this.store.select(AdminSelectors.componentType).subscribe((ct) => {\n this.store.dispatch(AdminActions.togglePanel({ panelOpen: !!ct }));\n })\n );\n this.subscriptions.add(this.route.data.subscribe((data) => this.limit$?.next(data['limitMenu'])));\n }\n\n override init(): void {\n this.menus$ = this.store.select(AdminSelectors.menus);\n this.menuOpen$ = this.store.select(AdminSelectors.menuOpen);\n }\n\n override highlightMenu(menu: string): void {\n this.store.dispatch(AdminActions.highlightMenu({ menu }));\n }\n\n ngAfterViewInit(): void {\n this.compoType$ = this.store.select(AdminSelectors.componentType);\n this.sub.add(\n this.compoType$.subscribe((ct) => {\n if (this.componentRef) {\n this.adminPanel.clear();\n }\n let component = TEMPLATE_COMPONENTS.find((c) => c.id === ct);\n if (component) {\n this.componentRef = this.adminPanel.createComponent(component);\n }\n })\n );\n }\n\n override ngOnDestroy() {\n this.sub.unsubscribe();\n }\n}\n","<div class=\"o-base-layout\" [ngClass]=\"{ 'is-menu-open': menuOpen$ | async }\">\n <pry-admin-title class=\"o-base-layout__title\"></pry-admin-title>\n @if (menuOpen$ | async) {\n <pry-admin-menu class=\"o-base-layout__menu\"></pry-admin-menu>\n }\n <pry-base-toolbox\n class=\"o-base-layout__toolbox\"\n [baseToolboxTranslation]=\"baseToolboxTranslation\"\n [actions$]=\"actions$\"\n [subActions$]=\"subActions$\"\n ></pry-base-toolbox>\n\n <div class=\"o-base-layout__contentwrapper\">\n <div class=\"o-base-layout__content\">\n <router-outlet></router-outlet>\n </div>\n\n <div\n class=\"o-base-layout__panel\"\n [class.is-open]=\"panelOpen$ | async\"\n [class.-model]=\"(limit$ | async) === 'model'\"\n >\n <div class=\"o-base-layout__panel__content\">\n <ng-template #adminPanel></ng-template>\n </div>\n </div>\n </div>\n</div>\n","import { createAction, props } from '@ngrx/store';\nimport { Link, LinkDetails } from '@provoly/dashboard';\n\nexport const LinksActions = {\n loadLinks: createAction('[Admin/Links] Load Links'),\n loadLinksSuccess: createAction('[Admin/Links Api] Load Links Success', props<{ datas: LinkDetails[] }>()),\n loadLinksFailure: createAction('[Admin/Links Api] Load Links Failure', props<{ error: any }>()),\n\n saveLink: createAction('[Admin/Links] Save Links', props<{ link: Link; route: string }>()),\n saveLinkSuccess: createAction('[Admin/Links Api] Save Links Success', props<{ route: string }>()),\n saveLinkFailure: createAction('[Admin/Links Api] Save Links Failure', props<{ error: any }>())\n};\n","import { createReducer, on } from '@ngrx/store';\nimport { LinkDetails } from '@provoly/dashboard';\nimport { LinksActions } from './links.actions';\n\nexport const linksFeatureKey = '@pry/admin/links';\n\nexport interface LinkState {\n links: LinkDetails[];\n loading: boolean;\n}\n\nexport const initialLinkState: LinkState = {\n links: [],\n loading: false\n};\n\nexport const linkReducer = createReducer(\n initialLinkState,\n on(LinksActions.loadLinks, (state, action) => ({\n ...state,\n loading: true\n })),\n on(LinksActions.loadLinksSuccess, (state, action) => ({\n ...state,\n links: [...action.datas],\n loading: false\n })),\n on(LinksActions.loadLinksFailure, (state, action) => ({\n ...state,\n loading: false\n }))\n);\n","import { createFeatureSelector, createSelector } from '@ngrx/store';\nimport * as fromLinks from './links.reducer';\n\nconst feature = createFeatureSelector<fromLinks.LinkState>(fromLinks.linksFeatureKey);\n\nconst links = createSelector(feature, (state) => state?.links);\n\nexport const LinksSelectors = {\n feature,\n links\n};\n","import { Component } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n ClassActions,\n ClassSelectors,\n Link,\n LinkDetails,\n RelationType,\n RelationTypesActions,\n RelationTypesSelectors\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { LinksActions } from '../store/links.actions';\nimport { LinksSelectors } from '../store/links.selectors';\n\n@Component({\n selector: 'pry-admin-links-new',\n templateUrl: './admin-links-new.component.html'\n})\nexport class AdminLinksNewComponent {\n sub = new Subscription();\n\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n relationTypes$: Observable<RelationType[]>;\n links$: Observable<LinkDetails[]>;\n classes$: Observable<Class[]>;\n attributesSource$?: Observable<Attribute[] | undefined>;\n attributesDestination$?: Observable<Attribute[] | undefined>;\n attrIdTofilter$?: Observable<string[]>;\n\n linkForm: UntypedFormGroup;\n\n classSourceId?: string;\n isSubmitted = false;\n isSelectClass = false;\n\n constructor(\n private store: Store<AdminLinksNewComponent>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder\n ) {\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(RelationTypesActions.load({}));\n this.store.dispatch(LinksActions.loadLinks());\n this.classes$ = this.store.select(ClassSelectors.classes);\n this.relationTypes$ = this.store.select(RelationTypesSelectors.relationsTypes);\n this.links$ = this.store.select(LinksSelectors.links);\n this.linkForm = this.formBuilder.group({\n id: [uuid()],\n relationType: ['', [Validators.required]],\n classSource: [undefined, [Validators.required]],\n attributeSource: [undefined, [Validators.required]],\n classDestination: [undefined, [Validators.required]],\n attributeDestination: [undefined, [Validators.required]]\n });\n }\n\n onTypeSourceChange() {\n this.isSelectClass = this.linkForm.get('relationType')?.value !== undefined;\n }\n\n onClassSourceChange(event: any) {\n this.linkForm.patchValue({\n attributeSource: '',\n classDestination: '',\n attributeDestination: ''\n });\n this.attributesSource$ = this.classes$.pipe(map((classes) => classes.find((c) => c.id === event.id)?.attributes));\n this.classSourceId = event.id;\n }\n\n onClassDestinationChange(event: any) {\n this.linkForm.patchValue({\n attributeDestination: ''\n });\n\n this.attrIdTofilter$ = this.links$.pipe(\n map((links) =>\n links\n .filter(\n (link) =>\n link.attributeSource.id == this.linkForm.value.attributeSource.id ||\n link.attributeDestination.id == this.linkForm.value.attributeSource.id\n )\n .map((item) =>\n item.attributeSource.id === this.linkForm.value.attributeSource.id\n ? item.attributeDestination.id\n : item.attributeSource.id\n )\n )\n );\n\n this.attributesDestination$ = combineLatest([this.classes$, this.attrIdTofilter$]).pipe(\n map(([classes, attrIds]) =>\n classes\n .find((c) => c.id === event.id)\n ?.attributes.filter(\n (attr) => !attrIds.includes(attr.id) && this.linkForm.value.attributeSource.id !== attr.id\n )\n )\n );\n }\n\n goBack() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(AdminActions.routeTo({ path: path.toString() }));\n }\n\n addLink() {\n this.isSubmitted = true;\n if (this.linkForm.valid) {\n this.isSubmitted = false;\n let linkToAdd = {\n id: this.linkForm.value.id,\n relationType: this.linkForm.value.relationType,\n attributeSource: this.linkForm.value.attributeSource.id,\n attributeDestination: this.linkForm.value.attributeDestination.id\n } as Link;\n\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n this.store.dispatch(LinksActions.saveLink({ link: linkToAdd, route: path.toString() }));\n }\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.links.add' | i18n }}</h1>\n <form class=\"o-form\" [formGroup]=\"linkForm\" (ngSubmit)=\"addLink()\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"name-label\" for=\"link_name\" class=\"a-label\">\n {{ '@pry.admin.links.relationType' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"link_name\"\n formControlName=\"relationType\"\n [items]=\"relationTypes$ | async | prySortData : sortActive : sortDirection\"\n (ngModelChange)=\"onTypeSourceChange()\"\n [isForm]=\"true\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [placeholder]=\"'@pry.admin.links.selectRelationType' | i18n\"\n [attr.aria-labelledby]=\"\n isSubmitted && linkForm.get('relationType')?.invalid ? 'name-label name-error' : 'name-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && linkForm.get('relationType')?.invalid\"\n required\n >\n </pry-select>\n @if (isSubmitted && linkForm.get('relationType')?.invalid) {\n <label\n id=\"name-error\"\n for=\"link_name\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n\n @if (isSelectClass) {\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"class-source-label\" form=\"link_class-source\" class=\"a-label\">\n {{ '@pry.admin.links.classSource' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"link_class-source\"\n formControlName=\"classSource\"\n [items]=\"classes$ | async | prySortData : sortActive : sortDirection\"\n (ngModelChange)=\"onClassSourceChange($event)\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && linkForm.get('classSource')?.invalid\n ? 'class-source-label class-source-error'\n : 'class-source-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && linkForm.get('classSource')?.invalid\"\n required\n >\n </pry-select>\n @if (isSubmitted && linkForm.get('classSource')?.invalid) {\n <label\n id=\"class-source-error\"\n for=\"link_class-source\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n }\n\n @if (attributesSource$ | async | prySortData : sortActive : sortDirection; as attr) {\n <div\n class=\"m-form-label-field -width-sm\"\n >\n <label id=\"attribute-source-label\" for=\"link_attribute-source\" class=\"a-label\">\n {{ '@pry.admin.links.attributeSource' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"link_attribute-source\"\n formControlName=\"attributeSource\"\n [items]=\"attr\"\n [isForm]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && linkForm.get('attributeSource')?.invalid\n ? 'attribute-source-label attribute-source-error'\n : 'attribute-source-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && linkForm.get('attributeSource')?.invalid\"\n required\n >\n </pry-select>\n @if (isSubmitted && linkForm.get('attributeSource')?.invalid) {\n <label\n id=\"attribute-source-error\"\n for=\"link_attribute-source\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n }\n\n @if (classes$ | async | prySortData : sortActive : sortDirection; as cd) {\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"class-destination-label\" for=\"link_class-destination\" class=\"a-label\">\n {{ '@pry.admin.links.classDestination' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"link_class-destination\"\n formControlName=\"classDestination\"\n [items]=\"cd\"\n (ngModelChange)=\"onClassDestinationChange($event)\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && linkForm.get('classDestination')?.invalid\n ? 'class-destination-label class-destination-error'\n : 'class-destination-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && linkForm.get('classDestination')?.invalid\"\n required\n >\n </pry-select>\n @if (isSubmitted && linkForm.get('classDestination')?.invalid) {\n <label\n id=\"class-destination-error\"\n for=\"link_class-destination\"\n class=\"text-error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n }\n\n @if (attributesDestination$ | async | prySortData : sortActive : sortDirection; as attr) {\n <div\n class=\"m-form-label-field -width-sm\"\n >\n <label id=\"attribute-destination-label\" for=\"link_attribute-destination\" class=\"a-label\">\n {{ '@pry.admin.links.attributeDestination' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"link_attribute-destination\"\n formControlName=\"attributeDestination\"\n [items]=\"attr\"\n [isForm]=\"true\"\n bindLabel=\"name\"\n [attr.aria-labelledby]=\"\n isSubmitted && linkForm.get('attributeDestination')?.invalid\n ? 'attribute-destination-label attribute-destination-error'\n : 'attribute-destination-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && linkForm.get('attributeDestination')?.invalid\"\n required\n >\n </pry-select>\n @if (isSubmitted && linkForm.get('attributeDestination')?.invalid) {\n <label\n id=\"attribute-destination-error\"\n for=\"link_attribute-destination\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n }\n\n <div class=\"m-btn-group -width-sm\">\n <button\n class=\"a-btn a-btn--secondary\"\n type=\"button\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button class=\"a-btn a-btn--primary\" type=\"submit\" [innerHTML]=\"'@pry.admin.create' | i18n\"></button>\n </div>\n </form>\n</div>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n Class,\n ClassActions,\n ClassSelectors,\n LinkDetails,\n LinkExtended,\n RelationTypesActions\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { LinksActions } from './store/links.actions';\nimport { LinksSelectors } from './store/links.selectors';\n\n@Component({\n selector: 'pry-admin-links',\n templateUrl: './admin-links.component.html'\n})\nexport class AdminLinksComponent {\n links$: Observable<LinkDetails[]>;\n linksExtended$: Observable<LinkExtended[]>;\n\n classes$: Observable<Class[]>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n sub = new Subscription();\n\n constructor(\n private store: Store<AdminLinksComponent>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.store.dispatch(LinksActions.loadLinks());\n this.store.dispatch(ClassActions.load({}));\n this.store.dispatch(RelationTypesActions.load({}));\n this.links$ = this.store.select(LinksSelectors.links);\n this.classes$ = this.store.select(ClassSelectors.classes);\n\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'links',\n actionAccess: 'write'\n }\n ]\n })\n );\n\n this.linksExtended$ = combineLatest([this.links$, this.classes$]).pipe(\n map(([links, classes]) => {\n return links.map((l) => {\n return {\n id: l.id,\n relationType: l.relationType.name,\n attributeSource: l.attributeSource.name,\n attributeDestination: l.attributeDestination.name,\n classSource:\n classes.find((c) => c.attributes.find((a: Attribute) => a.id === l.attributeSource.id) !== undefined)\n ?.name || '',\n classDestination:\n classes.find((c) => c.attributes.find((a: Attribute) => a.id === l.attributeDestination.id) !== undefined)\n ?.name || ''\n };\n });\n })\n );\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.links.list' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.links.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th prySortHeader=\"name\">{{ '@pry.admin.links.classSource' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.links.attributeSource' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.links.classDestination' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.links.attributeDestination' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.links.relationType' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (link of linksExtended$ | async | prySortData: sortActive : sortDirection; track link) {\n <tr>\n <td>{{ link.classSource }}</td>\n <td>{{ link.attributeSource }}</td>\n <td>{{ link.classDestination }}</td>\n <td>{{ link.attributeDestination }}</td>\n <td>{{ link.relationType }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, MetadataRules } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors, MetadataState } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable, Subscription } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AdminActions } from '../../../../store/admin.actions';\nimport { AdminMetadataUserState } from '../../../admin-metadata-user/store/admin-metadata-user.reducer';\nimport { AdminMetadataRulesActions } from '../../store/metadata-rules.actions';\nimport { MetadataRulesState } from '../../store/metadata-rules.reducer';\nimport { MetadataRulesSelectors } from '../../store/metadata-rules.selectors';\n\n@Component({\n selector: 'pry-admin-form-metadata-rules',\n templateUrl: './admin-form-metadata-rules.component.html'\n})\nexport class AdminFormMetadataRulesComponent implements OnInit, OnDestroy {\n @Input() metadataRules?: MetadataRules | null;\n\n metadataList$: Observable<IMetadata[]>;\n metadataUserList$: Observable<IMetadata[]>;\n metadataRulesList$: Observable<MetadataRules[]>;\n\n metadataList: IMetadata[] = [];\n metadataUserList: IMetadata[] = [];\n metadataUserListFilter: IMetadata[] = [];\n metadataRulesList: MetadataRules[] = [];\n\n sub = new Subscription();\n\n form: UntypedFormGroup;\n\n isSameName = false;\n isSameRules = false;\n\n isSubmitted = false;\n\n constructor(\n private store: Store<MetadataRulesState | MetadataState | AdminMetadataUserState>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder\n ) {\n this.metadataList$ = this.store.select(MetadataSelectors.metadata);\n this.metadataUserList$ = this.store.select(MetadataSelectors.userProfile);\n this.metadataRulesList$ = this.store.select(MetadataRulesSelectors.metadataRulesList);\n this.form = this.formBuilder.group({\n id: [uuidv4()],\n name: ['', [Validators.required]],\n metadataUser: ['', [Validators.required]],\n metadataItem: ['', [Validators.required]]\n });\n }\n\n ngOnInit(): void {\n this.isSameRules = false;\n this.isSameName = false;\n this.store.dispatch(AdminMetadataRulesActions.load());\n this.store.dispatch(MetadataActions.loadMetadata());\n this.store.dispatch(MetadataActions.loadUserProfile());\n this.sub = this.metadataList$.subscribe((metadataList) => {\n this.metadataList = metadataList;\n });\n this.sub.add(\n this.metadataRulesList$.subscribe((metadataRulesList) => {\n this.metadataRulesList = metadataRulesList;\n })\n );\n this.sub.add(\n this.metadataUserList$.subscribe((metadataUserList) => {\n this.metadataUserList = metadataUserList;\n this.metadataUserListFilter = metadataUserList;\n if (this.metadataList.length > 0) {\n this.form.patchValue({ metadataItem: this.metadataList[0].id });\n this.selectMetadataItem(this.metadataList[0].id);\n }\n if (this.metadataRules) {\n this.metadataRulesList = this.metadataRulesList.filter((meta) => meta.id !== this.metadataRules?.id);\n const { id, name, userProfile, metadata } = this.metadataRules;\n this.form.patchValue({\n id,\n name,\n metadataUser: userProfile.id,\n metadataItem: metadata.id\n });\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath() }));\n }\n\n getPath() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n if (this.metadataRules) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n return path.toString();\n }\n\n selectMetadataItem(id: string) {\n this.isSameRules = false;\n const metadata = this.metadataList.find((m) => id === m.id);\n if (metadata) {\n this.metadataUserListFilter = this.metadataUserList.filter((mU) => mU.type === metadata.type);\n }\n this.selectAutoMetadataUser();\n }\n\n selectAutoMetadataUser() {\n this.form.patchValue({\n userProfil:\n this.metadataUserListFilter.length > 0\n ? this.metadataRules?.userProfile?.id &&\n !!this.metadataUserListFilter.find((metadata) => metadata.id === this.metadataRules?.userProfile?.id)\n ? this.metadataRules.userProfile.id\n : this.metadataUserListFilter[0].id\n : ''\n });\n }\n\n selectMetadataUser(id: string) {\n this.isSameRules = false;\n }\n\n changeValueName(value: string) {\n this.isSameName = false;\n }\n\n submit() {\n this.isSubmitted = true;\n if (this.form.valid) {\n this.isSubmitted = false;\n this.isSameName = !!this.metadataRulesList.find(\n (metadata) => this.form.get('name')?.value.toLowerCase() === metadata.name.toLowerCase()\n );\n this.isSameRules = !!this.metadataRulesList.find((metadata) => {\n return (\n this.form.get('metadataUser')?.value === metadata?.userProfile?.id &&\n this.form.get('metadataItem')?.value === metadata?.metadata?.id\n );\n });\n if (this.form.valid && !this.isSameName && !this.isSameRules) {\n this.store.dispatch(AdminMetadataRulesActions.post({ metadata: this.form.value }));\n }\n }\n }\n}\n","<form class=\"o-form\" [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"name\">\n {{ '@pry.admin.metadata-rules.label' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n (ngModelChange)=\"changeValueName($event)\"\n [attr.aria-labelledby]=\"isSubmitted && form.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && form.get('name')?.invalid\"\n required\n />\n @if (isSubmitted && form.get('name')?.invalid) {\n <label\n class=\"a-label a-label--help -error\"\n id=\"name-error\"\n for=\"name\"\n >{{ '@pry.admin.required' | i18n }}</label\n >\n }\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"item-label\" for=\"item\">{{\n '@pry.admin.metadata-rules.metadata-item.name' | i18n\n }}</label>\n <pry-select\n id=\"item\"\n formControlName=\"metadataItem\"\n [items]=\"metadataList\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n (ngModelChange)=\"selectMetadataItem($event)\"\n aria-labelledby=\"item-label\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"user-label\" for=\"user\">{{\n '@pry.admin.metadata-rules.metadata-user.name' | i18n\n }}</label>\n <pry-select\n id=\"user\"\n formControlName=\"metadataUser\"\n [items]=\"metadataUserListFilter\"\n bindValue=\"id\"\n bindLabel=\"name\"\n [isForm]=\"true\"\n (ngModelChange)=\"selectMetadataUser($event)\"\n aria-labelledby=\"user-label\"\n ></pry-select>\n </div>\n\n @if (isSameName) {\n <label class=\"a-label a-label--help -error\">{{\n '@pry.admin.metadata-rules.is-same-name' | i18n\n }}</label>\n }\n @if (isSameRules) {\n <label class=\"a-label a-label--help -error\">{{\n '@pry.admin.metadata-rules.is-same-rules' | i18n\n }}</label>\n }\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(metadataRules ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { MetadataRules } from '@provoly/dashboard';\nimport { MetadataState } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable } from 'rxjs';\nimport { AdminMetadataRulesActions } from '../store/metadata-rules.actions';\nimport { MetadataRulesSelectors } from '../store/metadata-rules.selectors';\n\n@Component({\n selector: 'pry-admin-edit-metadata-rules',\n templateUrl: './admin-edit-metadata-rules.component.html'\n})\nexport class AdminEditMetadataRulesComponent {\n metadataRulesSelected$: Observable<MetadataRules | null>;\n\n constructor(private store: Store<MetadataState>) {\n this.store.dispatch(AdminMetadataRulesActions.load());\n this.metadataRulesSelected$ = this.store.select(MetadataRulesSelectors.metadataRulesSelected);\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.metadata-rules.edit.title' | i18n }}</h1>\n <pry-admin-form-metadata-rules [metadataRules]=\"metadataRulesSelected$ | async\"></pry-admin-form-metadata-rules>\n</div>\n","import { Component, ElementRef, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { META_OPTIONS, MetadataRules, PryI18nService } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { IConfigHeader } from '../admin-metadata/shared/list-metadata/pry-list-metadata.component';\nimport { AdminMetadataRulesActions } from './store/metadata-rules.actions';\nimport { MetadataRulesState } from './store/metadata-rules.reducer';\nimport { MetadataRulesSelectors } from './store/metadata-rules.selectors';\n\n@Component({\n selector: 'pry-admin-metadata-rules',\n templateUrl: './admin-metadata-rules.component.html'\n})\nexport class AdminMetadataRulesComponent {\n @ViewChild('input') input!: ElementRef;\n\n metadataRulesList$: Observable<MetadataRules[]>;\n\n selectedMetadataRules$: Observable<string | undefined>;\n\n sortActive? = 'name';\n\n sortDirection? = 'asc';\n\n value: string = '';\n\n configHeader: Array<IConfigHeader>;\n\n labelMetadataSelected: string = '';\n\n editOpened: boolean = false;\n\n validateAction: () => void;\n cancelAction: () => void;\n\n constructor(\n private store: Store<MetadataRulesState>,\n private translateService: PryI18nService,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.validateAction = () => this.validateName(this.labelMetadataSelected);\n this.cancelAction = () => this.cancelEdition();\n this.configHeader = [\n { headerType: 'label', label: this.translateService.instant('@pry.admin.metadata-rules.label') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.metadata-rules.metadata-item.name') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.metadata-rules.metadata-user.name') }\n ];\n this.store.dispatch(AdminMetadataRulesActions.load());\n this.metadataRulesList$ = this.store.select(MetadataRulesSelectors.metadataRulesList);\n this.selectedMetadataRules$ = this.store.select(MetadataRulesSelectors.metadataRulesSelectedId);\n this.store.dispatch(AdminMetadataRulesActions.unselectMetadata());\n const path = this.router.createUrlTree(['new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminMetadataRulesActions.openNewMetadataRules({ route: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n cancelEdition(): void {\n this.toggleEditionMetadata();\n this.store.dispatch(AdminMetadataRulesActions.unselectMetadata());\n }\n\n toggleEditionMetadata(): void {\n this.editOpened = !this.editOpened;\n if (this.editOpened) {\n setTimeout(() => {\n this.input.nativeElement.focus();\n }, 10);\n }\n }\n\n validateName(newLabel: string): void {\n this.toggleEditionMetadata();\n }\n\n changeValue($event: any) {\n this.labelMetadataSelected = $event;\n }\n\n selectMetadata(metadataRules: MetadataRules) {\n this.openDetail(metadataRules);\n }\n\n openDetail(metadataRules: MetadataRules) {\n this.store.dispatch(AdminMetadataRulesActions.selectMetadata({ metadataRules }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminSelectMetadataRulesComponent' }));\n }\n\n getTranslationType(type: string) {\n return META_OPTIONS.find((el) => el.varType === type)?.translation || 'undefined';\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.metadata-rules.title' | i18n }}</h1>\n @if (metadataRulesList$ | async; as metadataRulesList) {\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.metadata-rules.title' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n @for (conf of configHeader; track conf) {\n <th [prySortHeader]=\"conf.label\">{{ conf.label }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (metadataRules of metadataRulesList | prySortData: sortActive : sortDirection; track metadataRules) {\n <tr\n (click)=\"selectMetadata(metadataRules)\"\n [class.is-selected]=\"(selectedMetadataRules$ | async) === metadataRules.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-meta-rule-' + metadataRules.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedMetadataRules$ | async) === metadataRules.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-meta-rule-' + metadataRules.id\"\n >\n <span class=\"u-visually-hidden\">{{ metadataRules.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ metadataRules.name }}</td>\n <td>{{ metadataRules.metadataItem?.name }}</td>\n <td>{{ metadataRules.metadataUser?.name }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n</div>\n\n<pry-modal\n [titleModal]=\"'@pry.toolbox.rename' | i18n\"\n [validateLabel]=\"'@pry.toolbox.manifest.check' | i18n\"\n [validateAction]=\"validateAction\"\n [cancelLabel]=\"'@pry.toolbox.manifest.close' | i18n\"\n [cancelAction]=\"cancelAction\"\n [opened]=\"this.editOpened\"\n >\n <div class=\"field__input\">\n <span>{{ '@pry.toolbox.manifest.name' | i18n }}</span>\n <input\n type=\"text\"\n (keyup.enter)=\"validateName(input.value)\"\n [ngModel]=\"labelMetadataSelected\"\n (ngModelChange)=\"changeValue($event)\"\n #input\n />\n </div>\n</pry-modal>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-new-metadata-rules',\n templateUrl: './admin-new-metadata-rules.component.html'\n})\nexport class AdminNewMetadataRulesComponent {}\n","<div class=\"o-base-container\">\n <h4 class=\"admin__title\">{{ '@pry.admin.metadata-rules.add.title' | i18n }}</h4>\n <pry-admin-form-metadata-rules></pry-admin-form-metadata-rules>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { IMetadata, META_OPTIONS } from '@provoly/dashboard';\n\nexport interface IConfigHeader {\n headerType: 'label' | 'icon';\n label: string;\n}\n\n@Component({\n selector: 'pry-list-metadata',\n templateUrl: './pry-list-metadata.component.html'\n})\nexport class PryListMetadataComponent {\n @ViewChild('input') input!: ElementRef;\n\n @Input() sortActive? = 'name';\n\n @Input() sortDirection? = 'asc';\n\n @Input() configHeader: Array<IConfigHeader> = [];\n\n @Input() metadata: Array<IMetadata> | null = [];\n\n @Input() selectedMetadata: string | null = null;\n\n @Input() labelMetadataSelected: string = '';\n\n @Input() editable: boolean = true;\n\n @Output() editClicked$: EventEmitter<IMetadata> = new EventEmitter<IMetadata>();\n\n /**\n * @param string: newLabel label for the metadata edited\n */\n @Output() submitModal$: EventEmitter<string> = new EventEmitter<string>();\n\n @Output() cancelAction$: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @param string\n */\n @Output() rowClicked$: EventEmitter<string> = new EventEmitter<string>();\n\n editOpened: boolean = false;\n\n validateAction: () => void;\n cancelAction: () => void;\n\n constructor() {\n this.validateAction = () => this.validateName(this.labelMetadataSelected);\n this.cancelAction = () => this.cancelEdition();\n }\n\n openEditMetadata(metadata: IMetadata): void {\n this.editClicked$.emit(metadata);\n }\n\n cancelEdition(): void {\n this.cancelAction$.emit();\n this.toggleEditionMetadata();\n }\n\n toggleEditionMetadata(): void {\n this.editOpened = !this.editOpened;\n if (this.editOpened) {\n setTimeout(() => {\n this.input.nativeElement.focus();\n }, 10);\n }\n }\n\n validateName(newLabel: string): void {\n this.submitModal$.emit(newLabel);\n this.toggleEditionMetadata();\n }\n\n changeValue($event: any) {\n this.labelMetadataSelected = $event;\n }\n\n goToDetails(id: string) {\n this.rowClicked$.emit(id);\n }\n\n getTranslationType(type: string) {\n return META_OPTIONS.find((el) => el.varType === type)?.translation || 'undefined';\n }\n}\n","<table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n\n <thead>\n <tr>\n <th style=\"width: 30px\"></th>\n @for (conf of configHeader; track conf) {\n <th [prySortHeader]=\"conf.label\">{{ conf.label }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (metadata of metadata | prySortData: sortActive : sortDirection; track metadata) {\n <tr\n (click)=\"goToDetails(metadata.id)\"\n [class.is-selected]=\"selectedMetadata === metadata.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-meta' + metadata.name\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"selectedMetadata === metadata.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-meta-' + metadata.id\"\n >\n <span class=\"u-visually-hidden\">{{ metadata.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ metadata.name }}</td>\n <td>{{ getTranslationType(metadata.type) | i18n }}</td>\n </tr>\n }\n </tbody>\n</table>\n\n<pry-modal\n [titleModal]=\"'@pry.toolbox.rename' | i18n\"\n [validateLabel]=\"'@pry.toolbox.manifest.check' | i18n\"\n [validateAction]=\"validateAction\"\n [cancelLabel]=\"'@pry.toolbox.manifest.close' | i18n\"\n [cancelAction]=\"cancelAction\"\n [opened]=\"this.editOpened\"\n >\n <div class=\"field__input\">\n <span>{{ '@pry.toolbox.manifest.name' | i18n }}</span>\n <input\n type=\"text\"\n (keyup.enter)=\"validateName(input.value)\"\n [ngModel]=\"labelMetadataSelected\"\n (ngModelChange)=\"changeValue($event)\"\n #input\n />\n </div>\n</pry-modal>\n","import { Component, ElementRef, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, PryI18nService } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { combineLatest, filter, Observable, Subject, takeUntil } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { IConfigHeader } from '../admin-metadata/shared/list-metadata/pry-list-metadata.component';\nimport { AdminMetadataUserActions } from './store/admin-metadata-user.action';\nimport { AdminMetadataUserSelectors } from './store/admin-metadata-user.selector';\n\n@Component({\n selector: 'pry-admin-user',\n templateUrl: './admin-metadata-user.component.html'\n})\nexport class AdminMetadataUserComponent {\n @ViewChild('input') input!: ElementRef;\n\n metadata$: Observable<Array<IMetadata>>;\n selectedMetadataId$: Observable<string | null>;\n\n sortActive? = 'name';\n\n sortDirection? = 'asc';\n\n value: string = '';\n\n configHeader: Array<IConfigHeader>;\n\n unsubscribe$: Subject<any> = new Subject<any>();\n\n constructor(\n private store: Store<any>,\n private translateService: PryI18nService,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.configHeader = [\n { headerType: 'label', label: this.translateService.instant('@pry.admin.user.label') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.user.type') }\n ];\n this.metadata$ = this.store.select(MetadataSelectors.userProfile);\n this.selectedMetadataId$ = this.store.select(AdminMetadataUserSelectors.selectedMetadataId);\n this.store.dispatch(AdminMetadataUserActions.unselectMetadata());\n this.store.dispatch(MetadataActions.loadUserProfile());\n combineLatest([this.store.select(AdminMetadataUserSelectors.selectedMetadataId), this.metadata$])\n .pipe(\n filter(([x]) => !!x),\n takeUntil(this.unsubscribe$)\n )\n .subscribe(([id, metas]) => {\n this.value = metas.find((meta) => meta.id === id)?.name ?? '';\n });\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_user',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n rowClicked(id: string) {\n this.store.dispatch(AdminMetadataUserActions.goToDetailsViewMetadata({ id }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminUserSelectMetadataComponent' }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.user.title' | i18n }}</h1>\n <pry-list-metadata\n [metadata]=\"metadata$ | async\"\n [selectedMetadata]=\"selectedMetadataId$ | async\"\n [configHeader]=\"configHeader\"\n [sortActive]=\"sortActive\"\n [labelMetadataSelected]=\"value\"\n [sortDirection]=\"sortDirection\"\n (rowClicked$)=\"rowClicked($event)\"\n >\n </pry-list-metadata>\n</div>\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, META_OPTIONS } from '@provoly/dashboard';\nimport { MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\nimport { AdminActions } from '../../../../store/admin.actions';\n\n@Component({\n selector: 'pry-form-metadata',\n templateUrl: './form-metadata.component.html'\n})\nexport class FormMetadataComponent implements OnInit, OnDestroy {\n metaForm: UntypedFormGroup;\n metaOptions = META_OPTIONS;\n currentTypeTranslation = '';\n\n metadataNames$?: Observable<string[]>;\n nameAlreadyExists$?: Observable<boolean>;\n\n sub = new Subscription();\n\n isSubmitted = false;\n\n @Input() titleForm: string = '';\n @Input() isMetaSimpleEdit = false;\n @Input() isMetaUser = false;\n @Input() metadata?: IMetadata;\n\n @Output() submitMetadata$: EventEmitter<IMetadata> = new EventEmitter<IMetadata>();\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder\n ) {\n this.metaForm = this.formBuilder.group({\n id: [{ value: uuid(), disabled: true }],\n name: ['', [Validators.required]],\n type: [this.metaOptions[0].varType],\n description: [],\n allowedValues: this.formBuilder.array([])\n });\n }\n\n ngOnInit(): void {\n if (this.isMetaUser) {\n this.metadataNames$ = this.store\n .select(MetadataSelectors.userProfile)\n .pipe(map((metadata) => metadata.map((metadata) => metadata.name.toLowerCase())));\n } else {\n this.metadataNames$ = this.store\n .select(MetadataSelectors.metadata)\n .pipe(map((metadata) => metadata.map((metadata: IMetadata) => metadata.name.toLowerCase())));\n }\n\n this.nameAlreadyExists$ = combineLatest([\n this.metaForm.get('name')?.valueChanges as Observable<string>,\n this.metadataNames$\n ]).pipe(map(([value, metaNames]) => metaNames.includes(value.toLowerCase()) && value != this.metadata?.name));\n this.sub.add(\n this.nameAlreadyExists$.subscribe((value) => {\n if (value) {\n this.metaForm.controls['name'].setErrors({ 'same-name': true });\n }\n return value;\n })\n );\n\n if (this.metadata) {\n const type = META_OPTIONS.find((el) => el.varType === this.metadata?.type);\n this.currentTypeTranslation = type ? type.translation : META_OPTIONS[0].translation;\n this.metaForm.patchValue({\n id: this.metadata.id,\n name: this.metadata.name,\n type: this.metadata.type,\n description: this.metadata.description\n });\n this.metaForm.controls['type'].disable();\n if (this.isMetaSimpleEdit) {\n this.metaForm.controls['name'].disable();\n }\n\n if (this.metadata.allowedValues) {\n for (let item of this.metadata.allowedValues) {\n this.metadataList.push(new UntypedFormControl({ value: item, disabled: true }));\n }\n }\n }\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n get metadataList() {\n return this.metaForm.controls['allowedValues'] as UntypedFormArray;\n }\n\n addMetadata() {\n this.isSubmitted = true;\n if (this.metaForm.valid) {\n this.isSubmitted = false;\n let payload = {\n ...this.metaForm.getRawValue(),\n allowedValues: this.metaForm.getRawValue().allowedValues.filter((x: string) => x !== null)\n };\n this.submitMetadata$.emit(payload);\n this.goBack();\n }\n }\n\n addItemList(type?: string) {\n if (type === 'LIST' || type === undefined) {\n this.metadataList.push(new UntypedFormControl('', Validators.required));\n }\n }\n\n removeItemList(index: number) {\n this.metadataList.removeAt(index);\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath() }));\n }\n\n getPath() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n if (this.metadata) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n return path.toString();\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ titleForm }}</h1>\n\n <form class=\"o-form\" [formGroup]=\"metaForm\" (ngSubmit)=\"addMetadata()\">\n <div class=\"m-form-label-field -width-sm\">\n <label class=\"a-label\" id=\"name-label\" for=\"metadata-name\">\n {{ '@pry.admin.metadata.label' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n class=\"a-form-field\"\n id=\"metadata-name\"\n type=\"text\"\n formControlName=\"name\"\n [required]=\"!metadata\"\n [attr.aria-labelledby]=\"isSubmitted && metaForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && metaForm.get('name')?.invalid\"\n />\n @if (isSubmitted && metaForm.get('name')?.invalid) {\n <label\n id=\"name-error\"\n for=\"metadata-name\"\n class=\"a-label a-label--help -error\"\n >\n @if (metaForm.get('name')?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (metaForm.get('name')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n @if (metaForm.get('name')?.hasError('pattern')) {\n <span>{{ '@pry.admin.classes.formatName' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-md\">\n <label class=\"a-label\" for=\"metadata_description\">{{ '@pry.admin.metadata.description' | i18n }}</label>\n <textarea\n rows=\"5\"\n type=\"text\"\n id=\"metadata_description\"\n class=\"a-form-field\"\n formControlName=\"description\"\n ></textarea>\n </div>\n\n <div class=\"m-form-label-field -width-sm\">\n <label for=\"metadata-type\" id=\"metadata-type-label\" class=\"a-label\">\n {{ '@pry.admin.metadata.type' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <pry-select\n id=\"metadata-type\"\n formControlName=\"type\"\n [items]=\"metaOptions\"\n bindValue=\"varType\"\n bindLabel=\"translation\"\n [isForm]=\"true\"\n (ngModelChange)=\"addItemList($event)\"\n aria-labelledby=\"metadata-type-label\"\n ></pry-select>\n </div>\n\n @if (metaForm.value.type === 'LIST') {\n @if (metadataList.controls.length > 0) {\n <div class=\"o-datas-list-wrapper\" formArrayName=\"allowedValues\">\n <fieldset>\n <legend class=\"u-visually-hidden\">{{ '@pry.admin.varType.list' | i18n }}</legend>\n @for (control of metadataList.controls; track control; let i = $index) {\n <div class=\"o-datas-list metadata-list\">\n <div class=\"o-datas-list__fields metadata-input\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"metadata-list-label\" for=\"metadata-list\" class=\"a-label\">\n {{ '@pry.admin.metadata.listLabel' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n class=\"a-form-field\"\n id=\"metadata-list\"\n formControlName=\"{{ i }}\"\n [required]=\"!control.value\"\n [attr.aria-invalid]=\"isSubmitted && control?.invalid\"\n [attr.aria-labelledby]=\"\n isSubmitted && control?.invalid ? 'metadata-list-label metadata-list-error' : 'metadata-list-label'\n \"\n />\n @if (isSubmitted && control.invalid) {\n <label\n id=\"metadata-list-error\"\n for=\"metadata-list\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n <div class=\"m-btn-group m-btn-group--input-actions\">\n @if (i === metadataList.controls.length - 1) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--input-action\"\n (click)=\"control.value.trim() !== '' ? addItemList() : undefined\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.admin.metadata.addValue' | i18n }}</span>\n <pry-icon iconSvg=\"add\" [width]=\"20\" [height]=\"20\"></pry-icon>\n </button>\n }\n @if (i !== 0 && !metadataList.controls[i].disabled) {\n <button\n type=\"button\"\n class=\"a-btn a-btn--input-action\"\n (click)=\"removeItemList(i)\"\n >\n <span class=\"u-visually-hidden\">{{ '@pry.admin.metadata.removeValue' | i18n }}</span>\n <pry-icon iconSvg=\"delete\" [width]=\"20\" [height]=\"20\"></pry-icon>\n </button>\n }\n </div>\n </div>\n </div>\n }\n </fieldset>\n </div>\n }\n }\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(metadata ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable } from 'rxjs';\nimport { AdminMetadataUserActions } from '../store/admin-metadata-user.action';\n\n@Component({\n selector: 'pry-admin-edit-metadata',\n templateUrl: './admin-user-edit-metadata.component.html'\n})\nexport class AdminUserEditMetadataComponent implements OnInit {\n metadata$: Observable<IMetadata>;\n\n constructor(private readonly store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.metadata$ = this.store.select(MetadataSelectors.selectedMetadata);\n this.store.dispatch(MetadataActions.loadUserProfile());\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) => {\n this.store.dispatch(AdminMetadataUserActions.goToDetailsViewMetadata({ id: params['uuid'] }));\n });\n }\n\n submit(metadata: IMetadata) {\n this.store.dispatch(AdminMetadataUserActions.updateMetadata({ metadata }));\n }\n}\n","@if (metadata$ | async; as metadata) {\n <pry-form-metadata\n [metadata]=\"metadata\"\n (submitMetadata$)=\"submit($event)\"\n [titleForm]=\"'@pry.admin.user.edit' | i18n\"\n [isMetaUser]=\"true\"\n >\n </pry-form-metadata>\n}\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { AdminMetadataUserActions } from '../store/admin-metadata-user.action';\n\n@Component({\n selector: 'pry-admin-user-new-metadata',\n templateUrl: './admin-user-new-metadata.component.html'\n})\nexport class AdminUserNewMetadataComponent {\n constructor(private store: Store<any>) {}\n\n submit(metadata: IMetadata) {\n this.store.dispatch(AdminMetadataUserActions.createMetadata({ metadata: metadata }));\n }\n}\n","<pry-form-metadata (submitMetadata$)=\"submit($event)\" [titleForm]=\"'@pry.admin.user.add' | i18n\" [isMetaUser]=\"true\">\n</pry-form-metadata>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'pry-admin-edit-metadata',\n templateUrl: './admin-edit-metadata.component.html'\n})\nexport class AdminEditMetadataComponent implements OnInit {\n metadata$?: Observable<IMetadata>;\n\n constructor(private readonly store: Store<any>, private route: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.store.dispatch(MetadataActions.loadMetadata());\n this.metadata$ = this.store.select(MetadataSelectors.selectedMetadata);\n this.route.params.subscribe((params) => {\n this.store.dispatch(MetadataActions.goToDetailsView({ id: params['uuid'] }));\n });\n }\n\n submit(metadata: IMetadata) {\n this.store.dispatch(MetadataActions.createMetadata({ metadata: metadata }));\n }\n}\n","@if (metadata$ | async; as metadata) {\n <pry-form-metadata\n [metadata]=\"metadata\"\n (submitMetadata$)=\"submit($event)\"\n [titleForm]=\"'@pry.admin.metadata.edit' | i18n\"\n [isMetaSimpleEdit]=\"true\"\n >\n </pry-form-metadata>\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { IMetadata, PryI18nService } from '@provoly/dashboard';\nimport { MetadataActions, MetadataSelectors } from '@provoly/dashboard/components/metadata-editor';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { filter } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { IConfigHeader } from './shared/list-metadata/pry-list-metadata.component';\n\n@Component({\n selector: 'pry-admin-metadata',\n templateUrl: './admin-metadata.component.html'\n})\nexport class AdminMetadataComponent {\n metadata$: Observable<Array<IMetadata>>;\n selectedMetadataId$: Observable<string>;\n\n sortActive? = 'name';\n\n sortDirection? = 'asc';\n\n value: string = '';\n\n configHeader: Array<IConfigHeader>;\n\n unsubscribe$: Subject<any> = new Subject<any>();\n\n constructor(\n private store: Store<any>,\n private translateService: PryI18nService,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.configHeader = [\n { headerType: 'label', label: this.translateService.instant('@pry.admin.metadata.label') },\n { headerType: 'label', label: this.translateService.instant('@pry.admin.metadata.type') }\n ];\n this.metadata$ = this.store.select(MetadataSelectors.metadata);\n this.selectedMetadataId$ = this.store.select(MetadataSelectors.selectedMetadataId);\n this.store.dispatch(MetadataActions.unselectMetadata());\n this.store.dispatch(MetadataActions.loadMetadata());\n this.store\n .select(MetadataSelectors.selectedMetadata)\n .pipe(\n filter((x) => !!x),\n takeUntil(this.unsubscribe$)\n )\n .subscribe((selectedMetadata) => {\n this.value = selectedMetadata.name;\n });\n const path = this.router.createUrlTree(['new'], { relativeTo: this.route });\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: MetadataActions.goToNewMetadata({ route: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n cancelEdition(): void {\n this.store.dispatch(MetadataActions.unselectMetadata());\n }\n\n rowClicked(id: string) {\n this.store.dispatch(MetadataActions.goToDetailsView({ id }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminSelectMetadataComponent' }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.metadata.title' | i18n }}</h1>\n <pry-list-metadata\n [metadata]=\"metadata$ | async\"\n [selectedMetadata]=\"selectedMetadataId$ | async\"\n [configHeader]=\"configHeader\"\n [sortActive]=\"sortActive\"\n [labelMetadataSelected]=\"value\"\n [sortDirection]=\"sortDirection\"\n (cancelAction$)=\"cancelEdition()\"\n (rowClicked$)=\"rowClicked($event)\"\n [editable]=\"false\"\n >\n </pry-list-metadata>\n</div>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { IMetadata } from '@provoly/dashboard';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\n\n@Component({\n selector: 'pry-admin-new-metadata',\n templateUrl: './admin-new-metadata.component.html'\n})\nexport class AdminNewMetadataComponent {\n constructor(private store: Store<any>) {}\n\n submit(metadata: IMetadata) {\n this.store.dispatch(MetadataActions.createMetadata({ metadata: metadata }));\n }\n}\n","<pry-form-metadata (submitMetadata$)=\"submit($event)\" [titleForm]=\"'@pry.admin.metadata.add' | i18n\">\n</pry-form-metadata>\n","import { Component, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, of, Subscription } from 'rxjs';\nimport { v4 } from 'uuid';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AbacRulesActions } from '../../admin-abac-rules/store/abac-rules.actions';\nimport { AbacRule } from '../../admin-abac-rules/store/abac-rules.model';\nimport { AbacRulesSelectors } from '../../admin-abac-rules/store/abac-rules.selectors';\nimport { PredicatesActions } from '../store/predicates.actions';\nimport { PredicatesSelectors } from '../store/predicates.selectors';\n\n@Component({\n selector: 'pry-admin-predicates-form',\n templateUrl: './admin-predicates-form.component.html'\n})\nexport class AdminPredicatesFormComponent implements OnChanges, OnDestroy {\n private rules$: Observable<AbacRule[]>;\n predicatesUsed$: Observable<number> = of(0);\n predicateNames$?: Observable<string[]>;\n nameAlreadyExists$?: Observable<boolean>;\n\n sub = new Subscription();\n _currentPred?: Predicate;\n predForm: UntypedFormGroup;\n openedModal = false;\n isSubmitted = false;\n validateAction: () => void;\n cancelAction: () => void;\n\n @Input() set currentPred(val: Predicate) {\n this._currentPred = val;\n }\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute,\n private formBuilder: UntypedFormBuilder\n ) {\n this.store.dispatch(AbacRulesActions.loadAbacRules());\n this.rules$ = this.store.select(AbacRulesSelectors.abacRules);\n\n this.validateAction = () => this.addPredicate();\n this.cancelAction = () => this.goBack();\n\n this.predForm = this.formBuilder.group({\n id: [{ value: v4(), disabled: true }, Validators.required],\n name: ['', [Validators.required]],\n value: ['', [Validators.required]]\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.predicateNames$ = this.store\n .select(PredicatesSelectors.predicates)\n .pipe(map((predicates) => predicates.map((predicate) => predicate.name.toLowerCase())));\n\n this.nameAlreadyExists$ = combineLatest([\n this.predForm.get('name')?.valueChanges as Observable<string>,\n this.predicateNames$\n ]).pipe(\n map(([value, predicateNames]) => predicateNames.includes(value.toLowerCase()) && value != this._currentPred?.name)\n );\n this.sub.add(\n this.nameAlreadyExists$.subscribe((value) => {\n if (value) {\n this.predForm.controls['name'].setErrors({ 'same-name': true });\n }\n return value;\n })\n );\n\n if (!this._currentPred) {\n this.predForm.patchValue({\n id: v4()\n });\n } else if (this._currentPred) {\n this.predicatesUsed$ = this.rules$.pipe(\n map((rules) => rules.filter((rule) => rule.predicate === this._currentPred?.id).length)\n );\n this.predForm.patchValue({\n id: this._currentPred.id,\n name: this._currentPred.name,\n value: this._currentPred.value\n });\n }\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n }\n\n goBack() {\n this.store.dispatch(AdminActions.routeTo({ path: this.getPath() }));\n }\n\n addPredicate() {\n this.isSubmitted = true;\n if (this.predForm.valid) {\n this.isSubmitted = false;\n this.store.dispatch(\n PredicatesActions.savePredicate({ predicate: this.predForm.getRawValue(), route: this.getPath() })\n );\n }\n }\n\n checkModal() {\n this.sub.add(this.predicatesUsed$.subscribe((used) => (this.openedModal = used > 0)));\n if (!this.openedModal) {\n this.addPredicate();\n }\n }\n\n getPath() {\n let path = this.router.createUrlTree(['..'], { relativeTo: this.route });\n if (this._currentPred) {\n path = this.router.createUrlTree(['../..'], { relativeTo: this.route });\n }\n return path.toString();\n }\n}\n","<div>\n <form class=\"o-form\" [formGroup]=\"predForm\" (ngSubmit)=\"checkModal()\">\n <div class=\"m-form-label-field -width-sm\">\n <label id=\"name-label\" for=\"name\" class=\"a-label\">\n {{ '@pry.admin.predicates.name' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <input\n id=\"name\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"name\"\n [attr.aria-labelledby]=\"isSubmitted && predForm.get('name')?.invalid ? 'name-label name-error' : 'name-label'\"\n [attr.aria-invalid]=\"isSubmitted && predForm.get('name')?.invalid\"\n required\n />\n @if (isSubmitted && predForm.get('name')?.invalid) {\n <label\n id=\"name-error\"\n for=\"name\"\n class=\"a-label a-label--help -error\"\n >\n @if (predForm.get('name')?.hasError('same-name')) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (predForm.get('name')?.hasError('required')) {\n <span>{{ '@pry.admin.required' | i18n }}</span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-form-label-field -width-xl\">\n <label id=\"value-label\" for=\"value\" class=\"a-label\">\n {{ '@pry.admin.predicates.value' | i18n }} *\n <span class=\"u-visually-hidden\">({{ '@pry.admin.required' | i18n }})</span>\n </label>\n <textarea\n id=\"value\"\n rows=\"10\"\n type=\"text\"\n class=\"a-form-field\"\n formControlName=\"value\"\n name=\"value\"\n [attr.aria-labelledby]=\"\n isSubmitted && predForm.get('value')?.invalid ? 'value-label value-error' : 'value-label'\n \"\n [attr.aria-invalid]=\"isSubmitted && predForm.get('value')?.invalid\"\n required\n ></textarea>\n @if (isSubmitted && predForm.get('value')?.invalid) {\n <label\n id=\"value-error\"\n for=\"value\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.admin.required' | i18n }}\n </label>\n }\n </div>\n\n <div class=\"m-btn-group -width-sm\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n (click)=\"goBack()\"\n [innerHTML]=\"'@pry.admin.cancel' | i18n\"\n ></button>\n <button\n class=\"a-btn a-btn--primary\"\n type=\"submit\"\n [innerHTML]=\"(_currentPred ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n</div>\n\n@if (predicatesUsed$ | async; as used) {\n <div>\n <pry-modal\n [titleModal]=\"'@pry.admin.predicates.validEdit' | i18n\"\n [validateLabel]=\"'@pry.admin.edit' | i18n\"\n [validateAction]=\"validateAction\"\n [cancelLabel]=\"'@pry.admin.cancel' | i18n\"\n [cancelAction]=\"cancelAction\"\n [opened]=\"openedModal\"\n >\n <p [innerHTML]=\"'@pry.admin.predicates.validEditMessage' | i18n: { used: used }\"></p>\n </pry-modal>\n </div>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'pry-admin-predicates-new',\n templateUrl: './admin-predicates-new.component.html'\n})\nexport class AdminPredicatesNewComponent {}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.predicates.add' | i18n }}</h1>\n <pry-admin-predicates-form></pry-admin-predicates-form>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { PredicatesActions } from '../store/predicates.actions';\nimport { PredicatesSelectors } from '../store/predicates.selectors';\n\n@Component({\n selector: 'pry-admin-predicates-update',\n templateUrl: './admin-predicates-update.component.html'\n})\nexport class AdminPredicatesUpdateComponent implements OnInit {\n currentPredicate$: Observable<Predicate | undefined>;\n\n constructor(\n private store: Store<any>,\n private router: Router,\n private route: ActivatedRoute\n ) {\n this.currentPredicate$ = this.store.select(PredicatesSelectors.currentPredicate);\n }\n\n ngOnInit(): void {\n this.route.params.subscribe((params) =>\n this.store.dispatch(PredicatesActions.selectPredicate({ id: params['id'] }))\n );\n }\n}\n","@if (currentPredicate$ | async; as currentPred) {\n <div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.predicates.edit' | i18n }}</h1>\n <pry-admin-predicates-form [currentPred]=\"currentPred\"></pry-admin-predicates-form>\n </div>\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Predicate } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { PredicatesActions } from './store/predicates.actions';\nimport { PredicatesSelectors } from './store/predicates.selectors';\n\n@Component({\n selector: 'pry-admin-predicates',\n templateUrl: './admin-predicates.component.html'\n})\nexport class AdminPredicatesComponent {\n predicates$: Observable<Predicate[]>;\n loading$: Observable<boolean>;\n currentPredicateId$: Observable<string | undefined>;\n\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n constructor(private store: Store<any>, private router: Router, private route: ActivatedRoute) {\n this.store.dispatch(PredicatesActions.loadPredicates());\n this.predicates$ = this.store.select(PredicatesSelectors.predicates);\n this.loading$ = this.store.select(PredicatesSelectors.loading);\n const path = this.router.createUrlTree(['.', 'new'], { relativeTo: this.route });\n this.currentPredicateId$ = this.store.select(PredicatesSelectors.currentPredicateId);\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: path.toString() }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'predicates',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n goToSelectPredicate(num: string) {\n this.store.dispatch(PredicatesActions.selectPredicate({ id: num }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminPredicatesSelectComponent' }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.predicates.list' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.predicates.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.predicates.name' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (predicate of predicates$ | async | prySortData: sortActive : sortDirection; track predicate) {\n <tr\n (click)=\"goToSelectPredicate(predicate.id)\"\n [class.is-selected]=\"(currentPredicateId$ | async) === predicate.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-pred-' + predicate.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"false\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-pred-' + predicate.id\"\n >\n <span class=\"u-visually-hidden\">{{ predicate.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ predicate.name }}</td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Component, OnDestroy, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { Store } from '@ngrx/store';\nimport { ConfigActions, RelationType, RelationTypesActions, RelationTypesSelectors } from '@provoly/dashboard';\nimport { combineLatest, map, Observable, Subscription } from 'rxjs';\nimport { v4 as uuid } from 'uuid';\n\n@Component({\n selector: 'pry-admin-relation-types-modal',\n templateUrl: './admin-relation-types-modal.component.html'\n})\nexport class AdminRelationTypesModalComponent implements OnInit, OnDestroy {\n openModal$: Observable<boolean>;\n nameAlreadyExists$?: Observable<boolean>;\n selectedRelationType$: Observable<RelationType | undefined>;\n relationTypesNames$: Observable<string[]>;\n\n selectedRelationType?: RelationType;\n relationTypeForm: UntypedFormGroup;\n sub = new Subscription();\n nameAlreadyExists = false;\n isSubmitted = false;\n\n private overlayRef?: OverlayRef;\n @ViewChild('template', { read: TemplateRef }) template!: TemplateRef<any>;\n\n constructor(\n private store: Store<AdminRelationTypesModalComponent>,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private formBuilder: UntypedFormBuilder\n ) {\n this.openModal$ = this.store.select(RelationTypesSelectors.openModal);\n this.relationTypesNames$ = this.store\n .select(RelationTypesSelectors.relationsTypes)\n .pipe(map((links) => links.map((l) => l.name.toLowerCase())));\n this.selectedRelationType$ = this.store.select(RelationTypesSelectors.selectedRelationType);\n\n this.relationTypeForm = this.formBuilder.group({\n id: [uuid()],\n name: ['', [Validators.required, Validators.maxLength(30)]]\n });\n }\n\n ngOnInit(): void {\n this.sub.add(\n this.openModal$.subscribe((open) => {\n if (open) {\n this.showModal();\n } else {\n this.closeModal();\n }\n })\n );\n\n this.nameAlreadyExists$ = combineLatest([\n this.relationTypeForm.get('name')?.valueChanges as Observable<string>,\n this.relationTypesNames$\n ]).pipe(map(([value, lNames]) => lNames.includes(value.toLowerCase())));\n\n this.sub.add(this.nameAlreadyExists$.subscribe((value) => (this.nameAlreadyExists = value)));\n\n this.sub.add(\n this.selectedRelationType$.subscribe((rt) => {\n this.selectedRelationType = rt;\n })\n );\n }\n\n ngOnDestroy(): void {\n this.sub.unsubscribe();\n }\n\n showModal() {\n if (this.selectedRelationType) {\n this.relationTypeForm.patchValue({\n id: this.selectedRelationType.id,\n name: this.selectedRelationType.name\n });\n } else {\n this.relationTypeForm.patchValue({\n id: uuid(),\n name: ''\n });\n }\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n hasBackdrop: true,\n panelClass: ['o-modal-wrapper'],\n backdropClass: 'backdrop'\n })\n );\n this.store.dispatch(ConfigActions.addingOverlay({ id: this.constructor.name }));\n this.overlayRef.backdropClick().subscribe((_) => this.closeModal());\n this.overlayRef.attach(new TemplatePortal(this.template, this.viewContainerRef));\n }\n\n closeModal() {\n this.overlayRef?.dispose();\n this.store.dispatch(RelationTypesActions.closeModal());\n this.store.dispatch(ConfigActions.closeOverlay({ id: this.constructor.name }));\n }\n\n addRelationType() {\n this.isSubmitted = true;\n if (this.relationTypeForm.valid && !this.nameAlreadyExists) {\n this.store.dispatch(\n RelationTypesActions.saveRelationType({\n id: this.relationTypeForm.value.id,\n name: this.relationTypeForm.value.name\n })\n );\n this.closeModal();\n }\n }\n}\n","<ng-template #template>\n <div class=\"o-modal\">\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2\n class=\"a-h2\"\n id=\"dialog_title\"\n [innerHTML]=\"(selectedRelationType ? '@pry.admin.relationTypes.edit' : '@pry.admin.relationTypes.add') | i18n\"\n >\n {{ '@pry.toolbox.rename' | i18n }}\n </h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" (click)=\"closeModal()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n\n <form [formGroup]=\"relationTypeForm\" (ngSubmit)=\"addRelationType()\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"name\"></label>\n <input type=\"text\" class=\"a-form-field\" id=\"name\" formControlName=\"name\" required />\n @if (isSubmitted && (relationTypeForm.get('name')?.invalid || nameAlreadyExists)) {\n <label\n id=\"name-error\"\n for=\"name\"\n class=\"a-label a-label--help -error\"\n >\n @if (nameAlreadyExists) {\n <span>{{ '@pry.admin.exists' | i18n }}</span>\n }\n @if (relationTypeForm.get('name')?.hasError('required')) {\n <span>\n {{ '@pry.admin.required' | i18n }}\n </span>\n }\n @if (relationTypeForm.get('name')?.hasError('maxlength')) {\n <span>\n {{ '@pry.admin.maxLength' | i18n: { len: '30' } }}\n </span>\n }\n </label>\n }\n </div>\n\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"closeModal()\">\n {{ '@pry.context.cancel' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n [innerHTML]=\"(selectedRelationType ? '@pry.admin.edit' : '@pry.admin.create') | i18n\"\n ></button>\n </div>\n </form>\n </div>\n</ng-template>\n","import { Component } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { RelationType, RelationTypesActions, RelationTypesSelectors } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\n\n@Component({\n selector: 'pry-admin-relation-types',\n templateUrl: './admin-relation-types.component.html'\n})\nexport class AdminRelationTypesComponent {\n relationTypes: Observable<RelationType[]>;\n selectedRelationType$: Observable<RelationType | undefined>;\n\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n constructor(private store: Store<AdminRelationTypesComponent>) {\n this.store.dispatch(RelationTypesActions.load({}));\n this.store.dispatch(RelationTypesActions.unSelectRelationType());\n this.relationTypes = this.store.select(RelationTypesSelectors.relationsTypes);\n this.selectedRelationType$ = this.store.select(RelationTypesSelectors.selectedRelationType);\n\n this.store.dispatch(\n AdminActions.mainActions({\n actions: [\n {\n action: RelationTypesActions.openModal(),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'relation_types',\n actionAccess: 'write'\n }\n ]\n })\n );\n }\n\n selectlink(link: any) {\n this.store.dispatch(RelationTypesActions.selectRelationType({ id: link.id }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminRelationTypesSelectComponent' }));\n }\n}\n","<div class=\"o-base-container\">\n <h1 class=\"a-h1\">{{ '@pry.admin.relationTypes.list' | i18n }}</h1>\n <table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.relationTypes.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.relationTypes.name' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.relationTypes.nbLink' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (relationType of relationTypes | async | prySortData: sortActive : sortDirection; track relationType) {\n <tr\n (click)=\"selectlink(relationType)\"\n [class.is-selected]=\"(selectedRelationType$ | async)?.id === relationType.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-rt-' + relationType.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedRelationType$ | async)?.id === relationType.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-rt-' + relationType.id\"\n >\n <span class=\"u-visually-hidden\">{{ relationType.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ relationType.name }}</td>\n <td>{{ relationType.nbLink }}</td>\n </tr>\n }\n </tbody>\n </table>\n\n <pry-admin-relation-types-modal></pry-admin-relation-types-modal>\n</div>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { UserInfo } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\nimport { AdminActions } from '../../store/admin.actions';\nimport { AdminUserActions } from './store/admin-user.action';\nimport { AdminUserSelectors } from './store/admin-user.selector';\n\n@Component({\n selector: 'pry-admin-user',\n templateUrl: './admin-user.component.html'\n})\nexport class AdminUserComponent {\n users$: Observable<UserInfo[]>;\n selectedUser$: Observable<UserInfo | undefined>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n constructor(private store: Store<AdminUserComponent>, private router: Router, private route: ActivatedRoute) {\n this.store.dispatch(AdminUserActions.unselectUser());\n this.store.dispatch(AdminUserActions.loadUsers());\n this.users$ = this.store.select(AdminUserSelectors.users);\n this.selectedUser$ = this.store.select(AdminUserSelectors.selectedUser);\n\n this.store.dispatch(AdminActions.mainActions({ actions: [] }));\n }\n\n selectUser(user: UserInfo) {\n this.store.dispatch(AdminUserActions.selectUser({ userId: user.id }));\n this.store.dispatch(AdminActions.selectComponentType({ componentType: 'AdminUserSelectComponent' }));\n }\n}\n","<h1 class=\"a-h1\">{{ '@pry.admin.userInfo.list' | i18n }}</h1>\n<table\n class=\"a-table\"\n prySortTable\n prySortActive=\"name\"\n prySortDirection=\"asc\"\n (prySortChange)=\"sortActive = $event.active; sortDirection = $event.direction\"\n >\n <caption>\n {{\n '@pry.admin.userInfo.list' | i18n\n }},\n {{\n '@pry.action.sortableColumnHeader' | i18n\n }}\n </caption>\n <thead>\n <tr>\n <th></th>\n <th prySortHeader=\"name\">{{ '@pry.admin.userInfo.name' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.userInfo.familyName' | i18n }}</th>\n <th prySortHeader=\"name\">{{ '@pry.admin.userInfo.email' | i18n }}</th>\n </tr>\n </thead>\n <tbody>\n @for (user of users$ | async | prySortData: sortActive : sortDirection; track user) {\n <tr\n (click)=\"selectUser(user)\"\n [class.is-selected]=\"(selectedUser$ | async)?.id === user.id\"\n >\n <td class=\"view-details\">\n <button\n [id]=\"'button-user-' + user.id\"\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n title=\"{{ '@pry.action.viewDetails' | i18n }}\"\n [attr.aria-expanded]=\"(selectedUser$ | async)?.id === user.id\"\n aria-haspopup\n [attr.aria-controls]=\"'panel-user-' + user.id\"\n >\n <span class=\"u-visually-hidden\">{{ user.name }}, {{ '@pry.action.viewDetails' | i18n }}</span>\n <pry-icon iconSvg=\"eye\" [width]=\"15\" [height]=\"15\"></pry-icon>\n </button>\n </td>\n <td>{{ user.name }}</td>\n <td>{{ user.familyName }}</td>\n <td>{{ user.email }}</td>\n </tr>\n }\n </tbody>\n</table>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { PRY_ACCESS_GUARD } from '@provoly/dashboard';\nimport { AdminAbacRulesEditComponent } from './components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component';\nimport { AdminAbacRulesNewComponent } from './components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component';\nimport { AdminAbacRulesViewComponent } from './components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component';\nimport { AdminAbacRulesComponent } from './components/admin-abac-rules/admin-abac-rules.component';\nimport { AdminClassesCustomizeComponent } from './components/admin-classes/admin-classes-customize/admin-classes-customize.component';\nimport { AdminClassesEditComponent } from './components/admin-classes/admin-classes-edit/admin-classes-edit.component';\nimport { AdminClassesNewComponent } from './components/admin-classes/admin-classes-new/admin-classes-new.component';\nimport { AdminAttributesEditComponent } from './components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component';\nimport { AdminAttributesNewComponent } from './components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component';\nimport { AdminClassesViewComponent } from './components/admin-classes/admin-classes-view/admin-classes-view.component';\nimport { AdminClassesComponent } from './components/admin-classes/admin-classes.component';\nimport { AdminDatasetComponent } from './components/admin-dataset/admin-dataset.component';\nimport { AdminEditDatasetComponent } from './components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component';\nimport { AdminNewDatasetComponent } from './components/admin-dataset/admin-new-dataset/admin-new-dataset.component';\nimport { AdminEnvironmentNewComponent } from './components/admin-environment/admin-environment-new/admin-environment-new.component';\nimport { AdminEnvironmentUpdateComponent } from './components/admin-environment/admin-environment-update/admin-environment-update.component';\nimport { AdminEnvironmentComponent } from './components/admin-environment/admin-environment.component';\nimport { AdminFieldsEditComponent } from './components/admin-fields/admin-fields-edit/admin-fields-edit.component';\nimport { AdminFieldsNewComponent } from './components/admin-fields/admin-fields-new/admin-fields-new.component';\nimport { AdminFieldsComponent } from './components/admin-fields/admin-fields.component';\nimport { AdminLayoutComponent } from './components/admin-layout/admin-layout.component';\nimport { AdminLinksNewComponent } from './components/admin-links/admin-links-new/admin-links-new.component';\nimport { AdminLinksComponent } from './components/admin-links/admin-links.component';\nimport { AdminEditMetadataRulesComponent } from './components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component';\nimport { AdminMetadataRulesComponent } from './components/admin-metadata-rules/admin-metadata-rules.component';\nimport { AdminNewMetadataRulesComponent } from './components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component';\nimport { AdminMetadataUserComponent } from './components/admin-metadata-user/admin-metadata-user.component';\nimport { AdminUserEditMetadataComponent } from './components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component';\nimport { AdminUserNewMetadataComponent } from './components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component';\nimport { AdminEditMetadataComponent } from './components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component';\nimport { AdminMetadataComponent } from './components/admin-metadata/admin-metadata.component';\nimport { AdminNewMetadataComponent } from './components/admin-metadata/admin-new-metadata/admin-new-metadata.component';\nimport { AdminPredicatesNewComponent } from './components/admin-predicates/admin-predicates-new/admin-predicates-new.component';\nimport { AdminPredicatesUpdateComponent } from './components/admin-predicates/admin-predicates-update/admin-predicates-update.component';\nimport { AdminPredicatesComponent } from './components/admin-predicates/admin-predicates.component';\nimport { AdminRelationTypesComponent } from './components/admin-relation-types/admin-relation-types.component';\nimport { AdminUserComponent } from './components/admin-user/admin-user.component';\nimport { PryAdminComponent } from './components/admin.component';\n\nexport const routes: Routes = [\n {\n path: '',\n data: {\n access: {\n module: 'admin'\n }\n },\n canActivate: [PRY_ACCESS_GUARD],\n component: AdminLayoutComponent,\n children: [\n {\n path: 'environment',\n children: [\n {\n path: '',\n component: AdminEnvironmentComponent,\n data: {\n access: {\n module: 'admin',\n page: 'environment'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminEnvironmentNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'environment',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:name',\n component: AdminEnvironmentUpdateComponent,\n data: {\n access: {\n module: 'admin',\n page: 'environment',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'user',\n children: [\n {\n path: '',\n component: AdminUserComponent,\n data: {\n access: {\n module: 'admin',\n page: 'user'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'classes',\n children: [\n {\n path: '',\n component: AdminClassesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminClassesNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: ':id',\n children: [\n {\n path: '',\n component: AdminClassesViewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminAttributesNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit',\n component: AdminClassesEditComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'customize',\n component: AdminClassesCustomizeComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: ':attrId/edit',\n component: AdminAttributesEditComponent,\n data: {\n access: {\n module: 'admin',\n page: 'classes',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n }\n ]\n },\n {\n path: 'predicates',\n children: [\n {\n path: '',\n component: AdminPredicatesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'predicates'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminPredicatesNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'predicates',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:id',\n component: AdminPredicatesUpdateComponent,\n data: {\n access: {\n module: 'admin',\n page: 'predicates',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'fields',\n children: [\n {\n path: '',\n component: AdminFieldsComponent,\n data: {\n access: {\n module: 'admin',\n page: 'fields'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminFieldsNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'fields',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:id',\n component: AdminFieldsEditComponent,\n data: {\n access: {\n module: 'admin',\n page: 'fields',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'abac-rules',\n children: [\n {\n path: '',\n component: AdminAbacRulesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'abac_rules'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminAbacRulesNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'abac_rules',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: ':id',\n component: AdminAbacRulesViewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'abac_rules'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: ':id/edit',\n component: AdminAbacRulesEditComponent,\n data: {\n access: {\n module: 'admin',\n page: 'abac_rules',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'metadata',\n children: [\n {\n path: '',\n component: AdminMetadataComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminNewMetadataComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:uuid',\n component: AdminEditMetadataComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'metadata-user',\n children: [\n {\n path: '',\n component: AdminMetadataUserComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_user'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminUserNewMetadataComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_user',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:uuid',\n component: AdminUserEditMetadataComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_user',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'metadata-rules',\n children: [\n {\n path: '',\n component: AdminMetadataRulesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_rules'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminNewMetadataRulesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_rules',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:uuid',\n component: AdminEditMetadataRulesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'metadata_rules',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'dataset',\n children: [\n {\n path: '',\n component: AdminDatasetComponent,\n data: {\n access: {\n module: 'admin',\n page: 'dataset'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminNewDatasetComponent,\n data: {\n access: {\n module: 'admin',\n page: 'dataset',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'edit/:uuid',\n component: AdminEditDatasetComponent,\n data: {\n access: {\n module: 'admin',\n page: 'dataset',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'relation-types',\n children: [\n {\n path: '',\n component: AdminRelationTypesComponent,\n data: {\n access: {\n module: 'admin',\n page: 'relation_types'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: 'links',\n children: [\n {\n path: '',\n component: AdminLinksComponent,\n data: {\n access: {\n module: 'admin',\n page: 'links'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n },\n {\n path: 'new',\n component: AdminLinksNewComponent,\n data: {\n access: {\n module: 'admin',\n page: 'links',\n action: 'write'\n }\n },\n canActivate: [PRY_ACCESS_GUARD]\n }\n ]\n },\n {\n path: '',\n component: PryAdminComponent\n },\n {\n path: '**',\n redirectTo: '',\n pathMatch: 'full'\n }\n ]\n },\n {\n path: '**',\n redirectTo: '',\n pathMatch: 'full'\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class AdminRoutingModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Associations,\n Attribute,\n Category,\n Class,\n ConfigSelectors,\n Environment,\n IMetadata,\n Link,\n LinkDetails,\n MetadataRules,\n MetadataRulesCreate,\n Predicate,\n UserInfo\n} from '@provoly/dashboard';\nimport { mergeMap, Observable } from 'rxjs';\nimport { AbacRule } from '../components/admin-abac-rules/store/abac-rules.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdminService {\n constructor(\n private httpClient: HttpClient,\n private store: Store<any>\n ) {}\n\n getPredicates(): Observable<Predicate[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Predicate[]>(`${url}/predicates`)));\n }\n\n savePredicate(predicate: Predicate): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(`${url}/predicates`, predicate)));\n }\n\n getPredicate(id: string): Observable<Predicate> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Predicate>(`${url}/predicates/id/${id}`)));\n }\n\n getUserMetadata(): Observable<any> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<any>(`${url}/users/metadata`)));\n }\n\n getUserMetadataDef(id: string): Observable<IMetadata> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<IMetadata>(`${url}/users/metadata/${id}`)));\n }\n\n postUserMetadata(metadata: IMetadata): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(`${url}/users/metadata`, metadata)));\n }\n\n getEnvironments(): Observable<Environment[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Environment[]>(`${url}/abac/context`)));\n }\n\n saveEnvironment(env: Environment): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.put<void>(`${url}/abac/context`, env)));\n }\n\n getEnvironment(name: string): Observable<Environment> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Environment>(`${url}/abac/context/${name}`)));\n }\n\n deleteEnvironment(name: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete<void>(`${url}/abac/context/${name}`)));\n }\n\n getAbacRules(): Observable<AbacRule[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<AbacRule[]>(`${url}/abac/rules`)));\n }\n\n getAbacRule(id: string): Observable<AbacRule> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<AbacRule>(`${url}/abac/rules/id/${id}`)));\n }\n\n saveAbacRule(rule: AbacRule): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(`${url}/abac/rules`, rule)));\n }\n\n getClassAssociations(id: string): Observable<Associations> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Associations>(`${url}/model/class/${id}/associations`)));\n }\n\n getDatasetAssociations(id: string): Observable<Associations> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Associations>(`${url}/datasets/${id}/associations`)));\n }\n\n getFieldAssociations(id: string): Observable<Associations> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Associations>(`${url}/model/fields/${id}/associations`)));\n }\n\n getAttributeAssociations(id: string): Observable<Associations> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Associations>(`${url}/model/attribute/${id}/associations`)));\n }\n\n getClass(id: string): Observable<Class> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Class>(`${url}/model/class/id/${id}`)));\n }\n\n saveClass(clazz: Class): Observable<void> {\n const clazzToSave = {\n ...clazz,\n attributes: [...clazz.attributes.map((attr) => ({ ...attr, field: attr.field.id }))]\n };\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(encodeURI(`${url}/model/class`), clazzToSave)));\n }\n\n saveAttributeForClass(classId: string, attribute: Attribute): Observable<void> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.put<void>(encodeURI(`${url}/model/class/id/${classId}/attribute`), {\n ...attribute,\n field: attribute.field.id\n })\n )\n );\n }\n\n deleteClass(id: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete<void>(encodeURI(`${url}/model/class/id/${id}`))));\n }\n\n deleteAttributeForClass(classId: string, attrId: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(\n mergeMap((url) =>\n this.httpClient.delete<void>(encodeURI(`${url}/model/class/id/${classId}/attribute/id/${attrId}`))\n )\n );\n }\n\n saveCategory(category: Category): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.put<void>(encodeURI(`${url}/model/categories`), category)));\n }\n\n getUsers(): Observable<UserInfo[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<UserInfo[]>(`${url}/users`)));\n }\n\n getLinks(): Observable<LinkDetails[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<LinkDetails[]>(`${url}/links`)));\n }\n\n saveLink(link: Link): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(encodeURI(`${url}/links`), link)));\n }\n\n addMetadataRules(metadataRules: MetadataRulesCreate): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.post<void>(encodeURI(`${url}/meta-provisioning`), metadataRules)));\n }\n\n getMetadataRulesList(): Observable<MetadataRules[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<MetadataRules[]>(`${url}/meta-provisioning`)));\n }\n\n getMetadataRules(id: string): Observable<MetadataRules> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<MetadataRules>(`${url}/meta-provisioning/id/${id}`)));\n }\n\n deleteMetadataRules(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete<MetadataRules>(`${url}/meta-provisioning/id/${id}`)));\n }\n\n getStorageOptions() {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<string[]>(`${url}/model/storages`)));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { catchError, map, mergeMap, switchMap, withLatestFrom } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { AbacRulesActions } from './abac-rules.actions';\nimport { AbacRulesSelectors } from './abac-rules.selectors';\nimport { AbacRulesService } from './abac-rules.service';\n\n@Injectable()\nexport class AbacRulesEffects {\n loadAbacRules$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.loadAbacRules),\n mergeMap((action) =>\n this.service.getAbacRules().pipe(\n map((datas) => AbacRulesActions.loadAbacRulesSuccess({ datas })),\n catchError((error) => [AbacRulesActions.loadAbacRulesFailure({ error: error })])\n )\n )\n )\n );\n\n cancelAbacRuleEdition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.cancelAbacRuleEdition),\n map((action) => AdminActions.routeTo({ path: action.redirect }))\n )\n );\n\n initEditAbacRule$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.initEditAbacRule),\n switchMap((action) => {\n const abacRuleAction$ = AbacRulesActions.updateEditAbacRule({ rule: action.rule });\n const initialEditAbacConditions = this.abacRulesService.initializeCondition();\n const abacRuleConditionsAction$ = AbacRulesActions.initEditAbacRuleConditions({\n condition: {\n masterId: initialEditAbacConditions.id,\n ids: [initialEditAbacConditions.id],\n entities: {\n [initialEditAbacConditions.id]: initialEditAbacConditions\n }\n }\n });\n return [abacRuleAction$, abacRuleConditionsAction$];\n })\n )\n );\n\n createEditAbacRuleMetadataCondition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.createEditAbacRuleMetadataCondition),\n map((action) => {\n const newMetadataCondition = this.abacRulesService.getMetadataCondition(action.metadataId, action.parentId);\n return AbacRulesActions.addEditAbacRuleConditions({ condition: newMetadataCondition });\n })\n )\n );\n\n createEditAbacRuleAttributeCondition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.createEditAbacRuleAttributeCondition),\n map((action) => {\n const newAttributeCondition = this.abacRulesService.getAttributeCondition(\n action.attributeId,\n action.classId,\n action.parentId\n );\n return AbacRulesActions.addEditAbacRuleConditions({ condition: newAttributeCondition });\n })\n )\n );\n\n createEditAbacRuleNestedCondition$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.createEditAbacRuleNestedCondition),\n map((action) => {\n const newCondition = this.abacRulesService.initializeCondition(action.parentId);\n return AbacRulesActions.addEditAbacRuleConditions({ condition: newCondition });\n })\n )\n );\n\n addEditAbacRuleConditionsMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.addEditAbacRuleConditions),\n map((action) => {\n return AbacRulesActions.addEditAbacRuleConditionsToParent({\n conditionId: action.condition.id,\n parentId: action.condition.parentId\n });\n })\n )\n );\n\n removeEditAbacRuleConditionFromComposed$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.removeEditAbacRuleConditionFromComposed),\n map((action) => {\n return AbacRulesActions.removeEditAbacRuleLeafCondition({\n conditionId: action.childrenId\n });\n })\n )\n );\n\n saveEditAbacRule$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.saveEditAbacRule),\n withLatestFrom(\n this.store.select(AbacRulesSelectors.editAbacRule),\n this.store.select(AbacRulesSelectors.editAbacRuleConditions)\n ),\n mergeMap(([action, rule, conditions]) => {\n const payload = this.abacRulesService.buildPayloadForAbacRule(rule!, conditions);\n return this.service.saveAbacRule(payload).pipe(\n map(() => AbacRulesActions.saveAbacRuleSuccess({ redirect: action.redirect })),\n catchError((error) => [AbacRulesActions.saveAbacRuleFailure({ error: error })])\n );\n })\n )\n );\n\n saveAbacRuleSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.saveAbacRuleSuccess),\n mergeMap((action) => [AbacRulesActions.resetEditAbacRule(), AdminActions.routeTo({ path: action.redirect })])\n )\n );\n\n fetchAbacRule$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.fetchAbacRule),\n mergeMap((action) =>\n this.service.getAbacRule(action.id).pipe(\n map((rule) => AbacRulesActions.fetchAbacRuleSuccess({ rule })),\n catchError((error) => [AbacRulesActions.fetchAbacRuleFailure({ error: error })])\n )\n )\n )\n );\n\n fetchAbacRuleSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AbacRulesActions.fetchAbacRuleSuccess),\n switchMap((action) => {\n const editRule = this.abacRulesService.mapAbacRuleToEditAbacRule(action.rule);\n const abacRuleAction$ = AbacRulesActions.updateEditAbacRule({ rule: editRule.rule });\n const abacRuleConditionsAction$ = AbacRulesActions.initEditAbacRuleConditions({\n condition: editRule.conditions\n });\n return [abacRuleAction$, abacRuleConditionsAction$];\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private store: Store<any>,\n private abacRulesService: AbacRulesService\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport {\n CategoryActions,\n ClassActions,\n PryDialogConfirmComponent,\n PryDialogConfirmData,\n PryDialogService\n} from '@provoly/dashboard';\nimport { catchError, map, mergeMap, tap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { AdminClassActions } from './admin-class.actions';\n\n@Injectable()\nexport class AdminClassEffects {\n updateToolbox$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.updateToolbox),\n mergeMap((action) => {\n return [ClassActions.load({ force: true }), AdminActions.selectComponentType({ componentType: null })];\n })\n )\n );\n\n saveClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveClass),\n mergeMap((action) => {\n if (action.class.attributes.length === 0) {\n const data: PryDialogConfirmData = {\n title: '@pry.admin.infoModalTitle',\n message: '@pry.admin.classes.createClassModalMessage',\n actions: [{ id: 0, label: '@pry.admin.closeModale' }]\n };\n this.pryDialog.open(PryDialogConfirmComponent, { data });\n return [];\n }\n\n return this.adminService.saveClass(action.class).pipe(\n map(() => AdminClassActions.saveClassSuccess({ route: action.route })),\n catchError((error) => [AdminClassActions.saveClassFailure({ error: error })])\n );\n })\n )\n );\n\n saveInterClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveInterClass),\n mergeMap((action) => {\n return [AdminActions.routeTo({ path: action.route }), ClassActions.load({ force: true })];\n })\n )\n );\n\n saveClassSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveClassSuccess),\n mergeMap((action) => {\n return [AdminActions.routeTo({ path: action.route }), ClassActions.load({ force: true })];\n })\n )\n );\n\n saveAttributeForClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveAttributeForClass),\n mergeMap((action) =>\n this.adminService.saveAttributeForClass(action.classId, action.attribute).pipe(\n map(() => AdminClassActions.saveAttributeForClassSuccess({ route: action.route })),\n catchError((error) => [AdminClassActions.saveAttributeForClassFailure({ error: error })])\n )\n )\n )\n );\n\n saveAttributeForClassSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveAttributeForClassSuccess),\n mergeMap((action) => {\n return [AdminActions.routeTo({ path: action.route }), ClassActions.load({ force: true })];\n })\n )\n );\n\n deleteClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.deleteClass),\n mergeMap((action) =>\n this.adminService.deleteClass(action.id).pipe(\n map(() => AdminClassActions.deleteClassSuccess({ route: action.route })),\n catchError((error) => [AdminClassActions.deleteClassFailure({ error: error })])\n )\n )\n )\n );\n\n deleteClassSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.deleteClassSuccess),\n mergeMap((action) => {\n return [\n AdminClassActions.updateToolbox(),\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: action.route }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n }),\n ClassActions.load({ force: true })\n ];\n })\n )\n );\n\n deleteAttributeForClass$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.deleteAttributeForClass),\n mergeMap((action) =>\n this.adminService.deleteAttributeForClass(action.classId, action.attrId).pipe(\n map(() =>\n AdminClassActions.deleteAttributeForClassSuccess({\n classId: action.classId,\n backPath: action.backPath,\n addAttrPath: action.addAttrPath\n })\n ),\n catchError((error) => [AdminClassActions.deleteAttributeForClassFailure({ error: error })])\n )\n )\n )\n );\n\n deleteAttributeForClassSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.deleteAttributeForClassSuccess),\n mergeMap((action) => {\n return [\n AdminClassActions.updateToolbox(),\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: action.backPath }),\n label: 'back',\n icon: 'arrow_back'\n },\n {\n action: AdminActions.routeTo({ path: action.addAttrPath }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'classes',\n actionAccess: 'write'\n }\n ]\n }),\n ClassActions.load({ force: true })\n ];\n })\n )\n );\n\n saveCategory$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveCategory),\n mergeMap((action) =>\n this.adminService.saveCategory(action.category).pipe(\n map(() => AdminClassActions.saveCategorySuccess()),\n catchError((error) => [AdminClassActions.saveCategoryFailure({ error: error })])\n )\n )\n )\n );\n\n saveCategorySuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.saveCategorySuccess),\n map((action) => {\n return CategoryActions.load({ force: true });\n })\n )\n );\n\n back$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.back),\n map((action) => {\n return AdminActions.routeTo({ path: action.path });\n })\n )\n );\n\n confirmClassDeletion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(AdminClassActions.confirmClassDeletion),\n tap((action) => {\n const data: PryDialogConfirmData = {\n title: '@pry.admin.classes.deleteClassConfirmMessage',\n actions: [\n {\n id: 0,\n label: '@pry.admin.validate',\n actions: [AdminClassActions.deleteClass({ id: action.id, route: action.path })]\n },\n { id: 1, label: '@pry.admin.cancel' }\n ]\n };\n this.pryDialog.open(PryDialogConfirmComponent, { data });\n })\n ),\n { dispatch: false }\n );\n\n confirmAttributeDeletion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(AdminClassActions.confirmAttributeDeletion),\n tap((action) => {\n const data: PryDialogConfirmData = {\n title: '@pry.admin.deleteAttributeConfirmMessage',\n actions: [\n {\n id: 0,\n label: '@pry.admin.validate',\n actions: [\n AdminClassActions.deleteAttributeForClass({\n classId: action.classId,\n attrId: action.attrId,\n backPath: action.backPath,\n addAttrPath: action.addAttrPath\n })\n ]\n },\n {\n id: 1,\n label: '@pry.admin.cancel'\n }\n ]\n };\n this.pryDialog.open(PryDialogConfirmComponent, { data });\n })\n ),\n { dispatch: false }\n );\n\n getStorageOptions = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminClassActions.getStorageOptions),\n mergeMap(() => {\n return this.adminService.getStorageOptions().pipe(\n map((storageOptions) => AdminClassActions.getStorageOptionsSuccess({ storageOptions })),\n catchError((error) => [AdminClassActions.getStorageOptionsFailure({ error: error })])\n );\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private adminService: AdminService,\n private pryDialog: PryDialogService,\n private service: AdminService\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { EnvironmentActions } from './environment.actions';\n\n@Injectable()\nexport class EnvironmentEffects {\n loadEnvironments$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.loadEnvironments),\n mergeMap((action) =>\n this.service.getEnvironments().pipe(\n map((datas) => EnvironmentActions.loadEnvironmentsSuccess({ datas })),\n catchError((error) => [EnvironmentActions.loadEnvironmentsFailure({ error })])\n )\n )\n )\n );\n\n saveEnvironment$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.saveEnvironment),\n mergeMap((action) =>\n this.service.saveEnvironment(action.env).pipe(\n map(() => EnvironmentActions.saveEnvironmentSuccess({ route: action.route })),\n catchError((error) => [EnvironmentActions.saveEnvironmentFailure({ error })])\n )\n )\n )\n );\n\n saveEnvironmentSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.saveEnvironmentSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n selectEnvironment$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.selectEnvironment),\n mergeMap((action) =>\n this.service.getEnvironment(action.name).pipe(\n map((data) => EnvironmentActions.selectEnvironmentSuccess({ data })),\n catchError((error) => [EnvironmentActions.selectEnvironmentFailure({ error })])\n )\n )\n )\n );\n\n deleteEnvironment$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.deleteEnvironment),\n mergeMap((action) =>\n this.service.deleteEnvironment(action.name).pipe(\n map(() => EnvironmentActions.deleteEnvironmentSuccess({ route: action.route, addRoute: action.addRoute })),\n catchError((error) => [EnvironmentActions.deleteEnvironmentFailure({ error })])\n )\n )\n )\n );\n\n deleteEnvironmentSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(EnvironmentActions.deleteEnvironmentSuccess),\n mergeMap((action) => {\n return [\n EnvironmentActions.loadEnvironments(),\n AdminActions.selectComponentType({ componentType: null }),\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: action.addRoute }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'environment',\n actionAccess: 'write'\n }\n ]\n })\n ];\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private router: Router\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport {\n FieldActions,\n FieldService,\n PryDialogConfirmComponent,\n PryDialogConfirmData,\n PryDialogService\n} from '@provoly/dashboard';\nimport { catchError, map, mergeMap, tap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { FieldsActions } from './fields.actions';\n\n@Injectable()\nexport class FieldsEffects {\n updateToolbox$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.updateToolbox),\n mergeMap((action) => {\n return [FieldActions.load({ force: true }), AdminActions.selectComponentType({ componentType: null })];\n })\n )\n );\n\n saveField$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.saveField),\n mergeMap((action) =>\n this.fieldService.saveField(action.field).pipe(\n map(() => FieldsActions.saveFieldSuccess({ route: action.route })),\n catchError((error) => [FieldsActions.failure({ error: error })])\n )\n )\n )\n );\n\n saveFieldSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.saveFieldSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n updateField$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.updateField),\n mergeMap((action) =>\n this.fieldService.updateField(action.field).pipe(\n map(() => FieldsActions.updateFieldSuccess({ route: action.route })),\n catchError((error) => [FieldsActions.failure({ error: error })])\n )\n )\n )\n );\n\n updateFieldSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.updateFieldSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n confirmFieldDeletion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(FieldsActions.confirmFieldDeletion),\n tap((action) => {\n const data: PryDialogConfirmData = {\n title: '@pry.admin.fields.confirmFieldDeletion',\n actions: [\n {\n id: 0,\n label: '@pry.admin.validate',\n actions: [FieldsActions.deleteField({ id: action.id, route: action.path })]\n },\n {\n id: 1,\n label: '@pry.admin.cancel',\n color: 'secondary'\n }\n ]\n };\n this.pryDialog.open(PryDialogConfirmComponent, { data });\n })\n ),\n { dispatch: false }\n );\n\n deleteField$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.deleteField),\n mergeMap((action) =>\n this.fieldService.deleteField(action.id).pipe(\n map(() => FieldsActions.deleteFieldSuccess()),\n catchError((error) => [FieldsActions.failure({ error: error })])\n )\n )\n )\n );\n\n deleteFieldSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.deleteFieldSuccess),\n map((action) => {\n return FieldActions.load({ force: true });\n })\n )\n );\n\n closePanelOnDeleteFieldSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(FieldsActions.deleteFieldSuccess),\n map((action) => {\n return AdminActions.togglePanel({ panelOpen: false });\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private fieldService: FieldService,\n private pryDialog: PryDialogService\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { LinksActions } from './links.actions';\n\n@Injectable()\nexport class LinksEffects {\n loadLinks$ = createEffect(() =>\n this.actions$.pipe(\n ofType(LinksActions.loadLinks),\n mergeMap((action) =>\n this.service.getLinks().pipe(\n map((datas) => LinksActions.loadLinksSuccess({ datas })),\n catchError((error) => [LinksActions.loadLinksFailure({ error })])\n )\n )\n )\n );\n\n saveLink$ = createEffect(() =>\n this.actions$.pipe(\n ofType(LinksActions.saveLink),\n mergeMap((action) =>\n this.service.saveLink(action.link).pipe(\n map((data) => LinksActions.saveLinkSuccess({ route: action.route })),\n catchError((error) => [LinksActions.saveLinkFailure({ error })])\n )\n )\n )\n );\n\n saveLinkSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(LinksActions.saveLinkSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private router: Router\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { MetadataRules, MetadataRulesCreate } from '@provoly/dashboard';\nimport { catchError, switchMap } from 'rxjs';\nimport { map, mergeMap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { AdminMetadataRulesActions } from './metadata-rules.actions';\n\n@Injectable()\nexport class AdminMetadataRulesEffects {\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private router: Router\n ) {}\n\n getMetadataRules$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataRulesActions.load),\n switchMap(() => this.service.getMetadataRulesList()),\n map((list: MetadataRules[]) => AdminMetadataRulesActions.loaded({ list })),\n catchError((error: any) => [AdminMetadataRulesActions.failure({ error })])\n )\n );\n\n postMetadataRules$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataRulesActions.post),\n switchMap((props: { metadata: MetadataRulesCreate }) => this.service.addMetadataRules(props.metadata)),\n map(() => {\n AdminMetadataRulesActions.load();\n AdminMetadataRulesActions.unselectMetadata();\n const path = this.router.createUrlTree(['admin/metadata-rules']);\n return AdminActions.routeTo({ path: path.toString(), params: undefined });\n }),\n catchError((error: any) => [AdminMetadataRulesActions.failure({ error })])\n )\n );\n\n deleteMetadataRules$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataRulesActions.delete),\n mergeMap((action) =>\n this.service.deleteMetadataRules(action.name).pipe(\n mergeMap(() => {\n return [\n AdminMetadataRulesActions.load(),\n AdminActions.selectComponentType({ componentType: null }),\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: action.addRoute }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'metadata_rules',\n actionAccess: 'write'\n }\n ]\n })\n ];\n }),\n catchError((error) => [AdminMetadataRulesActions.failure({ error })])\n )\n )\n )\n );\n\n openNewMetadataRules$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataRulesActions.openNewMetadataRules),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { AdminMetadataUserActions } from './admin-metadata-user.action';\n\n@Injectable()\nexport class AdminMetadataUserEffects {\n goToDetailsView$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.goToDetailsViewMetadata),\n mergeMap((action) =>\n this.adminService.getUserMetadataDef(action.id).pipe(\n map((metadata) => AdminMetadataUserActions.goToDetailsViewMetadataSuccess({ metadata })),\n catchError((error) => [AdminMetadataUserActions.goToDetailsViewMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n switchToEditView$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.goToEditMetadata),\n mergeMap((action) =>\n this.adminService.getUserMetadataDef(action.id).pipe(\n map((metadata) => AdminMetadataUserActions.goToEditMetadataSuccess({ metadata, route: action.route })),\n catchError((error) => [AdminMetadataUserActions.goToEditMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n goToEditViewSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.goToEditMetadataSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n createMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.createMetadata),\n mergeMap((action) =>\n this.adminService.postUserMetadata(action.metadata).pipe(\n map(() => AdminMetadataUserActions.createMetadataSuccess({ metadata: action.metadata })),\n catchError((error) => [AdminMetadataUserActions.createMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n createMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.createMetadataSuccess),\n map((action) => {\n return MetadataActions.loadUserProfile();\n })\n )\n );\n\n updateMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.updateMetadata),\n mergeMap((action) =>\n this.adminService.postUserMetadata(action.metadata).pipe(\n map(() => AdminMetadataUserActions.updateMetadataSuccess({ metadata: action.metadata })),\n catchError((error) => [AdminMetadataUserActions.updateMetadataFailure({ error: error })])\n )\n )\n )\n );\n\n updateMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminMetadataUserActions.updateMetadataSuccess),\n map((action) => {\n return MetadataActions.loadUserProfile();\n })\n )\n );\n\n constructor(\n private actions$: Actions,\n private adminService: AdminService,\n private store: Store<any>,\n private router: Router\n ) {}\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { PryI18nModule, PryIconModule, PryModalModule, PrySortModule } from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { PryListMetadataComponent } from './pry-list-metadata.component';\n\n@NgModule({\n declarations: [PryListMetadataComponent],\n exports: [PryListMetadataComponent],\n imports: [CommonModule, PrySortModule, PryIconModule, PryModalModule, FormsModule, PryCheckboxModule, PryI18nModule]\n})\nexport class PryListMetadataModule {}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminService } from '../../../store/admin.service';\nimport { PredicatesActions } from './predicates.actions';\n\n@Injectable()\nexport class PredicatesEffects {\n loadPredicates$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PredicatesActions.loadPredicates),\n mergeMap((action) =>\n this.service.getPredicates().pipe(\n map((datas) => PredicatesActions.loadPredicatesSuccess({ datas })),\n catchError((error) => [PredicatesActions.loadPredicatesFailure({ error })])\n )\n )\n )\n );\n\n savePredicate$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PredicatesActions.savePredicate),\n mergeMap((action) =>\n this.service.savePredicate(action.predicate).pipe(\n map(() => PredicatesActions.savePredicateSuccess({ route: action.route })),\n catchError((error) => [PredicatesActions.savePredicateFailure({ error })])\n )\n )\n )\n );\n\n savePredicateSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PredicatesActions.savePredicateSuccess),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n selectPredicate$ = createEffect(() =>\n this.actions$.pipe(\n ofType(PredicatesActions.selectPredicate),\n mergeMap((action) =>\n this.service.getPredicate(action.id).pipe(\n map((data) => PredicatesActions.selectPredicateSuccess({ data })),\n catchError((error) => [PredicatesActions.selectPredicateFailure({ error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private router: Router\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminService } from '../../../store/admin.service';\nimport { AdminUserActions } from './admin-user.action';\n\n@Injectable()\nexport class AdminUserEffects {\n loadUsers$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminUserActions.loadUsers),\n mergeMap((_) =>\n this.adminService.getUsers().pipe(\n map((users) => AdminUserActions.loadUsersSuccess({ users })),\n catchError((error) => [AdminUserActions.loadUsersFailure({ error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private adminService: AdminService\n ) {}\n}\n","export const enTranslations = {\n '@pry': {\n admin: {\n title: 'Administration',\n titleIndication: 'Close Administration menu ',\n infoModalTitle: 'Information',\n closeModale: 'Close',\n edit: 'Edit',\n rename: 'Rename',\n delete: 'Delete',\n add: 'New',\n validate: 'Validate',\n addClass: 'Validate creation',\n addAttribute: 'Add attribute',\n create: 'Create',\n upload: 'Add a picture',\n cancel: 'Cancel',\n back: 'Back',\n next: 'Next',\n properties: 'Properties',\n details: 'Details',\n activity: 'Activity',\n required: 'This field is required',\n exists: 'This name already exists',\n minLength: 'The minimum number of characters: {{len}}',\n maxLength: 'Number of characters allowed: {{len}}',\n noWhitespace: \"The value can't start or end with a blank space\",\n rule: 'Rule n°{{id}}',\n defaultRule: 'Default Rule (applies only if no other rules are verified)',\n displayModeImage: 'Image display mode',\n size: 'Image size',\n share: 'Share',\n deleteAttributeConfirmMessage:\n 'This attribute will no longer be visible for the associated data. Are you sure you want to delete this?',\n invalid: 'Invalid value',\n attributes: {\n unknownField: 'Unknown field',\n unknownCategory: 'Unknown category',\n noCategory: 'No category'\n },\n position: {\n FULL: 'Full icon',\n TOP_LEFT: 'Top left',\n TOP_RIGHT: 'Top Right',\n BOTTOM_LEFT: 'Bottom left',\n BOTTOM_RIGHT: 'Bottom right'\n },\n customize: {\n title: 'Customize',\n template: 'Tooltip (Map & Relations)',\n update: 'Update tooltip',\n advanced: 'Advanced mode',\n name: 'Business model',\n technicalId: 'Technical Id',\n type: 'Choose which kind of tooltip to use',\n simplified: 'Choose which attributes to display',\n exemple: '{{expr}} value',\n table: 'Table default attributes',\n tile: 'Tile default attributes',\n tileHint: 'Only between 1 and {{max}} attributes can be displayed in a tile',\n tableAttrs: 'Attributes in a table by default',\n tileAttrs: 'Attributes displayed in a tile',\n noTableAttrs: 'Other attributes',\n noTileAttrs: 'Attributes not displayed',\n updateTable: 'Update default table attributes',\n updateTile: 'Update tile attributes',\n updateIcons: 'Update symbols rules'\n },\n varType: {\n int: 'Integer',\n double: 'Double',\n string: 'Text',\n uuid: 'Uuid',\n date: 'Date',\n list: 'Value list'\n },\n menus: {\n environment: 'Execution contexts',\n user: 'Users',\n 'metadata-user': 'User profile',\n 'abac-rules': 'ABAC Rules',\n 'metadata-rules': 'Rules metadata',\n dataset: 'Datasets',\n classes: 'Classes',\n predicates: 'Predicates',\n metadata: 'Metadata',\n fields: 'Fields',\n 'relation-types': 'Relation types',\n links: 'Links between attributes',\n model: 'Data model',\n access: 'Data access'\n },\n predicates: {\n list: 'Predicates',\n add: 'Create new predicate',\n edit: 'Edit un predicate',\n info: \"Predicate's information\",\n num: 'Id.',\n name: 'Name',\n value: 'Trigger conditional expression',\n validEdit: 'Validation modification',\n validEditMessage: 'This predicates is used in {{used}} rules. Really update predicate ?'\n },\n metadata: {\n title: 'Metadata',\n add: 'Create new metadata',\n edit: 'Modify metadata',\n details: 'Metadata details',\n detailsUser: 'User profile detail',\n id: 'ID',\n label: 'Name',\n type: 'Type',\n description: 'Description',\n invalid: 'Field is required',\n listLabel: 'Value name',\n addValue: 'Add new value',\n removeValue: 'Remove value',\n system: 'System metadata'\n },\n 'metadata-rules': {\n title: 'Metadata Rules',\n label: 'Name',\n 'is-same-name': 'The name of the rule is already taken for another rule, please use another one',\n 'is-same-rules': 'The same rule has already been configured and saved, you can use it',\n 'metadata-item': {\n name: 'Target metadata',\n description: 'Target metadata description',\n type: 'Metadata type target'\n },\n 'metadata-user': {\n name: 'Source user profile',\n description: 'Description of source user profile',\n type: 'Type of source user profile'\n },\n edit: {\n title: 'Modify metadata rule'\n },\n add: {\n title: 'Create new metadata rule'\n }\n },\n dataset: {\n delete:\n 'All versions and associated data will be deleted. Restitutions and presentations using this dataset will no longer display the corresponding data. Do you confirm the deletion?',\n title: 'Dataset',\n datasetDetails: 'Dataset details',\n details: 'Details',\n id: 'Id',\n name: 'Name',\n oClass: 'Business model',\n type: 'Type',\n 'is-same-name': 'The name of the dataset is already taken, please use another one',\n add: {\n title: 'Create a new dataset'\n },\n edit: {\n title: 'Update dataset'\n },\n OPEN: 'Open',\n CLOSED: 'Closed',\n MODIFIABLE: 'Modifiable',\n conflict: 'Careful, the following dashboards are shared to groups which can no longer access this datasource:',\n entities: {\n dashboard: 'Dashboard'\n },\n addTag: 'Add a new tag'\n },\n 'abac-rules': {\n delete: 'Delete',\n metadataUser: 'Users profile',\n title: {\n list: 'Abac Rules',\n add: 'Create new abac rule',\n view: \"Abac rule's information\",\n edit: 'Abac rule edition'\n },\n form: {\n id: 'ID',\n name: 'Name',\n description: 'Description',\n status: 'Status',\n statusActive: 'Active',\n statusInactive: 'Inactive',\n predicate: 'Predicate',\n type: 'Type',\n typeMetadata: 'Metadata',\n typeAttribute: 'Attribute',\n typeSelected: \"You can't change type with current conditions\",\n addMetadata: 'Add metadata condition',\n addAttribute: 'Add attribute condition',\n addGroup: 'Add group condition',\n cancel: 'CANCEL',\n validate: 'VALIDATE'\n }\n },\n user: {\n title: 'User profile',\n add: 'Create new user profile',\n label: 'Name',\n type: 'Type',\n invalid: 'Field is required',\n edit: 'Edit user profile'\n },\n environment: {\n list: 'Execution contexts',\n add: 'Create new execution context',\n edit: 'Edit execution context',\n info: \"Execution context's information\",\n formatInt: 'Value must be an integer',\n formatDouble: \"Value must be an integer, separator must be '.'\",\n formatName: 'The only special characters allowed are: [ - _ ] ',\n name: 'Name',\n type: 'Type',\n value: 'Variable value'\n },\n classes: {\n list: 'Classes',\n name: 'Name',\n title: 'Classe {{business model}}',\n image: 'Image',\n formatName: 'The only characters allowed are: [ lowercase, - _ ] ',\n model: 'Model',\n description: 'Description',\n lines: 'Lines',\n add: 'Create new business model',\n edit: 'Modify business model',\n rename: 'Rename business model',\n addAttr: 'Attribute',\n infoAttr: '{{business model}} business model > Attributes',\n info: 'business model information',\n rules: 'Symbol definition rules',\n condition: 'Used if condition verified',\n attrName: 'Attribute to check',\n value: 'Comparison value',\n operation: 'Comparison operation',\n operations: {\n EQUALS: 'is equal',\n GREATER: 'is greater',\n GREATER_OR_EQUAL: 'is greater or equal',\n LOWER: 'is lower',\n LOWER_OR_EQUAL: 'is lower or equal',\n CONTAINS: 'contains as text'\n },\n createClassModalMessage:\n 'Creating a business model without attributes is impossible. Add an attribute before creating the business model, with \"Add attribute\" button.',\n createClassConfirmMessage: 'Confirm business model creation',\n deleteClassConfirmMessage: 'Confirm deleting the selected business model',\n linkedObjects: 'Linked objects',\n usedElsewhere: \"Used by other users' objects\",\n associations: 'Associations',\n type: 'Type',\n attributes: {\n add: 'business model Add attribute',\n edit: 'Edit attribute',\n name: 'Attribute label',\n technicalName: 'Technical name',\n info: 'Attribute information',\n description: 'Description',\n field: 'Field',\n dfield: 'Field',\n category: 'Category',\n multiValued: 'Multi valued'\n }\n },\n fields: {\n add: 'Add new field',\n info: 'Field information',\n list: 'Fields',\n edit: 'Edit field',\n name: 'Name',\n description: 'description',\n type: 'Technical type',\n attributes: 'Attribute presence',\n attributesTab: 'Attributes',\n attributeName: 'Attribute name',\n className: 'Class',\n confirmFieldDeletion: 'Confirm deleting the selected field',\n fieldType: {\n integer: 'Integer',\n long: 'Long number',\n decimal: 'Double number',\n string: 'Text',\n keyword: 'Keyword',\n instant: 'date',\n raw: 'Raw',\n Point: 'Point',\n MultiPoint: 'Multi-points',\n LineString: 'Line',\n MultiLineString: 'Multi-lines',\n Polygon: 'Polygon',\n MultiPolygon: 'Multi-polygons',\n information: {\n integer: 'Allows you to store integer numeric data less than 2^32',\n long: 'Allows you to store integer numeric data that can exceed 2^32',\n decimal: 'Allows you to store numeric data with decimal places',\n string:\n 'Allows you to store data in alphanumeric format. This data is not indexed: it is possible to search on it but no aggregation',\n keyword:\n 'Allows you to store data in alphanumeric format. This data is indexed: it is possible to search on it as well as aggregations.',\n instant: 'Allows you to store a date',\n raw: 'allows you to store image or file type data',\n Point: 'Allows you to store geographic coordinates of an object represented by a point (geo-json format)',\n MultiPoint:\n 'Allows you to store geographic coordinates of an object composed of several unconnected points (geo-json format)',\n LineString:\n 'Allows you to store geographic coordinates of an object represented as a line (geo-json format)',\n MultiLineString:\n 'Allows you to store geographic coordinates of an object represented with several unconnected lines (longitude and latitude geo-json format)',\n Polygon:\n 'Allows you to store geographic coordinates of an object represented by a polygon (geo-json format)',\n MultiPolygon:\n 'Allows you to store geographic coordinates of an object represented by several polygons nested or not (geo-json format)'\n }\n },\n rawMethods: {\n http: 'From external url',\n upload: 'Upload from my computer'\n },\n formatOptions: {\n title: 'Formatting options',\n decimalPrecision: 'Decimal precision',\n noDecimalPrecision: 'No decimal precision provided',\n localeFormat: 'Localized format',\n unit: 'Unit',\n noUnit: 'No unit provided',\n dateFormat: 'Date format',\n noDateFormat: 'No date format provided',\n dateFormatOptions: {\n DATETIME: 'Date and time',\n DATE: 'Date',\n MONTH_YEAR: 'Month and year',\n DAY_MONTH: 'Day and month',\n YEAR: 'Year',\n MONTH: 'Month',\n DAY: 'Day'\n }\n }\n },\n userInfo: {\n list: 'Users',\n info: 'User information',\n profile: 'Profile',\n addMetadata: 'Add',\n editMetadata: 'Edit metadata',\n name: 'Given name',\n familyName: 'Family name',\n email: 'Email adress',\n metadata: 'Metadata',\n roles: ' Roles'\n },\n relationTypes: {\n list: 'Relations types',\n info: 'Relation type information',\n add: 'Add relation type',\n edit: 'Edit relation type',\n name: 'Name',\n nbRelation: 'Number of type relation',\n nbLink: 'Number of links that use this relation type',\n dateModification: 'Modification date',\n deletable: 'Can be deleted',\n deleteModalMessage: 'This relation type can be deleted because used.'\n },\n links: {\n list: 'Links between attributes',\n add: 'Create a link between attributes',\n classSource: 'Source business model',\n attributeSource: 'Source attribute',\n classDestination: 'Destination business model',\n attributeDestination: 'Destination attribute',\n relationType: 'Relation type',\n selectRelationType: 'Select relation type'\n },\n association: {\n ABAC: 'ABAC Rule',\n LINK: 'Relation',\n NAMED_QUERY: 'Named query',\n WIDGET: 'Widget',\n DATASET: 'Dataset',\n OCLASS: 'Data model',\n DASHBOARD: 'Dashboard',\n FIELD: 'Data type'\n },\n storage: {\n label: 'Base de stockage',\n description: {\n POSTGIS:\n 'Recommended for storage of complex geographical data or for coordinate systems different from WGS 84. Recommended for storing classes with low estimated data volume.',\n ELASTIC:\n 'Recommended in case of high data volume expected for the class. If you want to store geographical data in this class, simple forms have to be used and the reference coordinate system must be WGS 84. This storage system is horizontally scalable.'\n },\n options: {\n POSTGIS: 'PostGIS',\n ELASTIC: 'ElasticSearch'\n }\n },\n shared: {\n noCategories: 'No categories available',\n categoryModal: {\n dataset: {\n select: 'Select tag',\n searchOrCreate: 'Search for existing tag OR create a new one',\n name: 'Tag',\n selectIt: 'Select tag',\n create: 'Create tag',\n add: 'does not exist. <br>You can create it here. <br>It will be automatically selected and added to the tag list.'\n },\n attribute: {\n select: 'Select category',\n searchOrCreate: 'Search for existing category OR create a new one',\n name: 'Category',\n selectIt: 'Select category',\n create: 'Create category',\n add: 'does not exist. <br>You can create it here. <br>It will be automatically selected and added to the category list.'\n }\n }\n }\n },\n tooltip: {\n default: 'Default tooltip',\n attribute: 'Attributes tooltip',\n cluster: 'Cluster tooltip (graphs)',\n link: 'Link tooltip (graphs)',\n none: 'No tooltip'\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n admin: {\n title: 'Administration',\n titleIndication: 'Fermer le menu Administration',\n infoModalTitle: 'Information',\n closeModale: 'Fermer',\n edit: 'Modifier',\n rename: 'Renommer',\n delete: 'Supprimer',\n add: 'Nouveau',\n validate: 'Valider',\n addClass: 'Valider la création',\n addAttribute: 'Ajouter un attribut',\n create: 'Créer',\n upload: 'Ajouter une image',\n share: 'Partager',\n cancel: 'Annuler',\n back: 'Retour',\n next: 'Suivant',\n properties: 'Propriétés',\n details: 'Détails',\n activity: 'Activité',\n required: 'Le champs est requis',\n exists: 'Ce nom est déjà utilisé',\n minLength: 'Nombre minimal de caractères : {{len}}',\n maxLength: 'Nombre de caractères autorisé : {{len}}',\n noWhitespace: 'La valeur ne peut pas commencer ou finir par un espace.',\n rule: 'Règle n°{{id}}',\n defaultRule: \"Règle par défaut (ne s'applique que si aucune autre règle n'est validée)\",\n displayModeImage: \"Mode d'affichage de l'image\",\n size: \"Taille de l'image\",\n deleteAttributeConfirmMessage:\n 'Cet attribut ne sera plus visible pour les données le possédant. Confirmez-vous la suppression ?',\n invalid: 'Valeur invalide',\n attributes: {\n unknownField: 'Type métier inconnu',\n unknownCategory: 'Catégorie inconnue',\n noCategory: 'Pas de catégorie'\n },\n position: {\n FULL: 'Icone pleine',\n TOP_LEFT: 'En haut à gauche',\n TOP_RIGHT: 'En haut à droite',\n BOTTOM_LEFT: 'En bas à gauche',\n BOTTOM_RIGHT: 'En bas à droite'\n },\n customize: {\n title: 'Personnaliser',\n template: 'Tooltip (Carte & Graphe)',\n update: 'Mettre à jour le tooltip',\n advanced: 'Mode avancé',\n name: 'Modèle métier',\n technicalId: 'Id technique',\n type: 'Choisissez le type de tooltip à utiliser',\n simplified: 'Choisissez les attributs à afficher',\n exemple: 'valeur de {{expr}}',\n table: 'Attributs par défaut (Table)',\n tile: 'Attributs affichés sur la tuile',\n tileHint: 'Seulement entre 1 et {{max}} attributs peuvent être affichés dans une tuile',\n tableAttrs: 'Attributs dans la table par défaut',\n tileAttrs: 'Attributs présentés dans les tuiles',\n noTableAttrs: 'Autres attributs',\n noTileAttrs: 'Attributs non affichés',\n updateTable: \"Mettre à jour les attributs par défaut d'une table\",\n updateTile: 'Mettre à jour les attributs des tuiles',\n updateIcons: 'Mettre à jour les règles de symboles'\n },\n varType: {\n int: 'Nombre entier',\n double: 'Nombre décimal',\n string: 'Texte',\n uuid: 'Identifiant uuid',\n date: 'Date',\n list: 'Liste de valeurs'\n },\n menus: {\n environment: \"Contextes d'exécution\",\n user: 'Utilisateurs',\n 'metadata-user': 'Profil utilisateur',\n 'abac-rules': 'Règles ABAC',\n 'metadata-rules': 'Règles Métadonnées',\n dataset: 'Jeux de données',\n classes: 'Modèles de données',\n predicates: 'Prédicats',\n metadata: 'Métadonnées',\n fields: 'Types métier',\n 'relation-types': 'Types de relation',\n links: 'Lien entre attributs',\n model: 'Modèle métier',\n access: 'Accès aux données'\n },\n predicates: {\n list: 'Prédicats',\n add: 'Créer un nouveau prédicat',\n edit: 'Modifier un prédicat',\n info: 'Détails du prédicat',\n num: 'Id.',\n name: 'Nom',\n value: 'Expression conditionnelle de déclenchement',\n validEdit: 'Information',\n validEditMessage: 'Ce prédicat est utilisé dans {{used}} règles. Voulez-vous vraiment le modifier ?'\n },\n metadata: {\n title: 'Metadonnées',\n add: 'Créer une metadonnée',\n edit: 'Modifier une metadonnée',\n details: 'Détails de la metadonnée',\n detailsUser: 'Détails du profil utilisateur',\n id: 'ID',\n label: 'Nom',\n type: 'Type',\n description: 'Description',\n invalid: 'Le champs est requis',\n listLabel: 'Nom de la valeur',\n addValue: 'Ajouter une nouvelle valeur',\n removeValue: 'Supprimer cette valeur',\n system: 'Métadonnée système'\n },\n 'metadata-rules': {\n title: 'Règles Metadonnées',\n label: 'Nom',\n 'is-same-name': 'Le nom de la règle est déjà pris pour une autre règle, veuillez en utiliser un autre',\n 'is-same-rules': \"La même règle a déjà été configurée et enregistrée, vous pouvez l'utiliser\",\n 'metadata-item': {\n name: 'Metadonnées cible',\n description: 'Description de la metadonnée cible',\n type: 'Type de la metadonnée cible'\n },\n 'metadata-user': {\n name: 'Profil utilisateur source',\n description: 'Description du profil utilisateur source',\n type: 'Type du profil utilisateur source'\n },\n edit: {\n title: 'Modifier une règle de metadonnées'\n },\n add: {\n title: 'Créer une nouvelle règle de metadonnées'\n }\n },\n dataset: {\n delete:\n \"L'ensemble des versions et des données associées seront supprimées. Les restitutions et présentations utilisant ce jeu de données n'afficheront plus les données correspondantes. Confirmez-vous la suppression ?\",\n title: 'Jeux de données',\n details: 'Détails',\n datasetDetails: 'Détails du jeu de données',\n id: 'Identifiant',\n name: 'Nom',\n oClass: 'Modèle métier',\n type: 'Type',\n 'is-same-name': 'Le nom du jeu de données est déjà pris, veuillez en utiliser un autre',\n add: {\n title: 'Créer un jeu de données'\n },\n edit: {\n title: 'Modifier un jeu de données'\n },\n OPEN: 'Ouvert',\n CLOSED: 'Fermé',\n MODIFIABLE: 'Modifiable',\n success: 'Modification effectuée avec succès',\n conflict:\n \"Attention, les tableaux de bord suivants sont partagés à des groupes qui n'auront plus accès aux données :\",\n entities: {\n dashboard: 'Tableaux de bord'\n },\n addTag: 'Ajouter un nouveau tag'\n },\n 'abac-rules': {\n delete: 'Supprimer',\n metadataUser: 'Profil utilisateur',\n title: {\n list: 'Règles Abac',\n add: 'Créer une règle abac',\n view: \"Détails d'une règle abac\",\n edit: 'Modifier une règle abac'\n },\n form: {\n id: 'Numéro',\n name: 'Nom',\n description: 'Description',\n status: 'Statut',\n statusActive: 'Actif',\n statusInactive: 'Inactif',\n predicate: 'Prédicat de déclenchement',\n type: 'Type',\n typeMetadata: 'Metadonnée',\n typeAttribute: 'Attribut',\n typeSelected: 'Vous ne pouvez pas changer le type avec les conditions existantes',\n addMetadata: 'Ajouter une condition sur une metadonnée',\n addAttribute: 'Ajouter une condition sur un attribut',\n toggleAnd: 'ET',\n toggleOr: 'OU',\n addGroup: 'Ajouter un sous-groupe'\n }\n },\n user: {\n title: 'Profil utilisateur',\n add: 'Créer un nouveau profil utilisateur',\n label: 'Nom',\n type: 'Type',\n invalid: 'Le champ est requis',\n edit: 'Modifier un profil utilisateur'\n },\n environment: {\n list: \"Contextes d'exécution\",\n add: \"Créer un nouveau contexte d'exécution\",\n edit: \"Modifier un contexte d'exécution\",\n info: \"Détails du contexte d'exécution\",\n formatInt: 'La valeur doit être un entier.',\n formatDouble: \"La valeur doit être un entier, le séparateur autorisé est un '.'\",\n formatName: 'Caractères speciaux autorisés: [ -, _ ] ',\n name: 'Nom',\n type: 'Type',\n value: 'Valeur de la variable'\n },\n classes: {\n list: 'Modèles de données',\n name: 'Nom',\n title: 'Modèle de données {{class}}',\n image: 'Image',\n formatName: 'Caractères autorisés: [ minuscule, -, _ ]',\n model: 'Modèle',\n description: 'Description',\n lines: 'Lignes',\n add: 'Créer un nouveau modèle de données',\n edit: 'Modifier le modèle de données',\n rename: 'Renommer le modèle de données',\n addAttr: 'Attribut',\n infoAttr: 'Modèle de données {{class}} > Attributs',\n info: 'Détail du modèle de données',\n rules: 'Règles de définition de symboles',\n condition: 'Actif selon une condition',\n attrName: 'Attribute à vérifier',\n value: 'Valeur de comparaison',\n operation: 'Opération de comparaison',\n operations: {\n EQUALS: 'est égal',\n GREATER: 'est plus grand',\n GREATER_OR_EQUAL: 'est plus grand ou égal',\n LOWER: 'plus petit',\n LOWER_OR_EQUAL: 'plus petit ou égal',\n CONTAINS: 'contient textuellement'\n },\n createClassModalMessage:\n 'Impossible de créer un modèle de données sans attributs. Veuillez en ajouter au moins un en cliquant sur \"Ajouter un attribut\".',\n createClassConfirmMessage: 'Voulez-vous confirmer la création du modèle de données ?',\n deleteClassConfirmMessage: 'Confirmez-vous la suppression de ce modèle métier ?',\n linkedObjects: 'Objets liés',\n usedElsewhere: \"Utilisé par des objets d'autres utilisateurs\",\n associations: 'Associations',\n type: 'Type',\n attributes: {\n add: 'Nouvel attribut',\n edit: \"Modifier l'attribut\",\n info: \"Détail de l'attribut\",\n delete: \"Supprimer l'attribut\",\n name: \"Libellé de l'attribut\",\n technicalName: 'Nom technique',\n description: 'Description',\n field: 'Type',\n category: 'Catégorie',\n multiValued: 'Multi valué'\n }\n },\n fields: {\n add: 'Créer un nouveau type métier',\n crs: 'CRS (code EPSG) :',\n info: 'Détail du type métier',\n list: 'Types métier',\n edit: 'Modifier le type métier',\n name: 'Nom',\n description: 'Description',\n type: 'Type technique',\n attributes: 'Présence dans des attributs',\n attributesTab: 'Attributs',\n attributeName: \"Nom d'attribut\",\n className: 'Classe',\n confirmFieldDeletion: 'Confirmez-vous la suppression de ce type métier ?',\n fieldType: {\n integer: 'Nombre entier',\n long: 'Nombre entier long',\n decimal: 'Nombre décimal',\n string: 'Texte brut',\n keyword: 'Texte indexé',\n instant: 'Date',\n raw: 'Donnée non structurée',\n Point: 'Point',\n MultiPoint: 'Multi-points',\n LineString: 'Ligne',\n MultiLineString: 'Multi-lignes',\n Polygon: 'Polygone',\n MultiPolygon: 'Multi-polygones',\n information: {\n integer: 'Permet de stocker des données numériques entières inférieures à 2^32',\n long: 'Permet de stocker des données numériques entières pouvant dépasser 2^32',\n decimal: 'Permet de stocker des données numériques avec des décimales',\n string:\n \"Permet de stocker des données au format alphanumérique. Ces données ne sont pas indexées : il est possible de faire une recherche dessus mais pas d'agrégation\",\n keyword:\n 'Permet de stocker des données au format alphanumérique. Ces données sont indexées : il est possible de faire une recherche dessus ainsi que des agrégations.',\n instant: 'Permet de stocker une date',\n raw: 'permet de stocker des données de type image ou fichier',\n Point:\n \"Permet de stocker des coordonnées géographiques d'un objet représenté par un point (format géojson)\",\n MultiPoint:\n \"Permet de stocker des coordonnées géographiques d'un objet composé de plusieurs points non reliés (format géojson)\",\n LineString:\n \"Permet de stocker des coordonnées géographiques d'un objet représenté comme une ligne (format géojson)\",\n MultiLineString:\n \"Permet de stocker des coordonnées géographiques d'un objet représenté avec plusieurs lignes non reliées entre elles (longitude et latitude format géojson)\",\n Polygon:\n \"Permet de stocker des coordonnées géographiques d'un objet représenté par un polygone (format géojson)\",\n MultiPolygon:\n \"Permet de stocker des coordonnées géographiques d'un objet représenté par plusieurs polygones imbriqués ou non (format géojson)\"\n }\n },\n rawMethods: {\n http: 'Depuis une url',\n upload: 'Téléverser depuis mon ordinateur'\n },\n formatOptions: {\n title: 'Options de formatage',\n decimalPrecision: 'Nombre de décimales souhaité',\n noDecimalPrecision: 'Pas de précision spécifiée',\n localeFormat: 'Formatage comme nombre',\n unit: 'Unité',\n noUnit: \"Pas d'unité spécifiée\",\n dateFormat: 'Format de date',\n noDateFormat: 'Pas de format de date specifié',\n dateFormatOptions: {\n DATETIME: 'Date et heure',\n DATE: 'Date',\n MONTH_YEAR: 'Mois et année',\n DAY_MONTH: 'Jour et mois',\n YEAR: 'Année',\n MONTH: 'Mois',\n DAY: 'Jour'\n }\n }\n },\n userInfo: {\n list: 'Utilisateurs',\n info: \"Détail de l'utilisateur\",\n profile: 'Profil',\n addMetadata: 'Ajouter',\n editMetadata: 'Modifier la métadonnée',\n name: 'Prénom',\n familyName: 'Nom de famille',\n email: 'Adresse mail',\n metadata: 'Métadonnées',\n roles: ' Rôles'\n },\n relationTypes: {\n list: 'Types de relations',\n add: 'Ajouter le type de relation',\n edit: 'Modifier le type de relation',\n info: 'Détail du type de relation',\n name: 'Nom',\n nbRelation: 'Nombre de relations de ce type',\n nbLink: 'Nombre de liens utilisant ce type de relation',\n dateModification: 'Date de modification',\n deletable: 'Peut être supprimé',\n deleteModalMessage: 'Ce type de relation ne peut être supprimé car utilisé.'\n },\n links: {\n list: 'Liens entre attributs',\n add: 'Ajouter un nouveau lien entre attributs',\n classSource: 'Modèle métier source',\n attributeSource: 'Attribut source',\n classDestination: 'Modèle métier de destination',\n attributeDestination: 'Attribut de destination',\n relationType: 'Type de relation',\n selectRelationType: 'Selectionnez un type de relation'\n },\n association: {\n ABAC: 'Règle ABAC',\n LINK: 'Relation',\n NAMED_QUERY: 'Requête nommée',\n WIDGET: 'Restitution',\n DATASET: 'Jeu de données',\n OCLASS: 'Modèle de données',\n DASHBOARD: 'Présentation',\n FIELD: 'Type métier'\n },\n storage: {\n label: 'Base de stockage',\n description: {\n POSTGIS:\n \"Ce stockage est conseillé en cas de stockage de données géographique complexes ou dans des systèmes de coordonnées différents de WGS 84. Il est recommandé de ne stocker dans cette base que des modèles métier dont la volumétrie de données estimée (en terme de nombre d'items) n'est pas trop élevée.\",\n ELASTIC:\n \"Ce stockage est conseillé en cas de forte volumétrie de données prévue pour ce modèle métier (grand nombre d'items). Si vous souhaitez stocker des données géographiques dans ce modèle, des formes simples sont conseillées et le système de coordonnées de référence utilisé doit être WGS 84. Ce système de stockage offre une scalabilité horizontale\"\n },\n options: {\n POSTGIS: 'PostGIS',\n ELASTIC: 'ElasticSearch'\n }\n },\n shared: {\n categoryModal: {\n noCategories: \"Aucune catégorie n'a été créée pour le moment\",\n dataset: {\n select: 'Sélectionner un tag',\n searchOrCreate: 'Rechercher un tag existant OU en créer un nouveau',\n name: 'Tag',\n selectIt: 'Sélectionner le tag',\n create: 'Créer le tag',\n add: \"n'existe pas encore. <br>Il est possible \\n de le créer ici. <br>Il sera automatiquement sélectionné et ajouté à la liste des tags.\"\n },\n attribute: {\n select: 'Sélectionner une catégorie',\n searchOrCreate: 'Rechercher une catégorie existante OU en créer une nouvelle',\n name: 'Catégorie',\n selectIt: 'Sélectionner la catégorie',\n create: 'Créer la catégorie',\n add: \"n'existe pas encore. <br>Il est possible \\n de la créer ici. <br>Elle sera automatiquement sélectionnée et ajoutée à la liste des catégories.\"\n }\n }\n }\n },\n tooltip: {\n default: 'Tooltip par défaut',\n attribute: 'Tooltip affichant certains attributs',\n cluster: 'Tooltip pour les clusters (graphes)',\n link: 'Tooltip pour les liens (graphes)',\n none: 'Pas de tooltip'\n }\n }\n};\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { RelationTypesActions } from '@provoly/dashboard';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\nimport { catchError, map, mergeMap } from 'rxjs';\nimport { AdminActions } from './admin.actions';\nimport { AdminService } from './admin.service';\nimport { AdminDatasetActions } from '../components/admin-dataset/store/admin-dataset.actions';\n\n@Injectable()\nexport class AdminEffects {\n routeTo$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.routeTo),\n mergeMap((action) => {\n this.router.navigate([action.path], { queryParams: action.params });\n return action.path === this.router.url ? [] : [AdminActions.resetActions()];\n })\n )\n );\n\n goToNewMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.goToNewMetadata),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n deleteRelationTypeSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(RelationTypesActions.deleteRelationTypeSuccess),\n mergeMap((action) => {\n return [\n RelationTypesActions.load({ force: true }),\n AdminActions.selectComponentType({ componentType: null }),\n AdminActions.mainActions({\n actions: [\n {\n action: RelationTypesActions.openModal(),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'relation_types',\n actionAccess: 'write'\n }\n ]\n })\n ];\n })\n )\n );\n\n closePanel$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.highlightMenu),\n mergeMap((action) => {\n return [AdminActions.togglePanel({ panelOpen: false })];\n })\n )\n );\n\n openNewDataset$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.openNewDataset),\n map((action) => {\n return AdminActions.routeTo({ path: action.route });\n })\n )\n );\n\n fetchClassAssociations$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.fetchClassAssociations),\n mergeMap((action) =>\n this.service.getClassAssociations(action.id).pipe(\n map((association) => AdminActions.fetchAssociationsSuccess({ association })),\n catchError((error) => [AdminActions.fetchAssociationsFailure({ error: error })])\n )\n )\n )\n );\n\n fetchFieldAssociations$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.fetchFieldAssociations),\n mergeMap((action) =>\n this.service.getFieldAssociations(action.id).pipe(\n map((association) => AdminActions.fetchAssociationsSuccess({ association })),\n catchError((error) => [AdminActions.fetchAssociationsFailure({ error: error })])\n )\n )\n )\n );\n\n fetchDatasetAssociations$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.fetchDatasetAssociations),\n mergeMap((action) =>\n this.service.getDatasetAssociations(action.id).pipe(\n map((association) => AdminActions.fetchAssociationsSuccess({ association })),\n catchError((error) => [AdminActions.fetchAssociationsFailure({ error: error })])\n )\n )\n )\n );\n\n fetchAttributeAssociations$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminActions.fetchAttributeAssociations),\n mergeMap((action) =>\n this.service.getAttributeAssociations(action.id).pipe(\n map((association) => AdminActions.fetchAssociationsSuccess({ association })),\n catchError((error) => [AdminActions.fetchAssociationsFailure({ error: error })])\n )\n )\n )\n );\n\n constructor(\n private actions$: Actions,\n private service: AdminService,\n private router: Router\n ) {}\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Category, ConfigSelectors, Dataset, MetadataValue, ShareConflict } from '@provoly/dashboard';\nimport { HttpClient } from '@angular/common/http';\nimport { mergeMap, Observable } from 'rxjs';\nimport { AdminDatasetState } from './admin-dataset.reducer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdminDatasetService {\n constructor(\n private store: Store<AdminDatasetState>,\n private httpClient: HttpClient\n ) {}\n\n addDataset(dataset: Dataset): Observable<void> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.post<void>(encodeURI(`${url}/datasets`), {\n ...dataset,\n categories: dataset.categories?.map((category) => category.id)\n })\n )\n );\n }\n\n updateDataset(dataset: Dataset): Observable<undefined | ShareConflict> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.put<undefined | ShareConflict>(encodeURI(`${url}/datasets`), {\n ...dataset,\n categories: dataset.categories?.map((category) => category.id)\n })\n )\n );\n }\n\n deleteDataset(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.delete<void>(`${url}/datasets/id/${id}`)));\n }\n\n getDatasetById(id: string) {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<Dataset>(`${url}/datasets/id/${id}`)));\n }\n\n getDatasetMetadata(id: string): Observable<MetadataValue[]> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.get<MetadataValue[]>(`${url}/datasets/id/${id}/metadata`)));\n }\n\n addDatasetMetadata(datasetId: string, metadataId: string, value: any): Observable<void> {\n return this.store.select(ConfigSelectors.refUrl).pipe(\n mergeMap((url) =>\n this.httpClient.put<void>(encodeURI(`${url}/datasets/id/${datasetId}/metadata/id/${metadataId}`), {\n value: value\n })\n )\n );\n }\n\n deleteDatasetMetadata(datasetId: string, metadataId: string): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(\n mergeMap((url) =>\n this.httpClient.delete<void>(encodeURI(`${url}/datasets/id/${datasetId}/metadata/id/${metadataId}`))\n )\n );\n }\n\n addCategory(category: Category): Observable<void> {\n return this.store\n .select(ConfigSelectors.refUrl)\n .pipe(mergeMap((url) => this.httpClient.put<void>(encodeURI(`${url}/datasets/categories`), { ...category })));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport {\n Dataset,\n DataSourceActions,\n PryDialogConfirmComponent,\n PryDialogConfirmData,\n PryDialogService,\n ShareConflict\n} from '@provoly/dashboard';\nimport { catchError, map, mergeMap, switchMap, tap } from 'rxjs';\nimport { AdminDatasetActions } from './admin-dataset.actions';\nimport { Action } from '@ngrx/store';\nimport { AdminActions } from '../../../store/admin.actions';\nimport { AdminDatasetService } from './admin-dataset.service';\nimport { MetadataActions } from '@provoly/dashboard/components/metadata-editor';\n\n@Injectable()\nexport class AdminDatasetEffects {\n constructor(\n private actions$: Actions,\n private datasetService: AdminDatasetService,\n private pryDialog: PryDialogService\n ) {}\n\n createDataset$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.create),\n switchMap((props: { dataset: Dataset; route: string }) =>\n this.datasetService\n .addDataset(props.dataset)\n .pipe(\n mergeMap(() => [\n DataSourceActions.dataset.loadDataset({ force: true }),\n AdminDatasetActions.unselectDataset(),\n AdminActions.routeTo({ path: props.route })\n ])\n )\n ),\n catchError((error: any) => [AdminDatasetActions.failure({ error })])\n )\n );\n\n confirmDatasetDeletion$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.confirmDatasetDeletion),\n tap((action) => {\n const data: PryDialogConfirmData = {\n title: '@pry.admin.infoModalTitle',\n message: '@pry.admin.dataset.delete',\n actions: [\n {\n id: 0,\n label: '@pry.admin.delete',\n actions: [\n AdminDatasetActions.delete({\n name: action.name,\n route: action.route,\n addRoute: action.addRoute\n })\n ]\n },\n { id: 0, label: '@pry.admin.cancel' }\n ]\n };\n this.pryDialog.open(PryDialogConfirmComponent, { data });\n })\n ),\n { dispatch: false }\n );\n\n deleteDataset$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.delete),\n switchMap((action) =>\n this.datasetService.deleteDataset(action.name).pipe(\n mergeMap(() => [\n DataSourceActions.dataset.loadDataset({ force: true }),\n AdminDatasetActions.unselectDataset(),\n AdminDatasetActions.deleted({ addRoute: action.addRoute })\n ]),\n catchError((error) => [AdminDatasetActions.failure({ error })])\n )\n )\n )\n );\n\n getDatasetById$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.getDatasetById),\n mergeMap((action) =>\n this.datasetService.getDatasetById(action.id).pipe(\n map((data) => AdminDatasetActions.getDatasetByIdSuccess({ data })),\n catchError((error) => [AdminDatasetActions.getDatasetByIdFailure({ error })])\n )\n )\n )\n );\n\n unsetMissingGroupsOnDatasetSelection$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.selectDataset),\n mergeMap((action) => [\n AdminDatasetActions.setMissingGroups({ missingGroups: undefined }),\n DataSourceActions.dataset.listVersionsByDatasetId({ id: action.dataset.id })\n ])\n )\n );\n\n deleted$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.deleted),\n mergeMap((action) => [\n AdminActions.togglePanel({ panelOpen: false }),\n AdminActions.selectComponentType({ componentType: null }),\n AdminActions.mainActions({\n actions: [\n {\n action: AdminActions.routeTo({ path: action.addRoute }),\n label: 'add',\n icon: 'add_column',\n moduleAccess: 'admin',\n pageAccess: 'dataset',\n actionAccess: 'write'\n }\n ]\n })\n ])\n )\n );\n\n updateDataset$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.update),\n switchMap((action) =>\n this.datasetService.updateDataset(action.dataset).pipe(\n mergeMap((conflict?: ShareConflict) => {\n let actions: Action[] = [\n AdminDatasetActions.setMissingGroups({ missingGroups: conflict?.missingGroupsByEntity }),\n DataSourceActions.dataset.loadDataset({ force: true })\n ];\n if (action.route)\n actions.push(AdminDatasetActions.unselectDataset(), AdminActions.routeTo({ path: action.route }));\n return actions;\n })\n )\n ),\n catchError((error: any) => [DataSourceActions.dataset.failure({ error })])\n )\n );\n\n addDatasetMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addDatasetMetadata),\n mergeMap((action) =>\n this.datasetService.addDatasetMetadata(action.datasetId, action.metadataId, action.value).pipe(\n map(() => MetadataActions.addDatasetMetadataSuccess({ datasetId: action.datasetId })),\n catchError((error) => [MetadataActions.addDatasetMetadataFailure({ error })])\n )\n )\n )\n );\n\n addDatasetMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.addDatasetMetadataSuccess),\n mergeMap((action) => {\n return [\n AdminDatasetActions.getDatasetById({ id: action.datasetId }),\n MetadataActions.isEditable({ editable: false }),\n DataSourceActions.dataset.loadDataset({ force: true })\n ];\n })\n )\n );\n\n deleteDatasetMetadata$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteDatasetMetadata),\n mergeMap((action) =>\n this.datasetService.deleteDatasetMetadata(action.datasetId, action.metadataId).pipe(\n map(() => MetadataActions.deleteDatasetMetadataSuccess({ datasetId: action.datasetId })),\n catchError((error) => [MetadataActions.deleteDatasetMetadataFailure({ error })])\n )\n )\n )\n );\n\n deleteDatasetMetadataSuccess$ = createEffect(() =>\n this.actions$.pipe(\n ofType(MetadataActions.deleteDatasetMetadataSuccess),\n mergeMap((action) => {\n return [\n AdminDatasetActions.getDatasetById({ id: action.datasetId }),\n MetadataActions.isEditable({ editable: false }),\n DataSourceActions.dataset.loadDataset({ force: true })\n ];\n })\n )\n );\n\n addCategory$ = createEffect(() =>\n this.actions$.pipe(\n ofType(AdminDatasetActions.addCategory),\n mergeMap((action) =>\n this.datasetService.addCategory(action.category).pipe(\n map(() => DataSourceActions.dataset.getCategories()),\n catchError((error) => [AdminDatasetActions.failure({ error })])\n )\n )\n )\n );\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\nimport {\n PryCoreModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryModalModule,\n PryOverlayModule,\n PrySelectModule,\n PryShareModule,\n PrySortModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { PryExpandPanelModule } from '@provoly/dashboard/components/metadata-editor';\nimport { AdminRoutingModule } from './admin-routing.module';\nimport { AdminAbacRulesEditComponent } from './components/admin-abac-rules/admin-abac-rules-edit/admin-abac-rules-edit.component';\nimport { AdminAbacRulesFormComponent } from './components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component';\nimport { AdminAbacRulesNewComponent } from './components/admin-abac-rules/admin-abac-rules-new/admin-abac-rules-new.component';\nimport { AdminAbacRulesViewComponent } from './components/admin-abac-rules/admin-abac-rules-view/admin-abac-rules-view.component';\nimport { AdminAbacRulesComponent } from './components/admin-abac-rules/admin-abac-rules.component';\nimport { AttributeConditionComponent } from './components/admin-abac-rules/components/attribute-condition/attribute-condition.component';\nimport { ComposedConditionComponent } from './components/admin-abac-rules/components/composed-condition/composed-condition.component';\nimport { MetadataConditionComponent } from './components/admin-abac-rules/components/metadata-condition/metadata-condition.component';\nimport { SelectAttributeComponent } from './components/admin-abac-rules/components/select-attribute/select-attribute.component';\nimport { SelectMetadataComponent } from './components/admin-abac-rules/components/select-metadata/select-metadata.component';\nimport { AbacRulesEffects } from './components/admin-abac-rules/store/abac-rules.effects';\nimport { abacRuleReducer, abacRulesFeatureKey } from './components/admin-abac-rules/store/abac-rules.reducer';\nimport { AdminClassesCustomizeComponent } from './components/admin-classes/admin-classes-customize/admin-classes-customize.component';\nimport { AdminClassesCustomizeSymbolComponent } from './components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component';\nimport { AdminClassesCustomizeTooltipComponent } from './components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component';\nimport { AdminClassesEditComponent } from './components/admin-classes/admin-classes-edit/admin-classes-edit.component';\nimport { AdminClassesFormComponent } from './components/admin-classes/admin-classes-form/admin-classes-form.component';\nimport { AdminClassesNewComponent } from './components/admin-classes/admin-classes-new/admin-classes-new.component';\nimport { AdminClassesSelectComponent } from './components/admin-classes/admin-classes-select/admin-classes-select.component';\nimport { AdminAttributesEditComponent } from './components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component';\nimport { AdminAttributesFormComponent } from './components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component';\nimport { AdminAttributesNewComponent } from './components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component';\nimport { AdminAttributesSelectComponent } from './components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component';\nimport { AdminClassesViewComponent } from './components/admin-classes/admin-classes-view/admin-classes-view.component';\nimport { AdminClassesComponent } from './components/admin-classes/admin-classes.component';\nimport { AdminClassEffects } from './components/admin-classes/store/admin-class.effects';\nimport { classesFeatureKey, classReducer } from './components/admin-classes/store/admin-class.reducer';\nimport { AdminDatasetComponent } from './components/admin-dataset/admin-dataset.component';\nimport { AdminEditDatasetComponent } from './components/admin-dataset/admin-edit-dataset/admin-edit-dataset.component';\nimport { AdminNewDatasetComponent } from './components/admin-dataset/admin-new-dataset/admin-new-dataset.component';\nimport { AdminSelectDatasetComponent } from './components/admin-dataset/admin-select-dataset/admin-select-dataset.component';\nimport { AdminEnvironmentFormComponent } from './components/admin-environment/admin-environment-form/admin-environment-form.component';\nimport { AdminEnvironmentNewComponent } from './components/admin-environment/admin-environment-new/admin-environment-new.component';\nimport { AdminEnvironmentSelectComponent } from './components/admin-environment/admin-environment-select/admin-environment-select.component';\nimport { AdminEnvironmentUpdateComponent } from './components/admin-environment/admin-environment-update/admin-environment-update.component';\nimport { AdminEnvironmentComponent } from './components/admin-environment/admin-environment.component';\nimport { EnvironmentEffects } from './components/admin-environment/store/environment.effects';\nimport { environmentFeatureKey, environmentReducer } from './components/admin-environment/store/environment.reducer';\nimport { AdminFieldsEditComponent } from './components/admin-fields/admin-fields-edit/admin-fields-edit.component';\nimport { AdminFieldsFormComponent } from './components/admin-fields/admin-fields-form/admin-fields-form.component';\nimport { AdminFieldsNewComponent } from './components/admin-fields/admin-fields-new/admin-fields-new.component';\nimport { AdminFieldsSelectComponent } from './components/admin-fields/admin-fields-select/admin-fields-select.component';\nimport { AdminFieldsComponent } from './components/admin-fields/admin-fields.component';\nimport { FieldsEffects } from './components/admin-fields/store/fields.effects';\nimport { fieldReducer, fieldsFeatureKey } from './components/admin-fields/store/fields.reducer';\nimport { AdminLayoutComponent } from './components/admin-layout/admin-layout.component';\nimport { AdminLinksNewComponent } from './components/admin-links/admin-links-new/admin-links-new.component';\nimport { AdminLinksComponent } from './components/admin-links/admin-links.component';\nimport { LinksEffects } from './components/admin-links/store/links.effects';\nimport { linkReducer, linksFeatureKey } from './components/admin-links/store/links.reducer';\nimport { AdminMenuComponent } from './components/admin-menu/admin-menu.component';\nimport { AdminEditMetadataRulesComponent } from './components/admin-metadata-rules/admin-edit-metadata-rules/admin-edit-metadata-rules.component';\nimport { AdminMetadataRulesComponent } from './components/admin-metadata-rules/admin-metadata-rules.component';\nimport { AdminNewMetadataRulesComponent } from './components/admin-metadata-rules/admin-new-metadata-rules/admin-new-metadata-rules.component';\nimport { AdminSelectMetadataRulesComponent } from './components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component';\nimport { AdminFormMetadataRulesComponent } from './components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component';\nimport { AdminMetadataRulesEffects } from './components/admin-metadata-rules/store/metadata-rules.effects';\nimport {\n adminMetadataRulesFeatureKey,\n adminMetadataRulesReducer\n} from './components/admin-metadata-rules/store/metadata-rules.reducer';\nimport { AdminMetadataUserComponent } from './components/admin-metadata-user/admin-metadata-user.component';\nimport { AdminUserEditMetadataComponent } from './components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component';\nimport { AdminUserNewMetadataComponent } from './components/admin-metadata-user/admin-user-new-metadata/admin-user-new-metadata.component';\nimport { AdminUserSelectMetadataComponent } from './components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component';\nimport { AdminMetadataUserEffects } from './components/admin-metadata-user/store/admin-metadata-user.effects';\nimport {\n adminMetadataUserFeatureKey,\n adminMetadataUserReducer\n} from './components/admin-metadata-user/store/admin-metadata-user.reducer';\nimport { AdminEditMetadataComponent } from './components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component';\nimport { AdminMetadataComponent } from './components/admin-metadata/admin-metadata.component';\nimport { AdminNewMetadataComponent } from './components/admin-metadata/admin-new-metadata/admin-new-metadata.component';\nimport { AdminSelectMetadataComponent } from './components/admin-metadata/admin-select-metadata/admin-select-metadata.component';\nimport { FormMetadataComponent } from './components/admin-metadata/shared/form-metadata/form-metadata.component';\nimport { PryListMetadataModule } from './components/admin-metadata/shared/list-metadata/list-metadata.module';\nimport { AdminPredicatesFormComponent } from './components/admin-predicates/admin-predicates-form/admin-predicates-form.component';\nimport { AdminPredicatesNewComponent } from './components/admin-predicates/admin-predicates-new/admin-predicates-new.component';\nimport { AdminPredicatesSelectComponent } from './components/admin-predicates/admin-predicates-select/admin-predicates-select.component';\nimport { AdminPredicatesUpdateComponent } from './components/admin-predicates/admin-predicates-update/admin-predicates-update.component';\nimport { AdminPredicatesComponent } from './components/admin-predicates/admin-predicates.component';\nimport { PredicatesEffects } from './components/admin-predicates/store/predicates.effects';\nimport { predicateReducer, predicatesFeatureKey } from './components/admin-predicates/store/predicates.reducer';\nimport { AdminRelationTypesModalComponent } from './components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component';\nimport { AdminRelationTypesSelectComponent } from './components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component';\nimport { AdminRelationTypesComponent } from './components/admin-relation-types/admin-relation-types.component';\nimport { AdminTitleComponent } from './components/admin-title/admin-title.component';\nimport { AdminUserSelectComponent } from './components/admin-user/admin-user-select/admin-user-select.component';\nimport { AdminUserComponent } from './components/admin-user/admin-user.component';\nimport { AdminUserEffects } from './components/admin-user/store/admin-user.effects';\nimport { adminUserFeatureKey, adminUserReducer } from './components/admin-user/store/admin-user.reducer';\nimport { PryAdminComponent } from './components/admin.component';\nimport { PryAssociationComponent } from './components/association/association.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { AdminEffects } from './store/admin.effects';\nimport { adminFeatureKey, adminReducer } from './store/admin.reducer';\nimport { PryDatasetModule } from '@provoly/dashboard/dataset';\nimport { datasetFeatureKey, datasetReducer } from './components/admin-dataset/store/admin-dataset.reducer';\nimport { AdminDatasetEffects } from './components/admin-dataset/store/admin-dataset.effects';\nimport { AddCategoryModalComponent } from './components/shared/add-category-modal/add-category-modal.component';\nimport { AdminFormDatasetComponent } from './components/admin-dataset/admin-form-dataset/admin-form-dataset.component';\nimport { PryPageLoaderModule } from '@provoly/dashboard/components/page-loader';\n\n@NgModule({\n providers: [DatePipe],\n declarations: [\n PryAdminComponent,\n AdminEnvironmentComponent,\n AdminMetadataUserComponent,\n AdminClassesComponent,\n AdminPredicatesComponent,\n AdminPredicatesNewComponent,\n AdminPredicatesUpdateComponent,\n AdminPredicatesSelectComponent,\n AdminAbacRulesComponent,\n AdminMenuComponent,\n AdminLayoutComponent,\n AdminTitleComponent,\n AdminLayoutComponent,\n AdminMenuComponent,\n AdminMetadataComponent,\n AdminEnvironmentNewComponent,\n AdminEnvironmentUpdateComponent,\n AdminEnvironmentFormComponent,\n AdminNewMetadataComponent,\n AdminAbacRulesEditComponent,\n AdminAbacRulesViewComponent,\n AdminAbacRulesNewComponent,\n SelectMetadataComponent,\n SelectAttributeComponent,\n AttributeConditionComponent,\n MetadataConditionComponent,\n ComposedConditionComponent,\n AdminAbacRulesFormComponent,\n AdminUserNewMetadataComponent,\n AdminEditMetadataComponent,\n AdminPredicatesFormComponent,\n AdminEnvironmentSelectComponent,\n AdminUserEditMetadataComponent,\n AdminPredicatesFormComponent,\n FormMetadataComponent,\n AdminSelectMetadataComponent,\n AdminUserSelectMetadataComponent,\n AdminFieldsComponent,\n AdminFieldsNewComponent,\n AdminUserSelectMetadataComponent,\n AdminClassesFormComponent,\n AdminClassesNewComponent,\n AdminClassesViewComponent,\n AdminAttributesNewComponent,\n AdminAttributesFormComponent,\n AdminAttributesSelectComponent,\n AdminClassesSelectComponent,\n AdminFieldsFormComponent,\n AdminFieldsSelectComponent,\n AdminClassesEditComponent,\n AdminAttributesEditComponent,\n AdminFieldsEditComponent,\n AdminUserComponent,\n AdminUserSelectComponent,\n AdminRelationTypesComponent,\n AdminRelationTypesSelectComponent,\n AdminRelationTypesModalComponent,\n AdminLinksComponent,\n AdminLinksNewComponent,\n AdminMetadataRulesComponent,\n AdminSelectMetadataRulesComponent,\n AdminNewMetadataRulesComponent,\n AdminEditMetadataRulesComponent,\n AdminFormMetadataRulesComponent,\n AdminDatasetComponent,\n AdminEditDatasetComponent,\n AdminNewDatasetComponent,\n AdminSelectDatasetComponent,\n AdminFormDatasetComponent,\n AdminClassesCustomizeComponent,\n AdminClassesCustomizeTooltipComponent,\n AdminClassesCustomizeSymbolComponent,\n PryAssociationComponent,\n AddCategoryModalComponent\n ],\n imports: [\n CommonModule,\n PryCoreModule,\n AdminRoutingModule,\n StoreModule.forFeature(adminFeatureKey, adminReducer),\n StoreModule.forFeature(predicatesFeatureKey, predicateReducer),\n StoreModule.forFeature(abacRulesFeatureKey, abacRuleReducer),\n StoreModule.forFeature(environmentFeatureKey, environmentReducer),\n StoreModule.forFeature(adminMetadataUserFeatureKey, adminMetadataUserReducer),\n StoreModule.forFeature(adminMetadataRulesFeatureKey, adminMetadataRulesReducer),\n StoreModule.forFeature(classesFeatureKey, classReducer),\n StoreModule.forFeature(fieldsFeatureKey, fieldReducer),\n StoreModule.forFeature(adminUserFeatureKey, adminUserReducer),\n StoreModule.forFeature(linksFeatureKey, linkReducer),\n StoreModule.forFeature(datasetFeatureKey, datasetReducer),\n EffectsModule.forFeature([AdminEffects]),\n EffectsModule.forFeature([PredicatesEffects]),\n EffectsModule.forFeature([EnvironmentEffects]),\n EffectsModule.forFeature([AbacRulesEffects]),\n EffectsModule.forFeature([AdminMetadataUserEffects]),\n EffectsModule.forFeature([AdminClassEffects]),\n EffectsModule.forFeature([FieldsEffects]),\n EffectsModule.forFeature([AdminUserEffects]),\n EffectsModule.forFeature([LinksEffects]),\n EffectsModule.forFeature([AdminMetadataRulesEffects]),\n EffectsModule.forFeature([AdminDatasetEffects]),\n PryIconModule,\n FormsModule,\n ReactiveFormsModule,\n PrySortModule,\n PryCheckboxModule,\n PryModalModule,\n PrySelectModule,\n PryListMetadataModule,\n PryToggleModule,\n OverlayModule,\n PryOverlayModule,\n DragDropModule,\n PryI18nModule,\n PryExpandPanelModule,\n PryDatasetModule,\n PryShareModule,\n PryPageLoaderModule\n ]\n})\nexport class PryAdminModule {\n constructor(private pryTranslateService: PryI18nService) {\n this.pryTranslateService.addLangObject('fr', 'admin', frTranslations);\n this.pryTranslateService.addLangObject('en', 'admin', enTranslations);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["feature","fromPredicates.predicatesFeatureKey","loading","fromAbacRules.abacRulesFeatureKey","i2","i3","i4","i5","i4.SelectMetadataComponent","i5.SelectAttributeComponent","i6.AttributeConditionComponent","i7.MetadataConditionComponent","i8","i5.ComposedConditionComponent","i6","i3.AdminAbacRulesFormComponent","uuidv4","i2.AbacRulesService","fromClass.classesFeatureKey","i1","i5.AdminClassesCustomizeTooltipComponent","i6.AdminClassesCustomizeSymbolComponent","i7","uuid","i3.AdminClassesFormComponent","i1.AdminClassesFormComponent","i3.AdminAttributesFormComponent","i3.AdminFormDatasetComponent","i1.AdminFormDatasetComponent","fromEnvironment.environmentFeatureKey","i1.AdminEnvironmentFormComponent","i3.AdminEnvironmentFormComponent","i3.AdminFieldsFormComponent","i1.AdminFieldsFormComponent","fromField.fieldsFeatureKey","fromAdmin.adminFeatureKey","i4.PryAssociationComponent","i6.PryAssociationComponent","i5.PryAssociationComponent","fromMetadataRules.adminMetadataRulesFeatureKey","BASE","BASEAPI","initialAdminUserState","fromAdminUser.adminMetadataUserFeatureKey","editable","fromAdminUser.adminUserFeatureKey","i5.AdminMenuComponent","i6.AdminTitleComponent","fromLinks.linksFeatureKey","i2.AdminFormMetadataRulesComponent","i1.AdminFormMetadataRulesComponent","i4.PryListMetadataComponent","i3.FormMetadataComponent","i2.FormMetadataComponent","i1.AdminPredicatesFormComponent","i3.AdminPredicatesFormComponent","i3.AdminRelationTypesModalComponent","i2.AdminService","i4.AbacRulesService","i2.AdminDatasetService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,YAAY,GAAG;AAC1B,IAAA,aAAa,EAAE,YAAY,CAAC,6BAA6B,EAAE,KAAK,EAAoB,CAAC;AACrF,IAAA,UAAU,EAAE,YAAY,CAAC,qBAAqB,CAAC;AAC/C,IAAA,OAAO,EAAE,YAAY,CAAC,kBAAkB,EAAE,KAAK,EAAsD,CAAC;AACtG,IAAA,YAAY,EAAE,YAAY,CAAC,4CAA4C,CAAC;AACxE,IAAA,WAAW,EAAE,YAAY,CAAC,kCAAkC,EAAE,KAAK,EAAoC,CAAC;AACxG,IAAA,UAAU,EAAE,YAAY,CAAC,iCAAiC,EAAE,KAAK,EAAoC,CAAC;AACtG,IAAA,WAAW,EAAE,YAAY,CAAC,sBAAsB,EAAE,KAAK,EAA0B,CAAC;AAClF,IAAA,mBAAmB,EAAE,YAAY,CAC/B,0CAA0C,EAC1C,KAAK,EAAoC,CAC1C;AACD,IAAA,sBAAsB,EAAE,YAAY,CAAC,kCAAkC,EAAE,KAAK,EAAkB,CAAC;AACjG,IAAA,sBAAsB,EAAE,YAAY,CAAC,kCAAkC,EAAE,KAAK,EAAkB,CAAC;AACjG,IAAA,0BAA0B,EAAE,YAAY,CAAC,sCAAsC,EAAE,KAAK,EAAkB,CAAC;AACzG,IAAA,wBAAwB,EAAE,YAAY,CAAC,oCAAoC,EAAE,KAAK,EAAkB,CAAC;AACrG,IAAA,wBAAwB,EAAE,YAAY,CAAC,oCAAoC,EAAE,KAAK,EAAiC,CAAC;AACpH,IAAA,wBAAwB,EAAE,YAAY,CAAC,oCAAoC,EAAE,KAAK,EAAkB,CAAC;CACtG;;AClBM,MAAM,iBAAiB,GAAG;AAC/B,IAAA,cAAc,EAAE,YAAY,CAAC,oCAAoC,CAAC;AAClE,IAAA,qBAAqB,EAAE,YAAY,CACjC,gDAAgD,EAChD,KAAK,EAA0B,CAChC;AACD,IAAA,qBAAqB,EAAE,YAAY,CAAC,gDAAgD,EAAE,KAAK,EAAkB,CAAC;AAE9G,IAAA,aAAa,EAAE,YAAY,CAAC,mCAAmC,EAAE,KAAK,EAA2C,CAAC;AAClH,IAAA,oBAAoB,EAAE,YAAY,CAAC,+CAA+C,EAAE,KAAK,EAAqB,CAAC;AAC/G,IAAA,oBAAoB,EAAE,YAAY,CAAC,+CAA+C,EAAE,KAAK,EAAkB,CAAC;AAE5G,IAAA,eAAe,EAAE,YAAY,CAAC,qCAAqC,EAAE,KAAK,EAAkB,CAAC;AAC7F,IAAA,sBAAsB,EAAE,YAAY,CAAC,iDAAiD,EAAE,KAAK,EAAuB,CAAC;AACrH,IAAA,sBAAsB,EAAE,YAAY,CAAC,iDAAiD,EAAE,KAAK,EAAkB,CAAC;CACjH;;ACfM,MAAM,gBAAgB,GAAG;AAC9B,IAAA,aAAa,EAAE,YAAY,CAAC,8BAA8B,CAAC;AAC3D,IAAA,oBAAoB,EAAE,YAAY,CAAC,yCAAyC,EAAE,KAAK,EAAyB,CAAC;AAC7G,IAAA,oBAAoB,EAAE,YAAY,CAAC,yCAAyC,EAAE,KAAK,EAAkB,CAAC;AAEtG,IAAA,gBAAgB,EAAE,YAAY,CAAC,+BAA+B,EAAE,KAAK,EAAwB,CAAC;AAC9F,IAAA,mBAAmB,EAAE,YAAY,CAAC,yCAAyC,EAAE,KAAK,EAAwB,CAAC;AAC3G,IAAA,mBAAmB,EAAE,YAAY,CAAC,yCAAyC,EAAE,KAAK,EAAkB,CAAC;AAErG,IAAA,qBAAqB,EAAE,YAAY,CAAC,2CAA2C,EAAE,KAAK,EAAwB,CAAC;AAE/G,IAAA,gBAAgB,EAAE,YAAY,CAAC,kCAAkC,EAAE,KAAK,EAAsB,CAAC;AAC/F,IAAA,iBAAiB,EAAE,YAAY,CAAC,mCAAmC,CAAC;AACpE,IAAA,4BAA4B,EAAE,YAAY,CACxC,6CAA6C,EAC7C,KAAK,EAA+C,CACrD;AACD,IAAA,kBAAkB,EAAE,YAAY,CAAC,oCAAoC,EAAE,KAAK,EAAsB,CAAC;AACnG,IAAA,0BAA0B,EAAE,YAAY,CACtC,6CAA6C,EAC7C,KAAK,EAAsC,CAC5C;AACD,IAAA,mCAAmC,EAAE,YAAY,CAC/C,6CAA6C,EAC7C,KAAK,EAA4C,CAClD;AACD,IAAA,oCAAoC,EAAE,YAAY,CAChD,8CAA8C,EAC9C,KAAK,EAA8D,CACpE;AACD,IAAA,iCAAiC,EAAE,YAAY,CAC7C,2CAA2C,EAC3C,KAAK,EAAwB,CAC9B;AACD,IAAA,yBAAyB,EAAE,YAAY,CACrC,0CAA0C,EAC1C,KAAK,EAAsC,CAC5C;AACD,IAAA,iCAAiC,EAAE,YAAY,CAC7C,2CAA2C,EAC3C,KAAK,EAA6C,CACnD;AACD,IAAA,mCAAmC,EAAE,YAAY,CAC/C,qCAAqC,EACrC,KAAK,EAMD,CACL;AACD,IAAA,+BAA+B,EAAE,YAAY,CAAC,oCAAoC,EAAE,KAAK,EAA2B,CAAC;AACrH,IAAA,uCAAuC,EAAE,YAAY,CACnD,wCAAwC,EACxC,KAAK,EAA+C,CACrD;AAED,IAAA,aAAa,EAAE,YAAY,CAAC,+BAA+B,EAAE,KAAK,EAAkB,CAAC;AACrF,IAAA,oBAAoB,EAAE,YAAY,CAAC,0CAA0C,EAAE,KAAK,EAAsB,CAAC;AAC3G,IAAA,oBAAoB,EAAE,YAAY,CAAC,0CAA0C,EAAE,KAAK,EAAkB,CAAC;AAEvG,IAAA,gBAAgB,EAAE,YAAY,CAAC,kCAAkC,EAAE,KAAK,EAAsB,CAAC;CAChG;;AC9DM,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAQrD,MAAM,qBAAqB,GAAmB;AACnD,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,OAAO,EAAE,KAAK;CACf,CAAC;AAEK,MAAM,gBAAgB,GAAG,aAAa,CAC3C,qBAAqB,EACrB,EAAE,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACvD,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,gBAAgB,EAAE,SAAS;AAC3B,IAAA,OAAO,EAAE,SAAS;AACnB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC9D,IAAA,GAAG,KAAK;AACR,IAAA,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7B,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC9D,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACtD,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC7D,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC7D,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EAEH,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACxD,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC/D,IAAA,GAAG,KAAK;IACR,gBAAgB,EAAE,MAAM,CAAC,IAAI;AAC7B,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC/D,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;CACf,CAAC,CAAC,CACJ;;ACzDD,MAAMA,SAAO,GAAG,qBAAqB,CAAgCC,oBAAmC,CAAC,CAAC;AAE1G,MAAM,UAAU,GAAG,cAAc,CAACD,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,UAAU,CAAC,CAAC;AACzE,MAAME,SAAO,GAAG,cAAc,CAACF,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,CAAC;AACnE,MAAM,gBAAgB,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,gBAAgB,CAAC,CAAC;AACrF,MAAM,kBAAkB,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;AAEzE,MAAM,mBAAmB,GAAG;aACjCA,SAAO;IACP,UAAU;aACVE,SAAO;IACP,gBAAgB;IAChB,kBAAkB;CACnB;;ACZM,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AASnD,MAAM,oBAAoB,GAAkB;AACjD,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,sBAAsB,EAAE;AACtB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,QAAQ,EAAE,EAAE;AACb,KAAA;CACF,CAAC;AAEK,MAAM,eAAe,GAAG,aAAa,CAC1C,oBAAoB,EACpB,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,KAAK,MAAM;AAC7C,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC5D,IAAA,GAAG,KAAK;AACR,IAAA,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC,KAAK,MAAM;AACpD,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EAEH,EAAE,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,KAAK,MAAM;AACnD,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,KAAK,MAAM;AACnD,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EAEH,EAAE,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,KAAK,MAAM;AACjD,IAAA,GAAG,KAAK;AACR,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,sBAAsB,EAAE;AACtB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,GAAG,EAAE,EAAE;AACR,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC1D,IAAA,GAAG,KAAK;IACR,YAAY,EAAE,MAAM,CAAC,IAAI;AAC1B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,4BAA4B,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACpE,IAAA,GAAG,KAAK;IACR,YAAY,EAAE,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI;AACtG,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAClE,IAAA,GAAG,KAAK;IACR,sBAAsB,EAAE,MAAM,CAAC,SAAS;AACzC,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACjE,IAAA,GAAG,KAAK;AACR,IAAA,sBAAsB,EAAE;QACtB,GAAG,KAAK,CAAC,sBAAsB;AAC/B,QAAA,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;AAC/D,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,KAAK,CAAC,sBAAsB,CAAC,QAAQ;YACxC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,SAAS;AACxC,SAAA;AACF,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACzE,IAAA,GAAG,KAAK;AACR,IAAA,sBAAsB,EAAE;QACtB,GAAG,KAAK,CAAC,sBAAsB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,KAAK,CAAC,sBAAsB,CAAC,QAAQ;AACxC,YAAA,CAAC,MAAM,CAAC,QAAQ,GAAG;gBACjB,GAAG,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACzD,QAAQ,EAAE,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;AAC3G,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,mCAAmC,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC3E,IAAA,GAAG,KAAK;AACR,IAAA,sBAAsB,EAAE;QACtB,GAAG,KAAK,CAAC,sBAAsB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,KAAK,CAAC,sBAAsB,CAAC,QAAQ;AACxC,YAAA,CAAC,MAAM,CAAC,WAAW,GAAG;gBACpB,GAAG,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5D,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK;AAC9C,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,+BAA+B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAI;IACrE,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5F,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;IAClG,OAAO;AACL,QAAA,GAAG,KAAK;AACR,QAAA,sBAAsB,EAAE;YACtB,GAAG,KAAK,CAAC,sBAAsB;YAC/B,GAAG;YACH,QAAQ;AACT,SAAA;KACF,CAAC;AACJ,CAAC,CAAC,EACF,EAAE,CAAC,gBAAgB,CAAC,uCAAuC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAI;AAC7E,IAAA,MAAM,QAAQ,GAAG;AACf,QAAA,IAAI,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,CAC7E,CAAC,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC,UAAU,CACjC,IAAI,EAAE,CAAC;KACT,CAAC;IACF,OAAO;AACL,QAAA,GAAG,KAAK;AACR,QAAA,sBAAsB,EAAE;YACtB,GAAG,KAAK,CAAC,sBAAsB;AAC/B,YAAA,QAAQ,EAAE;AACR,gBAAA,GAAG,KAAK,CAAC,sBAAsB,CAAC,QAAQ;AACxC,gBAAA,CAAC,MAAM,CAAC,WAAW,GAAG;oBACpB,GAAG,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;oBAC5D,QAAQ;AACT,iBAAA;AACF,aAAA;AACF,SAAA;KACF,CAAC;AACJ,CAAC,CAAC,CACH;;ACvID,MAAMF,SAAO,GAAG,qBAAqB,CAA8BG,mBAAiC,CAAC,CAAC;AAEtG,MAAM,SAAS,GAAG,cAAc,CAACH,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,SAAS,CAAC,CAAC;AACvE,MAAME,SAAO,GAAG,cAAc,CAACF,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,CAAC;AACnE,MAAM,YAAY,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,YAAY,CAAC,CAAC;AAC7E,MAAM,sBAAsB,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,sBAAsB,CAAC,CAAC;AACjG,MAAM,gBAAgB,GAAG,cAAc,CAAC,YAAY,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5E,MAAM,8BAA8B,GAAG,cAAc,CAAC,sBAAsB,EAAE,CAAC,UAAU,KAAK,UAAU,EAAE,QAAQ,CAAC,CAAC;AACpH,MAAM,kCAAkC,GAAG,cAAc,CAAC,sBAAsB,EAAE,CAAC,UAAU,KAC3F,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CACvG,CAAC;AACF,MAAM,oCAAoC,GAAG,cAAc,CAAC,sBAAsB,EAAE,CAAC,UAAU,KAAI;AACjG,IAAA,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAC9F,MAAM,SAAS,GAAG,EAAE,KAAK,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;AACnF,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,CAAC,EAAU,KAC5C,cAAc,CAAC,sBAAsB,EAAE,CAAC,UAA+B,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhG,MAAM,kBAAkB,GAAG;aAChCA,SAAO;IACP,SAAS;aACTE,SAAO;IACP,YAAY;IACZ,sBAAsB;IACtB,gBAAgB;IAChB,8BAA8B;IAC9B,kCAAkC;IAClC,oCAAoC;IACpC,0BAA0B;CAC3B;;MCzBY,uBAAuB,CAAA;AAKlC,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAF3B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU,CAAC;AAGtD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;KAChE;AAED,IAAA,gBAAgB,CAAC,EAAU,EAAA;AACzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAChC;8GAXU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,mHCVpC,sLAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDKa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,sLAAA,EAAA,CAAA;0EAM1B,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;;;MEHI,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAH3B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAwC,CAAC;AAIrF,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK;AAC9B,aAAA,MAAM,CAAC,kBAAkB,CAAC,oCAAoC,CAAC;aAC/D,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACzG,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAC5D,QAAQ,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EACnE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CACxF,CAAC;KACH;IAED,iBAAiB,CAAC,OAAe,EAAE,WAAmB,EAAA;AACpD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;KACzE;8GAhBU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,sHCVrC,2SAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDAa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,2SAAA,EAAA,CAAA;0EAI3B,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;AE2CF,MAAM,gBAAgB,GAAqB;AAChD,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,+BAA+B,EAAE,SAAS,EAAE,KAAK,EAAE;AACxG,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,gCAAgC,EAAE,SAAS,EAAE,KAAK,EAAE;AAC3G,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,8BAA8B,EAAE,SAAS,EAAE,KAAK,EAAE;AACvG,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE,SAAS,EAAE,KAAK,EAAE;AAC1G,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,sCAAsC,EAAE,SAAS,EAAE,KAAK,EAAE;AACjH,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE,SAAS,EAAE,KAAK,EAAE;AAC1G,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,sCAAsC,EAAE,SAAS,EAAE,KAAK,EAAE;AACjH,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC,EAAE,SAAS,EAAE,KAAK,EAAE;AACrH,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,sCAAsC,EAAE,SAAS,EAAE,KAAK,EAAE;AACjH,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC,EAAE,SAAS,EAAE,IAAI,EAAE;AACpH,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,wCAAwC,EAAE,SAAS,EAAE,IAAI,EAAE;AACpH,IAAA,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE,SAAS,EAAE,KAAK,EAAE;AACxG,IAAA,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,sCAAsC,EAAE,SAAS,EAAE,KAAK,EAAE;AAC/G,IAAA,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,sCAAsC,EAAE,SAAS,EAAE,KAAK,EAAE;AACjH,IAAA,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,oCAAoC,EAAE,SAAS,EAAE,KAAK,EAAE;AAC7G,IAAA,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,sCAAsC,EAAE,SAAS,EAAE,IAAI,EAAE;AAChH,IAAA,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,sCAAsC,EAAE,SAAS,EAAE,IAAI,EAAE;AAChH,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yBAAyB,EAAE,SAAS,EAAE,KAAK,EAAE;AAC5F,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE,SAAS,EAAE,KAAK,EAAE;AACpG,IAAA,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yBAAyB,EAAE,SAAS,EAAE,KAAK,EAAE;AAC1F,IAAA,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE,SAAS,EAAE,KAAK,EAAE;AAClG,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yBAAyB,EAAE,SAAS,EAAE,KAAK,EAAE;AAC5F,IAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE,SAAS,EAAE,KAAK,EAAE;CACrG;;MClEY,2BAA2B,CAAA;IAItC,IACI,EAAE,CAAC,GAAW,EAAA;AAChB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AASD,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAhBrC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QACT,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAS1B,QAAA,IAAA,CAAA,MAAM,GAA6B,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,UAAU,GAAsC,EAAE,CAAC,SAAS,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,SAAS,GAAsC,EAAE,CAAC,SAAS,CAAC,CAAC;AAC7D,QAAA,IAAA,CAAA,UAAU,GAA2C,EAAE,CAAC,IAAI,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,gBAAgB,GAAiC,EAAE,CAAC,EAAE,CAAC,CAAC;KAEf;IAEjC,iBAAiB,GAAA;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACnG,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CACpC,MAAM,CAAC,CAAC,IAAI,KAAkC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,EAClF,QAAQ,CAAC,CAAC,IAAI,KACZ,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CACtG,EACD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAI;AACpB,YAAA,OAAQ,KAAe,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1E,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAChC,MAAM,CAAC,CAAC,IAAI,KAAwB,IAAI,KAAK,SAAS,CAAC,EACvD,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAC1B,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACtC,MAAM,CAAC,CAAC,KAAK,KAAqB,KAAK,KAAK,SAAS,CAAC,EACtD,GAAG,CAAC,CAAC,KAAY,KAAI;AACnB,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;AAC7B,YAAA,IAAI,SAAS,KAAK,SAAS,CAAC,MAAM,IAAI,SAAS,KAAK,SAAS,CAAC,OAAO,EAAE;AACrE,gBAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;aAC9D;AAAM,iBAAA,IAAI,SAAS,KAAK,SAAS,CAAC,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,OAAO,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE;AAC7G,gBAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;aAC9D;iBAAM;AACL,gBAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;aAC5D;SACF,CAAC,CACH,CAAC;KACH;IAED,gBAAgB,CAAC,QAAsB,EAAE,WAAmB,EAAA;QAC1D,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,mCAAmC,CAAC;YACnD,WAAW;YACX,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;AAChD,SAAA,CAAC,CACH,CAAC;KACH;IAED,aAAa,CAAC,GAAQ,EAAE,WAAmB,EAAA;QACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,mCAAmC,CAAC;YACnD,WAAW;AACX,YAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE;AACrD,SAAA,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAED,0BAA0B,CAAC,WAAmB,EAAE,QAAgB,EAAA;QAC9D,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,uCAAuC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAC7G,CAAC;KACH;8GAhFU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,2GCZxC,i0FAyEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD7Da,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,i0FAAA,EAAA,CAAA;0EAK1B,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAGF,EAAE,EAAA,CAAA;sBADL,KAAK;;;MEHK,0BAA0B,CAAA;IAGrC,IACI,EAAE,CAAC,GAAW,EAAA;AAChB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAgBD,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAtB5B,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAS1B,QAAA,IAAA,CAAA,SAAS,GAAsC,EAAE,CAAC,SAAS,CAAC,CAAC;AAC7D,QAAA,IAAA,CAAA,UAAU,GAA2C,EAAE,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;QAE5B,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QAEzB,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;AACd,YAAA,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;AACxE,YAAA,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,sCAAsC,EAAE;AAC/E,YAAA,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yBAAyB,EAAE;AAC1D,YAAA,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;AACnE,SAAA,CAAC,CAAC;AAGD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;KACxE;IAEO,iBAAiB,GAAA;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CACnC,MAAM,CAAC,CAAC,IAAI,KAAkC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,EAClF,SAAS,CAAC,CAAC,IAAyB,KAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAC7E,CACF,CAAC;KACH;IAED,gBAAgB,CAAC,QAAsB,EAAE,WAAmB,EAAA;QAC1D,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,mCAAmC,CAAC;YACnD,WAAW;YACX,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;AAChD,SAAA,CAAC,CACH,CAAC;KACH;IAED,aAAa,CAAC,GAAQ,EAAE,WAAmB,EAAA;QACzC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,mCAAmC,CAAC;YACnD,WAAW;AACX,YAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE;AACrD,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,oBAAoB,CAAC,WAAmB,EAAE,QAAkC,EAAE,QAAmB,EAAA;AAC/F,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,MAAM,KAAK,GACT,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,QAAQ;AACxC,cAAE,CAAA,kBAAA,EAAqB,QAAQ,CAAC,IAAI,CAAK,GAAA,CAAA;AACzC,cAAE,CAAqB,kBAAA,EAAA,QAAQ,CAAC,IAAI,gBAAgB,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,mCAAmC,CAAC;YACnD,WAAW;AACX,YAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;AACnC,SAAA,CAAC,CACH,CAAC;KACH;IAED,yBAAyB,CAAC,WAAmB,EAAE,QAAgB,EAAA;AAC7D,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,uCAAuC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAC7G,CAAC;KACH;8GA1EU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,0GCbvC,g1FA4EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD/Da,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,g1FAAA,EAAA,CAAA;0EAIzB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAGF,EAAE,EAAA,CAAA;sBADL,KAAK;;;MELK,0BAA0B,CAAA;IAQrC,IAAa,EAAE,CAAC,GAAW,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KAC9F;AAYD,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAtB5B,IAAG,CAAA,GAAA,GAAkB,KAAK,CAAC;QAC3B,IAAE,CAAA,EAAA,GAAkB,IAAI,CAAC;QACzB,IAAS,CAAA,SAAA,GAAkB,WAAW,CAAC;QACvC,IAAQ,CAAA,QAAA,GAAkB,UAAU,CAAC;AAU9C,QAAA,IAAA,CAAA,UAAU,GAA2C,EAAE,CAAC,IAAI,CAAC,CAAC;QAErD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAE7B,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAElB,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAG1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;KACjF;IAED,iBAAiB,CAAC,GAAyC,EAAE,WAAmB,EAAA;AAC9E,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,oCAAoC,CAAC;YACpD,WAAW,EAAE,GAAG,CAAC,SAAS;YAC1B,OAAO,EAAE,GAAG,CAAC,KAAK;AAClB,YAAA,QAAQ,EAAE,WAAW;AACtB,SAAA,CAAC,CACH,CAAC;KACH;IAED,gBAAgB,CAAC,EAAU,EAAE,WAAmB,EAAA;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,mCAAmC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAChG,CAAC;KACH;AAED,IAAA,uBAAuB,CAAC,WAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iCAAiC,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;KACpG;IAED,qBAAqB,CAAC,aAA4B,EAAE,WAAmB,EAAA;QACrE,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,gBAAgB,CAAC,mCAAmC,CAAC;YACnD,WAAW;YACX,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE;AACjD,SAAA,CAAC,CACH,CAAC;KACH;8GAxDU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXvC,84GAoFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,uBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzEa,0BAA0B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,84GAAA,EAAA,CAAA;0EAWrB,EAAE,EAAA,CAAA;sBAAd,KAAK;gBAQG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;;;MEbK,2BAA2B,CAAA;AAetC,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAjBtB,IAAS,CAAA,SAAA,GAAkB,WAAW,CAAC;QACvC,IAAQ,CAAA,QAAA,GAAkB,UAAU,CAAC;QACrC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;QAKtB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAWlB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,CAAC;AAC5G,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,kCAAkC,CAAC,CAAC;KAC/F;AAED,IAAA,WAAW,CAAC,IAAe,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC;KACb;IAED,wBAAwB,CAAC,QAAwB,EAAE,KAAa,EAAA;AAC9D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;KACzF;AAED,IAAA,gBAAgB,CAAC,IAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/E,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;SAC3F;KACF;IAED,MAAM,GAAA;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;KAChG;8GA/CU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,iHCfxC,gkTAmOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,0BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDpNa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,gkTAAA,EAAA,CAAA;4HAM5B,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;MENK,2BAA2B,CAAA;AACtC,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAE7B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;KACxD;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC3D,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,IAAI,EAAE,YAAY;AACnB,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC,CACH,CAAC;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACtE,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC;KAC3D;8GAlCU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,iECbxC,kMAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,2BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDSa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,kMAAA,EAAA,CAAA;;;MEH1B,gBAAgB,CAAA;IAC3B,qBAAqB,GAAA;QACnB,OAAO;YACL,EAAE,EAAEU,EAAM,EAAE;AACZ,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,MAAM,EAAE,IAAI;SACD,CAAC;KACf;AAED,IAAA,mBAAmB,CAAC,QAAA,GAA0B,IAAI,EAAE,cAA6B,IAAI,EAAA;AACnF,QAAA,MAAM,EAAE,GAAGA,EAAM,EAAE,CAAC;QACpB,OAAO;YACL,EAAE,EAAE,WAAW,IAAI,EAAE;YACrB,QAAQ,EAAE,QAAQ,IAAI,EAAE;AACxB,YAAA,IAAI,EAAE,KAAK;SACW,CAAC;KAC1B;IAED,oBAAoB,CAClB,QAAgB,EAChB,QAAgB,EAChB,QAAyB,GAAA,QAAQ,EACjC,KAAA,GAAa,EAAE,EAAA;AAEf,QAAA,MAAM,EAAE,GAAGA,EAAM,EAAE,CAAC;QACpB,OAAO;YACL,EAAE;YACF,QAAQ;YACR,QAAQ;AACR,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,KAAK;SACU,CAAC;KAC1B;IAED,qBAAqB,CACnB,SAAiB,EACjB,OAAe,EACf,QAAgB,EAChB,QAAyB,GAAA,QAAQ,EACjC,KAAA,GAAa,EAAE,EAAA;AAEf,QAAA,MAAM,EAAE,GAAGA,EAAM,EAAE,CAAC;QACpB,OAAO;YACL,EAAE;YACF,SAAS;YACT,QAAQ;AACR,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,KAAK,EAAE,KAAK;SACU,CAAC;KAC1B;IAED,uBAAuB,CAAC,IAAc,EAAE,UAA+B,EAAA;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAC9D,QAAA,OAAO,SAAS,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;KACzD;AAED,IAAA,0BAA0B,CAAC,UAA+B,EAAA;AACxD,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;KACrG;IAED,iCAAiC,CAAC,IAAyB,EAAE,IAAyB,EAAA;QACpF,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACrG,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;KACH;AAED,IAAA,yBAAyB,CAAC,IAAc,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAa;YACzB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;AACF,QAAA,MAAM,QAAQ,GAAGA,EAAM,EAAE,CAAC;AAC1B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS;AAC/B,cAAE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,UAAU;cAC9E,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACnD,QAAA,MAAM,mBAAmB,GAAwB;YAC/C,QAAQ;AACR,YAAA,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;AACtC,YAAA,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;SAC9E,CAAC;QACF,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,UAAU,EAAE,mBAAmB;SAChC,CAAC;KACH;AAED,IAAA,0BAA0B,CACxB,IAAe,EACf,QAAgB,EAChB,WAA0B,IAAI,EAAA;AAE9B,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AAC7C,YAAA,MAAM,EAAE,GAAG,QAAQ,IAAIA,EAAM,EAAE,CAAC;AAChC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACxF,gBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9C,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CACxC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,EACzC,EAA2B,CAC5B,CAAC;gBACF,OAAO;oBACL,EAAE;AACF,oBAAA,UAAU,EAAE;AACV,wBAAA;4BACE,EAAE;AACF,4BAAA,QAAQ,EAAE,QAAQ;4BAClB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,4BAAA,QAAQ,EAAE,GAAG;AACd,yBAAA;AACD,wBAAA,GAAG,kBAAkB;AACtB,qBAAA;iBACF,CAAC;aACH;YACD,OAAO;gBACL,EAAE;AACF,gBAAA,UAAU,EAAE;AACV,oBAAA;wBACE,EAAE;AACF,wBAAA,QAAQ,EAAE,QAAQ;wBAClB,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB,qBAAA;AACF,iBAAA;aACF,CAAC;SACH;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;AACpC,YAAA,MAAM,EAAE,GAAG,QAAQ,IAAIA,EAAM,EAAE,CAAC;YAChC,OAAO;gBACL,EAAE;AACF,gBAAA,UAAU,EAAE;AACV,oBAAA;wBACE,EAAE;wBACF,QAAQ;AACR,wBAAA,IAAI,EAAE,WAAW;wBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,qBAAA;AACF,iBAAA;aACF,CAAC;SACH;aAAM;AACL,YAAA,MAAM,EAAE,GAAG,QAAQ,IAAIA,EAAM,EAAE,CAAC;YAChC,OAAO;gBACL,EAAE;AACF,gBAAA,UAAU,EAAE;AACV,oBAAA;AACE,wBAAA,EAAE,EAAE,EAAE;wBACN,QAAQ;AACR,wBAAA,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,qBAAA;AACF,iBAAA;aACF,CAAC;SACH;KACF;8GA3KU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCMY,0BAA0B,CAAA;IACrC,WACU,CAAA,KAAiB,EACjB,eAAiC,EAAA;QADjC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAkB;AAEzC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;AAC7D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;KAC3E;IAED,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC;KAC3D;8GAhBU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,gECZvC,uNAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,2BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDQa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,uNAAA,EAAA,CAAA;;;MEIzB,2BAA2B,CAAA;AACtC,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAE7B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;KACrD;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC3D,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,IAAI,EAAE,YAAY;AACnB,qBAAA;AACD,oBAAA;AACE,wBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,YAAY,EAAE,OAAO;AACrB,wBAAA,UAAU,EAAE,YAAY;AACxB,wBAAA,YAAY,EAAE,OAAO;AACtB,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC,CACH,CAAC;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACtE,SAAC,CAAC,CAAC;KACJ;8GAtCU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,iECbxC,qMAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,2BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDSa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,qMAAA,EAAA,CAAA;;;MEI1B,uBAAuB,CAAA;AAMlC,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAN/B,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QACrB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;QAOrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC;AAClE,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,cAAc,CAAC,IAAc,EAAA;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAG,EAAA,IAAI,CAAC,EAAE,CAAA,CAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACxF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;KACtE;8GAnCU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,4DCdpC,2hEAwDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD1Ca,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,2hEAAA,EAAA,CAAA;;;AER3B,MAAM,iBAAiB,GAAG;AAC/B,IAAA,aAAa,EAAE,YAAY,CAAC,sCAAsC,CAAC;AAEnE,IAAA,cAAc,EAAE,YAAY,CAAC,kCAAkC,EAAE,KAAK,EAAmC,CAAC;AAC1G,IAAA,eAAe,EAAE,YAAY,CAAC,mCAAmC,CAAC;AAElE,IAAA,SAAS,EAAE,YAAY,CAAC,4BAA4B,EAAE,KAAK,EAAmC,CAAC;AAC/F,IAAA,gBAAgB,EAAE,YAAY,CAAC,wCAAwC,EAAE,KAAK,EAAqB,CAAC;AACpG,IAAA,gBAAgB,EAAE,YAAY,CAAC,wCAAwC,EAAE,KAAK,EAAkB,CAAC;AAEjG,IAAA,YAAY,EAAE,YAAY,CAAC,+BAA+B,EAAE,KAAK,EAA0B,CAAC;AAC5F,IAAA,mBAAmB,EAAE,YAAY,CAAC,2CAA2C,CAAC;AAC9E,IAAA,mBAAmB,EAAE,YAAY,CAAC,2CAA2C,EAAE,KAAK,EAAkB,CAAC;AAEvG,IAAA,WAAW,EAAE,YAAY,CAAC,8BAA8B,EAAE,KAAK,EAAoB,CAAC;AACpF,IAAA,kBAAkB,EAAE,YAAY,CAAC,0CAA0C,EAAE,KAAK,EAAkB,CAAC;AAErG,IAAA,aAAa,EAAE,YAAY,CAAC,gCAAgC,CAAC;AAE7D,IAAA,WAAW,EAAE,YAAY,CAAC,8BAA8B,EAAE,KAAK,EAAiC,CAAC;AACjG,IAAA,kBAAkB,EAAE,YAAY,CAAC,0CAA0C,EAAE,KAAK,EAAqB,CAAC;AACxG,IAAA,kBAAkB,EAAE,YAAY,CAAC,0CAA0C,EAAE,KAAK,EAAkB,CAAC;AAErG,IAAA,uBAAuB,EAAE,YAAY,CACnC,4CAA4C,EAC5C,KAAK,EAA8E,CACpF;AACD,IAAA,8BAA8B,EAAE,YAAY,CAC1C,wDAAwD,EACxD,KAAK,EAA8D,CACpE;AACD,IAAA,8BAA8B,EAAE,YAAY,CAC1C,wDAAwD,EACxD,KAAK,EAAkB,CACxB;AAED,IAAA,eAAe,EAAE,YAAY,CAC3B,0CAA0C,EAC1C,KAAK,EAAuC,CAC7C;AACD,IAAA,iBAAiB,EAAE,YAAY,CAAC,4CAA4C,CAAC;AAE7E,IAAA,qBAAqB,EAAE,YAAY,CACjC,mDAAmD,EACnD,KAAK,EAA4D,CAClE;AACD,IAAA,4BAA4B,EAAE,YAAY,CACxC,+DAA+D,EAC/D,KAAK,EAAqB,CAC3B;AACD,IAAA,4BAA4B,EAAE,YAAY,CACxC,+DAA+D,EAC/D,KAAK,EAAkB,CACxB;AACD,IAAA,IAAI,EAAE,YAAY,CAAC,sBAAsB,EAAE,KAAK,EAAoB,CAAC;AACrE,IAAA,SAAS,EAAE,YAAY,CAAC,oBAAoB,CAAC;AAC7C,IAAA,UAAU,EAAE,YAAY,CAAC,qBAAqB,CAAC;AAC/C,IAAA,oBAAoB,EAAE,YAAY,CAAC,uCAAuC,EAAE,KAAK,EAAgC,CAAC;AAClH,IAAA,wBAAwB,EAAE,YAAY,CACpC,2CAA2C,EAC3C,KAAK,EAKD,CACL;AACD,IAAA,iBAAiB,EAAE,YAAY,CAAC,0CAA0C,CAAC;AAC3E,IAAA,wBAAwB,EAAE,YAAY,CACpC,kDAAkD,EAClD,KAAK,EAAgC,CACtC;AACD,IAAA,wBAAwB,EAAE,YAAY,CAAC,kDAAkD,EAAE,KAAK,EAAkB,CAAC;CACpH;;ACxEM,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAW/C,MAAM,iBAAiB,GAAoB;AAChD,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,SAAS,EAAE,KAAK;IAChB,cAAc,EAAE,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEK,MAAM,YAAY,GAAG,aAAa,CACvC,iBAAiB,EACjB,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACpD,IAAA,GAAG,KAAK;IACR,aAAa,EAAE,MAAM,CAAC,KAAK;AAC5B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACtD,IAAA,GAAG,KAAK;AACR,IAAA,aAAa,EAAE,SAAS;AACzB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACxD,IAAA,GAAG,KAAK;IACR,iBAAiB,EAAE,MAAM,CAAC,YAAY;AACvC,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC1D,IAAA,GAAG,KAAK;AACR,IAAA,iBAAiB,EAAE,SAAS;AAC7B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACvD,IAAA,GAAG,KAAK;IACR,UAAU,EAAE,MAAM,CAAC,KAAK;AACzB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACzD,IAAA,GAAG,KAAK;AACR,IAAA,UAAU,EAAE,SAAS;AACtB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM;AACrC,IAAA,GAAG,KAAK;AACR,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,aAAa,EAAE,SAAS;AACzB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,KAAK,MAAM;AAChD,IAAA,GAAG,KAAK;AACR,IAAA,UAAU,EAAE,SAAS;AACtB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,KAAK,MAAM;AAC1C,IAAA,GAAG,KAAK;AACR,IAAA,SAAS,EAAE,IAAI;AAChB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,KAAK,MAAM;AAC3C,IAAA,GAAG,KAAK;AACR,IAAA,SAAS,EAAE,KAAK;AACjB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,CAAC,KAAK,MAAM;AACxD,IAAA,GAAG,KAAK;AACR,IAAA,iBAAiB,EAAE,SAAS;AAC7B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACjE,IAAA,GAAG,KAAK;IACR,cAAc,EAAE,MAAM,CAAC,cAAc;CACtC,CAAC,CAAC,CACJ;;ACrED,MAAMN,SAAO,GAAG,qBAAqB,CAA4BkB,iBAA2B,CAAC,CAAC;AAE9F,MAAMhB,SAAO,GAAG,cAAc,CAACF,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,CAAC;AACnE,MAAM,aAAa,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,aAAa,CAAC,CAAC;AAC/E,MAAM,eAAe,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,EAAE,CAAC,CAAC;AAC5E,MAAM,iBAAiB,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACvF,MAAM,mBAAmB,GAAG,cAAc,CAAC,iBAAiB,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,EAAE,CAAC,CAAC;AACpF,MAAM,UAAU,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,UAAU,CAAC,CAAC;AACzE,MAAM,YAAY,GAAG,cAAc,CAAC,UAAU,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,EAAE,CAAC,CAAC;AACtE,MAAM,SAAS,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AACtE,MAAM,cAAc,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,CAAC,CAAC;AAEzE,MAAM,mBAAmB,GAAG;aACjCA,SAAO;aACPE,SAAO;IACP,aAAa;IACb,eAAe;IACf,iBAAiB;IACjB,mBAAmB;IACnB,UAAU;IACV,YAAY;IACZ,SAAS;IACT,cAAc;CACf;;ACSK,MAAO,qCAAsC,SAAQ,wBAAwB,CAAA;IA2BjF,IAAa,YAAY,CAAC,KAA+B,EAAA;QACvD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAK,EAAY,CAAC,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAC1C,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CACxE,CAAC;KACH;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;KAClC;AAED,IAAA,WAAA,CACU,qBAA4C,EAC5C,QAAkB,EAClB,gBAAgC,EAChC,KAAY,EAAA;AAEpB,QAAA,KAAK,EAAE,CAAC;QALA,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAgB;QAChC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;AAxCtB,QAAA,IAAA,CAAA,kBAAkB,GAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAEzD,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AACjC,QAAA,IAAA,CAAA,2BAA2B,GAAG;AAC5B,YAAA;AACE,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,EAAE,EAAE,IAAI;AACT,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,EAAE,EAAE,QAAQ;AACb,aAAA;SACa,CAAC;AACP,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;AACzC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAQ,EAAW,CAAC,CAAC;QACjE,IAAU,CAAA,UAAA,GAAW,EAAE,CAAC;QAExB,IAAI,CAAA,IAAA,GAAoC,EAAE,CAAC;QAC3C,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAK3B,IAAU,CAAA,UAAA,GAAgB,EAAE,CAAC;QAoB3B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CACjE,GAAG,CAAC,CAAC,KAAK,KACR,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACnB,YAAA,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;SAC7D,CAAC,CAAC,CACJ,CACF,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACvE,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;SAC9F,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAChF,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC,EACrF,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CACjH,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1C,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,KAAK;AAClB,iBAAA,GAAG,CAAC,CAAC,IAAI,MAAM;AACd,gBAAA,CAAC,IAAI,CAAC,aAAa,GAAG;AACpB,oBAAA,IAAI,EAAE,OAAO;oBACb,KAAK,EACH,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,GAAG;AACzG,oBAAA,OAAO,EAAE,IAAI;AACU,iBAAA;AAC1B,aAAA,CAAC,CAAC;iBACF,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AACnE,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;gBAC5B,EAAE,EAAE,EAAE,EAAE;AACR,gBAAA,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,GAAG;AACnG,gBAAA,UAAU,EAAE,EAA6C;AAClD,aAAA,CAAC,CAAC;SACd,CAAC,CACH,CAAC;KACH;AAED,IAAA,kBAAkB,CAAC,MAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,MAAM,CAAC;QACtC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,WAAW,EAAE;YAChD,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;SAC1F;aAAM;AACL,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,EAAE,CAAC;SACtC;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9D,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;SACtE;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAC3D,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAC5B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,CACb,CAAC;AACF,QAAA,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AACjC,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,SAAS,CAAC;YAC5B,IAAI,SAAS,EAAE;gBACb,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AAE7C,gBAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;gBAE9B,SAAS,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;aAC9D;AACH,SAAC,CAAC,CAAC;KACJ;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,WAAW,CAAC;AACxB,YAAA,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACjE,SAAA,CAAC,CACH,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;AAED,IAAA,gBAAgB,CAAC,MAAW,EAAA;QAC1B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC;QACpD,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,CAAC,CAAC;KAC7C;AAEO,IAAA,aAAa,CAAC,MAAsB,EAAA;AAC1C,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;YAC/B,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAY,KAAI;gBACjD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1D,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrB;AACH,aAAC,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAY,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SAC1G;AACD,QAAA,OAAO,MAAM,CAAC;KACf;8GA1JU,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAiB,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAf,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAArC,qCAAqC,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAClB,gBAAgB,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpChD,u0DA2DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAY,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDxBa,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAJjD,SAAS;+BACE,qCAAqC,EAAA,QAAA,EAAA,u0DAAA,EAAA,CAAA;kKAIG,OAAO,EAAA,CAAA;sBAAxD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBActC,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAYM,YAAY,EAAA,CAAA;sBAAxB,KAAK;;;AE5CR,MAAM,YAAY,GAAG;AACnB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;CACnB,CAAC;AAMI,MAAO,oCAAqC,SAAQ,wBAAwB,CAAA;IAoBhF,IAAa,YAAY,CAAC,KAA+B,EAAA;AACvD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,IAAK,EAAY,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC;AAC5G,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC/C,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7D;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KACpF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CACrC,CAAC;KACH;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAED,WACU,CAAA,gBAAgC,EAChC,KAAY,EAAA;AAEpB,QAAA,KAAK,EAAE,CAAC;QAHA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAgB;QAChC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;AArCZ,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;QACzC,IAAa,CAAA,aAAA,GAAU,EAAW,CAAC;QAC3C,IAAW,CAAA,WAAA,GAAkB,EAAE,CAAC;QAChC,IAAkB,CAAA,kBAAA,GAAmB,SAAS,CAAC;QAC/C,IAAQ,CAAA,QAAA,GAAoB,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;YACpD,KAAK,EAAE,sBAAsB,GAAG,GAAG;AACnC,YAAA,KAAK,EAAE,GAAG;AACX,SAAA,CAAC,CAAC,CAAC;QACJ,IAAc,CAAA,cAAA,GAAgB,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM;YAC/D,KAAK,EAAE,gCAAgC,GAAG,EAAE;AAC5C,YAAA,IAAI,EAAE,EAAE;AACT,SAAA,CAAC,CAAC,CAAC;AACJ,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACnC,YAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA;AACxB,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC,CAAC,CAAC;AAuBF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,KAAK;AACP,aAAA,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC;AACvC,aAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC;AACtG,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC,IAAI,EAAE;gBACtC,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC7D;SACF,CAAC,CACL,CAAC;KACH;IAED,cAAc,CAAC,IAAY,EAAE,CAAS,EAAA;QACpC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAChG,CAAC;KACH;IAED,cAAc,CAAC,MAAW,EAAE,CAAS,EAAA;QACnC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC;KACvC;IAED,cAAc,CAAC,MAAW,EAAE,CAAS,EAAA;;QAEnC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;KACjD;IAED,WAAW,CAAC,MAAW,EAAE,CAAS,EAAA;;QAEhC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;KACzC;IAED,eAAe,CAAC,MAAW,EAAE,CAAS,EAAA;;QAEpC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;KAC7C;AAED,IAAA,UAAU,CAAC,CAAS,EAAA;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAC7B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;SAClF;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC;SACtC;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAChG,CAAC;KACH;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;IAED,UAAU,CAAC,CAAS,EAAE,MAAc,EAAA;QAClC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC;KACtC;AAED,IAAA,UAAU,CAAC,MAAc,EAAA;AACvB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;QAClE,IAAI,WAAW,EAAE;YACf,WAAW,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACzC;KACF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QACnH,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAChG,CAAC;KACH;AAED,IAAA,UAAU,CAAC,CAAS,EAAA;QAClB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAChG,CAAC;KACH;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,WAAW,CAAC;AACxB,YAAA,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5F,SAAA,CAAC,CACH,CAAC;KACH;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAED,IAAI,CAAC,KAAa,EAAE,SAAiB,EAAA;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAChG,CAAC;KACH;8GApJU,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAf,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,oLC5BjD,uwKAoIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDxGa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAJhD,SAAS;+BACE,oCAAoC,EAAA,QAAA,EAAA,uwKAAA,EAAA,CAAA;uGAIpC,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAmBM,YAAY,EAAA,CAAA;sBAAxB,KAAK;;;AExBF,MAAO,8BAA+B,SAAQ,wBAAwB,CAAA;AAa1E,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;AAE7B,QAAA,KAAK,EAAE,CAAC;QAJA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAd/B,IAAY,CAAA,YAAA,GAAU,EAAW,CAAC;QAClC,IAAiB,CAAA,iBAAA,GAAa,EAAE,CAAC;QACjC,IAAe,CAAA,eAAA,GAAa,EAAE,CAAC;AAG/B,QAAA,IAAA,CAAA,QAAQ,GAAwB,EAAE,CAAC,EAAE,CAAC,CAAC;QACvC,IAAqB,CAAA,qBAAA,GAAa,EAAE,CAAC;QACrC,IAAmB,CAAA,mBAAA,GAAa,EAAE,CAAC;QACnC,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;QASrB,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAW,EAAE,CAAC,CAAC,CAC7F,CACF,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;AAC1C,SAAA,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,YAAY,GAAG,KAAK,IAAK,EAAY,CAAC,CAAC,CAAC,CAAC;AAC9G,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC,IAAI,CACvG,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,EACnD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KACxB,SAAS,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,GAAY,IAAI,EAAE,MAAM,CAAC,CAC9F,CACF,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAI;AACrG,YAAA,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU;AAC5D,iBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC5C,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC,IAAI,CACnG,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,EACnD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KACxB,SAAS,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,GAAY,IAAI,EAAE,MAAM,CAAC,CAC9F,EACD,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CACpE,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAI;AACzG,YAAA,IAAI,CAAC,qBAAqB,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU;AAChE,iBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC5C,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B,CAAC,CACH,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACxE,YAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;SAC/B,CAAC,CACH,CAAC;KACH;IAED,MAAM,GAAA;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;KACxE;AAED,IAAA,IAAI,CAAC,KAA4B,EAAA;QAC/B,IAAI,KAAK,CAAC,iBAAiB,KAAK,KAAK,CAAC,SAAS,EAAE;AAC/C,YAAA,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;SAChF;aAAM;YACL,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;SAChH;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC;QAC5G,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;KAC5E;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,0BAA0B,CAAC;AACvC,YAAA,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE;AACvE,SAAA,CAAC,CACH,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,eAAe,GAAA;QACb,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,kBAAkB,CAAC;AAC/B,YAAA,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACpE,SAAA,CAAC,CACH,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC;KAC9G;8GAxGU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,0FCxB3C,yiIAuHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,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,EAAA,6BAAA,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,EAAAA,IAAA,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,EAAA,cAAA,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,EAAAc,qCAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oCAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD/Fa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,yiIAAA,EAAA,CAAA;;;AETnC,MAAO,iBAAkB,SAAQ,wBAAwB,CAAA;IAG7D,WAAoB,CAAA,KAAwB,EAAU,KAAqB,EAAA;AACzE,QAAA,KAAK,EAAE,CAAC;QADU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAEzE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/F;8GARU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,wECZ9B,4GACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDWa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,4GAAA,EAAA,CAAA;;AAcjB,SAAU,qBAAqB,CAAC,OAAwB,EAAA;IAC5D,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzF,IAAA,MAAM,OAAO,GAAG,CAAC,YAAY,CAAC;AAC9B,IAAA,OAAO,OAAO,GAAG,IAAI,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC/C;;AEZM,MAAO,yBAA0B,SAAQ,wBAAwB,CAAA;IAWrE,IAAa,YAAY,CAAC,GAAU,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;AACzB,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;SAChE;aAAM;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;SAC/D;KACF;AAED,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EACrB,WAA+B,EAAA;AAEvC,QAAA,KAAK,EAAE,CAAC;QALA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AAnBzC,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAEzB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAoBlB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACtC,YAAA,EAAE,EAAE,CAACC,EAAI,EAAE,CAAC;YACZ,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC5G,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5C,OAAO,EAAE,CAAC,SAAS,CAAC;AACrB,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;KAC9E;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK;AAC1B,aAAA,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;aAC9B,IAAI,CAAC,GAAG,CAAC,CAAC,OAAgB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,KAAY,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAkC;AAC9D,YAAA,IAAI,CAAC,WAAW;AACjB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAC5G,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1C,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;aAClE;AACD,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AACxB,gBAAA,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;AACzB,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;AAC7B,gBAAA,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO;AACpC,aAAA,CAAC,CAAC;SACJ;KACF;IAED,MAAM,GAAA;AACJ,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,GAAG,IAAI,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;KACxE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACvC,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAC/C,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,WAAW,GAAG;oBACZ,GAAG,IAAI,CAAC,aAAa;AACrB,oBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;iBACvB,CAAC;gBACX,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC5E,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;aAClG;iBAAM;AACL,gBAAA,WAAW,CAAC,UAAU,GAAG,EAAE,CAAC;gBAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;aACvG;SACF;KACF;8GA7FU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,+HCftC,ovFA4EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD7Da,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,ovFAAA,EAAA,CAAA;+JAcrB,YAAY,EAAA,CAAA;sBAAxB,KAAK;;;MEhBK,yBAAyB,CAAA;AAGpC,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAE7B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5C;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CACzB,CAAC,MAAM,MAAM,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC7F,CAAC;KACH;8GAfU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,8DCVtC,gQAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDIa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,gQAAA,EAAA,CAAA;;;MEDvB,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,6DCNrC,kKAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,kKAAA,EAAA,CAAA;;;AEA5B,MAAM,mBAAmB,GAAG;AACjC,IAAA,OAAO,EAAE,YAAY,CAAC,kCAAkC,EAAE,KAAK,EAAkB,CAAC;AAClF,IAAA,MAAM,EAAE,YAAY,CAAC,0BAA0B,EAAE,KAAK,EAAuC,CAAC;AAC9F,IAAA,MAAM,EAAE,YAAY,CAAC,0BAA0B,EAAE,KAAK,EAAwC,CAAC;AAC/F,IAAA,sBAAsB,EAAE,YAAY,CAClC,4BAA4B,EAC5B,KAAK,EAAqD,CAC3D;AACD,IAAA,MAAM,EAAE,YAAY,CAAC,0BAA0B,EAAE,KAAK,EAAqD,CAAC;AAC5G,IAAA,OAAO,EAAE,YAAY,CAAC,4CAA4C,EAAE,KAAK,EAAwB,CAAC;AAElG,IAAA,aAAa,EAAE,YAAY,CAAC,gCAAgC,EAAE,KAAK,EAAwB,CAAC;AAC5F,IAAA,eAAe,EAAE,YAAY,CAAC,4BAA4B,CAAC;AAC3D,IAAA,cAAc,EAAE,YAAY,CAAC,6BAA6B,EAAE,KAAK,EAAkB,CAAC;AACpF,IAAA,qBAAqB,EAAE,YAAY,CAAC,qCAAqC,EAAE,KAAK,EAAqB,CAAC;AACtG,IAAA,qBAAqB,EAAE,YAAY,CAAC,qCAAqC,EAAE,KAAK,EAAkB,CAAC;AACnG,IAAA,cAAc,EAAE,YAAY,CAAC,4BAA4B,EAAE,KAAK,EAAqB,CAAC;AACtF,IAAA,gBAAgB,EAAE,YAAY,CAAC,8BAA8B,EAAE,KAAK,EAA6C,CAAC;AAClH,IAAA,WAAW,EAAE,YAAY,CAAC,wBAAwB,EAAE,KAAK,EAA0B,CAAC;CACrF;;MCJY,yBAAyB,CAAA;AA0BpC,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;AAvBrC,QAAA,IAAA,CAAA,QAAQ,GAAG;YACT,EAAE,EAAEmB,EAAI,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;SACT,CAAC;AACF,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC,CAAC;AAGnD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAY,CAAC;AAElD,QAAA,IAAA,CAAA,OAAO,GAAG;AACR,YAAA,SAAS,EAAE;AACT,gBAAA,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzD,gBAAA,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC;gBAC7D,GAAG,EAAE,CAAC,QAAkB,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC/F,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AAC1E,gBAAA,MAAM,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC;gBAC/D,GAAG,EAAE,CAAC,QAAkB,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChG,aAAA;SACF,CAAC;KAEuC;IAEzC,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC7E,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,KACvB,MAAM;cACF,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;AAC9F,cAAE,UAAU,CACf,CACF,CAAC;KACH;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;KACtC;IAED,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;KAC/C;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpC;AAED,IAAA,cAAc,CAAC,QAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;AAED,IAAA,MAAM,CAAC,MAAa,EAAA;QAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAE,MAAM,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC;KAC9D;8GA5DU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,iKClBtC,u2EA8DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD5Ca,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,u2EAAA,EAAA,CAAA;0EAYP,UAAU,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBACf,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;;;AECH,MAAO,4BAA6B,SAAQ,wBAAwB,CAAA;IAkBxE,WACU,CAAA,KAAiB,EACjB,MAAc,EACd,KAAqB,EACrB,WAA+B,EAC/B,WAA2B,EAC3B,MAAwB,EAAA;AAEhC,QAAA,KAAK,EAAE,CAAC;QAPA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAC/B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;QAC3B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;QAjBlC,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAC1B,IAA0B,CAAA,0BAAA,GAAG,KAAK,CAAC;QAoKhB,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;AAjJzC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAEnE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACrC,YAAA,EAAE,EAAE,CAACmB,EAAI,EAAE,CAAC;AACZ,YAAA,aAAa,EAAE;gBACb,EAAE;AACF,gBAAA,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC;AACjG,aAAA;AACD,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC7D,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5C,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClC,QAAQ,EAAE,CAAC,qBAAqB,CAAC;YACjC,WAAW,EAAE,CAAC,KAAK,CAAC;AACrB,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAe,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAe,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;AAExG,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAe,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YACxF,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAe,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC;AAE1G,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvB,oBAAA,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE;AAC7B,oBAAA,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa;oBACnD,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa;AACzE,oBAAA,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK;AACnC,oBAAA,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ;AAC1C,iBAAA,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;aAC3C;SACF;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ;iBACpC,GAAG,CAAC,MAAM,CAAE;AACZ,iBAAA,YAAY,CAAC,IAAI,CAChB,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAChG,CAAC;YACJ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACxG;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,QAAQ;aACV,GAAG,CAAC,eAAe,CAAE;aACrB,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;AAC5D,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACvB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACzB,aAAA,CAAC,CAAC;SACJ,CAAC,CACL,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,QAAQ;iBAC7C,GAAG,CAAC,eAAe,CAAE;AACrB,iBAAA,YAAY,CAAC,IAAI,CAChB,GAAG,CACD,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAC7G,CACF,CAAC;AACJ,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACnD,gBAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;aACzC,CAAC,CACH,CAAC;SACH;AAED,QAAA,IAAI,CAAC,6BAA6B,GAAG,aAAa,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3F,YAAA,IAAI,CAAC,OAAO;AACb,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,KAC5B,CAAC,eAAe;AACd,cAAE,EAAE;cACF,UAAU,CAAC,WAAW;AACtB,gBAAA,MAAM,CAAC,IAAI,CACT,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,MAAM,OAAO,eAAe,KAAK,QAAQ,GAAG,eAAe,GAAG,eAAe,CAAC,EAAE,CAAC,CACrG,EAAE,IAAI,CACZ,CACF,CAAC;KACH;IAED,MAAM,GAAA;AACJ,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,GAAG,OAAO,GAAG,IAAI,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;KACtE;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACvB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACtC,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvB,gBAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACrD,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACvB,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAe,CAAC;YAC1D,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAEzE,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;aACzE;AAED,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,iBAAiB,CAAC,qBAAqB,CAAC;AACtC,oBAAA,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE;AAC9B,oBAAA,SAAS,EAAE,UAAU;AACrB,oBAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AACvB,iBAAA,CAAC,CACH,CAAC;aACH;AAAM,iBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AAC1B,gBAAA,IAAI,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBACnE,IAAI,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC/C,gBAAA,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,gBAAA,iBAAiB,CAAC,UAAU,GAAG,cAAc,CAAC;gBAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;aAC7G;SACF;KACF;IAED,SAAS,GAAA;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACxD,QAAA,GAAG,CAAC,SAAU,CAAC,UAAU,GAAG,WAAW,CAAC;AACxC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,GAAG,CAAC,SAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACvB,QAAQ,EAAE,QAAQ,CAAC,EAAE;AACtB,aAAA,CAAC,CAAC;SACJ,CAAC,CACH,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,SAAU,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KAChF;8GA1KU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,sMC9BzC,2rKA4IA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD9Ga,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,2rKAAA,EAAA,CAAA;2NAiB5B,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;;;MEpCK,4BAA4B,CAAA;IAIvC,WACU,CAAA,KAAiB,EACjB,KAAqB,EAAA;QADrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAE7B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5C;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAChD,GAAG,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC7F,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;8GAlBU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,iECVzC,2dAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoB,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAnB,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDHa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,2dAAA,EAAA,CAAA;;;MEI1B,2BAA2B,CAAA;IAItC,WACU,CAAA,KAAiB,EACjB,KAAqB,EAAA;QADrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAE7B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5C;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChF,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACvE,SAAC,CAAC,CAAC;KACJ;8GAhBU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,gECXxC,yrBAkBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAnB,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDPa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,yrBAAA,EAAA,CAAA;;;MEsBzB,yBAAyB,CAAA;IAqBpC,WACU,CAAA,KAAiB,EACjB,MAAc,EACd,KAAqB,EACrB,OAAgB,EAChB,gBAAkC,EAClC,IAAoB,EAAA;QALpB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;AAxB9B,QAAA,IAAA,CAAA,WAAW,GAA4B,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAwB,EAAE,CAAC,EAAE,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAA2B,EAAE,CAAC,EAAE,CAAC,CAAC;AAM7C,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QACzB,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QACrB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;QACvB,IAAe,CAAA,eAAA,GAAG,EAAE,CAAC;AAenB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAE3D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;QACvF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvG,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;KACpE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;aACnD;SACF;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrC,gBAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBACxF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9F,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AACpD,aAAC,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YACjC,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM;gBACL,IAAI,CAAC,UAAU,EAAE,CAAC;aACnB;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAEO,eAAe,GAAA;AACrB,QAAA,OAAO,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAC7D,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAC3D,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,KAAI;YAC/B,OAAO,UAAU,CAAC,GAAG,CACnB,CAAC,IAAe,MACb;AACC,gBAAA,GAAG,IAAI;AACP,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBAC1B,YAAY,EAAE,IAAI,CAAC,QAAQ;AACzB,sBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI;AAClE,wBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uCAAuC,CAAC;sBAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kCAAkC,CAAC;AAC1D,aAAA,CAAsB,CAC1B,CAAC;SACH,CAAC,CACH,CAAC;KACH;IAEO,eAAe,GAAA;QACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;AACjD,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA;AACE,gBAAA,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACvD,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,IAAI,EAAE,YAAY;AACnB,aAAA;AACD,YAAA;AACE,gBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC7D,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,YAAY,EAAE,OAAO;AACrB,gBAAA,UAAU,EAAE,SAAS;AACrB,gBAAA,YAAY,EAAE,OAAO;AACtB,aAAA;SACqB,CAAC;AAEzB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE;AACrC,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,YAAY,EAAE,OAAO;AACrB,gBAAA,UAAU,EAAE,SAAS;AACrB,gBAAA,YAAY,EAAE,OAAO;AACtB,aAAA,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA,CAAC,CACH,CAAC;KACH;AAEO,IAAA,mBAAmB,CAAC,MAAc,EAAA;AACxC,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;YAClD,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEvG,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACvD,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,IAAI,EAAE,YAAY;AACnB,qBAAA;AACD,oBAAA;wBACE,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAChD,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,YAAY,EAAE,OAAO;AACrB,wBAAA,UAAU,EAAE,QAAQ;AACpB,wBAAA,YAAY,EAAE,OAAO;AACtB,qBAAA;AACD,oBAAA;AACE,wBAAA,MAAM,EAAE,iBAAiB,CAAC,wBAAwB,CAAC;4BACjD,OAAO,EAAE,IAAI,CAAC,eAAe;AAC7B,4BAAA,MAAM,EAAE,MAAM;4BACd,QAAQ,EAAE,IAAI,CAAC,QAAQ;4BACvB,WAAW,EAAE,IAAI,CAAC,gBAAgB;yBACnC,CAAC;AACF,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,YAAY,EAAE,OAAO;AACrB,wBAAA,UAAU,EAAE,SAAS;AACrB,wBAAA,YAAY,EAAE,OAAO;AACtB,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC,CACH,CAAC;SACH,CAAC,CACH,CAAC;KACH;AAED,IAAA,UAAU,CAAC,IAAuB,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,gCAAgC,EAAE,CAAC,CAAC,CAAC;AAC3G,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,0BAA0B,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KAC/E;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;KACrD;IAED,SAAS,GAAA;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACnC,IAAI,aAAa,CAAC;AAChB,YAAA,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,CAAC,iBAAiB,CAAC;AAC/B,YAAA,aAAa,EAAE,UAAU;AAC1B,SAAA,CAAC,CACH,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;KAC3F;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KAChF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SACpG;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;8GA5MU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,QAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAmBI,WAAW,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjDrD,iyGAqFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDvDa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,iyGAAA,EAAA,CAAA;gNAsBqB,iBAAiB,EAAA,CAAA;sBAAvE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;;;MEpC1C,qBAAqB,CAAA;AAShC,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAP/B,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QACrB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;AACvB,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAOvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAChF,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,KAAI;YAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;gBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;AACrF,aAAA,CAAC,CAAC,CAAC;SACL,CAAC,CACH,CAAC;KACH;IAED,QAAQ,GAAA;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,SAAS;AACrB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;AAED,IAAA,mBAAmB,CAAC,KAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;KACtE;AAED,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,6BAA6B,EAAE,CAAC,CAAC,CAAC;KACzG;8GAjEU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,yDCblC,ujEA4DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD/Ca,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,ujEAAA,EAAA,CAAA;;;AENxB,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAShD,MAAM,mBAAmB,GAAsB;AACpD,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,eAAe,EAAE,IAAI;CACtB,CAAC;AAEK,MAAM,cAAc,GAAG,aAAa,CACzC,mBAAmB,EACnB,EAAE,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACzD,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAChE,IAAA,GAAG,KAAK;IACR,eAAe,EAAE,MAAM,CAAC,IAAI;AAC5B,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAChE,IAAA,GAAG,KAAK;IACR,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM;AACtE,IAAA,GAAG,KAAK;IACR,aAAa;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC,KAAK,MAAM;AAClD,IAAA,GAAG,KAAK;AACR,IAAA,eAAe,EAAE,IAAI;AACtB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACxD,IAAA,GAAG,KAAK;IACR,eAAe,EAAE,MAAM,CAAC,OAAO;CAChC,CAAC,CAAC,CACJ;;AC3CD,MAAM,aAAa,GAAG,qBAAqB,CAAoB,iBAAiB,CAAC,CAAC;AAElF,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AACrE,MAAM,SAAS,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AAC5E,MAAM,iBAAiB,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;AAC/F,MAAM,eAAe,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,eAAe,CAAC,CAAC;AACzF,MAAM,uBAAuB,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,eAAe,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;AACjH,MAAM,4BAA4B,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,aAAa,CAAC,CAAC;AAE7F,MAAM,qBAAqB,GAAG;IACnC,aAAa;IACb,MAAM;IACN,SAAS;IACT,eAAe;IACf,uBAAuB;IACvB,4BAA4B;IAC5B,iBAAiB;CAClB;;MCGY,qBAAqB,CAAA;AAehC,IAAA,WAAA,CACU,KAA6B,EAC7B,gBAAgC,EAChC,MAAc,EACd,KAAqB,EAAA;QAHrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAwB;QAC7B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAgB;QAChC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAf/B,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QACrB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;QACvB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QAEnB,IAAoB,CAAA,oBAAA,GAAW,EAAE,CAAC;QAClC,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAsET,IAAa,CAAA,aAAA,GAAG,aAAa,CAAC;AA1D/C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG;AAClB,YAAA,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE;AACxF,YAAA,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAAE;AAC1F,YAAA,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE;SACzF,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,mBAAmB,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACtE,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,gBAAgB;AAC5B,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;IAED,aAAa,GAAA;QACX,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC;KAC5D;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAClC,EAAE,EAAE,CAAC,CAAC;SACR;KACF;AAED,IAAA,YAAY,CAAC,QAAgB,EAAA;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,WAAW,CAAC,MAAW,EAAA;AACrB,QAAA,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC;KACpC;AAED,IAAA,aAAa,CAAC,OAAgB,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,6BAA6B,EAAE,CAAC,CAAC,CAAC;KACzG;8GA7EU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,yJCvBlC,w6GA6FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDtEa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,w6GAAA,EAAA,CAAA;yJAIT,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO,CAAA;;;AEGd,MAAO,yBAA0B,SAAQ,wBAAwB,CAAA;IAcrE,WACU,CAAA,KAA6B,EAC7B,MAAc,EACd,KAAqB,EACrB,WAA+B,EAC/B,MAAwB,EAAA;AAEhC,QAAA,KAAK,EAAE,CAAC;QANA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAwB;QAC7B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAC/B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;QAflC,IAAW,CAAA,WAAA,GAAc,EAAE,CAAC;QAC5B,IAAY,CAAA,YAAA,GAAuC,EAAE,CAAC;QAMtD,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAUlB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjC,YAAA,EAAE,EAAE,CAACY,EAAM,EAAE,CAAC;AACd,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,YAAA,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,UAAU,EAAE,CAAC,EAAE,CAAC;AACjB,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AACtC,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;SAC5B,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;YAC9D,KAAK,EAAE,qBAAqB,GAAG,KAAK;AACpC,YAAA,KAAK,EAAE,KAAK;AACb,SAAA,CAAC,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,OAAuB,KAAI;YACnD,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;oBACnB,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,UAAU,EAAE,OAAO,CAAC,UAAU;AAC/B,iBAAA,CAAC,CAAC;gBAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;aACtC;SACF,CAAC,CACH,CAAC;KACH;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;KACrE;IAED,OAAO,GAAA;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACzE,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACzE;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;AAED,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9E,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC9G,OAAO;aACR;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3E,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CACvC,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CACvF,CAAC;AACF,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;aAC/G;SACF;KACF;IAED,SAAS,GAAA;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACxD,QAAA,GAAG,CAAC,SAAU,CAAC,UAAU,GAAG,SAAS,CAAC;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,GAAG,CAAC,SAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC7C,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,GAAa,KAAK,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,EAAE;AACxF,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,oBAAA,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC;AACtE,iBAAA,CAAC,CAAC;aACJ;SACF,CAAC,CACH,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,SAAU,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KAChF;8GAvHU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,uHC3BtC,y0HA+GA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDpFa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,y0HAAA,EAAA,CAAA;8LAIzB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEfK,yBAAyB,CAAA;IAGpC,WACU,CAAA,KAA+B,EAC/B,KAAqB,EAAA;QADrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAA0B;QAC/B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAE7B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;KAClF;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAClF,SAAC,CAAC,CAAC;KACJ;8GAdU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,8DCbtC,yMAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDSa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,yMAAA,EAAA,CAAA;;;MEJvB,wBAAwB,CAAA;8GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,6DCNrC,gLAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,yBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAxB,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,gLAAA,EAAA,CAAA;;;AEA5B,MAAM,kBAAkB,GAAG;AAChC,IAAA,gBAAgB,EAAE,YAAY,CAAC,uCAAuC,CAAC;AACvE,IAAA,uBAAuB,EAAE,YAAY,CACnC,mDAAmD,EACnD,KAAK,EAA4B,CAClC;AACD,IAAA,uBAAuB,EAAE,YAAY,CAAC,mDAAmD,EAAE,KAAK,EAAkB,CAAC;AAEnH,IAAA,eAAe,EAAE,YAAY,CAAC,sCAAsC,EAAE,KAAK,EAAuC,CAAC;AACnH,IAAA,sBAAsB,EAAE,YAAY,CAAC,kDAAkD,EAAE,KAAK,EAAqB,CAAC;AACpH,IAAA,sBAAsB,EAAE,YAAY,CAAC,kDAAkD,EAAE,KAAK,EAAkB,CAAC;AAEjH,IAAA,iBAAiB,EAAE,YAAY,CAAC,wCAAwC,EAAE,KAAK,EAAoB,CAAC;AACpG,IAAA,wBAAwB,EAAE,YAAY,CACpC,oDAAoD,EACpD,KAAK,EAAyB,CAC/B;AACD,IAAA,wBAAwB,EAAE,YAAY,CAAC,oDAAoD,EAAE,KAAK,EAAkB,CAAC;AAErH,IAAA,iBAAiB,EAAE,YAAY,CAAC,wCAAwC,EAAE,KAAK,EAAwB,CAAC;AACxG,IAAA,wBAAwB,EAAE,YAAY,CACpC,oDAAoD,EACpD,KAAK,EAAwB,CAC9B;AACD,IAAA,wBAAwB,EAAE,YAAY,CAAC,oDAAoD,EAAE,KAAK,EAAkB,CAAC;AAErH,IAAA,iBAAiB,EAAE,YAAY,CAC7B,wCAAwC,EACxC,KAAK,EAAqD,CAC3D;AACD,IAAA,wBAAwB,EAAE,YAAY,CACpC,oDAAoD,EACpD,KAAK,EAAuC,CAC7C;AACD,IAAA,wBAAwB,EAAE,YAAY,CAAC,oDAAoD,EAAE,KAAK,EAAkB,CAAC;CACtH;;AClCM,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAQvD,MAAM,uBAAuB,GAAqB;AACvD,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,OAAO,EAAE,KAAK;CACf,CAAC;AAEK,MAAM,kBAAkB,GAAG,aAAa,CAC7C,uBAAuB,EACvB,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC1D,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,UAAU,EAAE,SAAS;AACtB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACjE,IAAA,GAAG,KAAK;AACR,IAAA,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACjE,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACzD,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAChE,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAChE,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EAEH,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC3D,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAClE,IAAA,GAAG,KAAK;IACR,UAAU,EAAE,MAAM,CAAC,IAAI;AACvB,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAClE,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;CACf,CAAC,CAAC,CACJ;;ACxDD,MAAMJ,SAAO,GAAG,qBAAqB,CAAmC6B,qBAAqC,CAAC,CAAC;AAE/G,MAAM,YAAY,GAAG,cAAc,CAAC7B,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,YAAY,CAAC,CAAC;AAC7E,MAAME,SAAO,GAAG,cAAc,CAACF,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,CAAC;AACnE,MAAM,UAAU,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,UAAU,CAAC,CAAC;AACzE,MAAM,cAAc,GAAG,cAAc,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC;AAE/D,MAAM,oBAAoB,GAAG;aAClCA,SAAO;IACP,YAAY;aACZE,SAAO;IACP,UAAU;IACV,cAAc;CACf;;MCDY,6BAA6B,CAAA;IAYxC,IAAa,UAAU,CAAC,GAAgB,EAAA;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;KACxB;IAED,WACU,CAAA,KAAiB,EACjB,MAAc,EACd,KAAqB,EACrB,WAA+B,EAC/B,QAAkB,EAAA;QAJlB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAC/B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAnBpB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAe,CAAC;AACjD,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAIzB,IAAU,CAAA,UAAA,GAAG,WAAW,CAAC;QACzB,IAAsB,CAAA,sBAAA,GAAG,EAAE,CAAC;QAC5B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAclB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACpC,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACzE,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AACxE,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;AAChC,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACnF,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;AACtB,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aAC3D;iBAAM;AACL,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aAC1D;SACF,CAAC,CACH,CAAC;KACH;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK;AACxB,iBAAA,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC;iBACzC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAmB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,GAAgB,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9F,YAAA,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAkC;AAC5D,gBAAA,IAAI,CAAC,SAAS;aACf,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;gBAC1C,IAAI,KAAK,EAAE;AACT,oBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;iBAChE;AACD,gBAAA,OAAO,KAAK,CAAC;aACd,CAAC,CACH,CAAC;SACH;KACF;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AACtB,gBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;AAC3B,gBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;AAC3B,gBAAA,KAAK,EACH,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM;AAC9B,sBAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC;AAC/D,sBAAE,IAAI,CAAC,WAAW,CAAC,KAAK;AAC7B,aAAA,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;SACzC;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;KACxF;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AACxC,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC7B,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACvC;AAAM,iBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACnC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACzC;AAAM,iBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;AACjC,gBAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;aACpE;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;SACjG;KACF;AAED,IAAA,YAAY,CAAC,IAAY,EAAA;AACvB,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SAC1G;AAAM,aAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;AAC3C,gBAAA,UAAU,CAAC,QAAQ;AACnB,gBAAA,UAAU,CAAC,OAAO,CAAC,yBAAyB,CAAC;AAC9C,aAAA,CAAC,CAAC;SACJ;aAAM;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;SACrE;KACF;IAED,OAAO,GAAA;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACzE,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACzE;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;8GA3HU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,6HCf1C,02IAmHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAE,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDpGa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;+BACE,4BAA4B,EAAA,QAAA,EAAA,02IAAA,EAAA,CAAA;sLAezB,UAAU,EAAA,CAAA;sBAAtB,KAAK;;;MErBK,4BAA4B,CAAA;8GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,iECNzC,8KAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuB,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA1B,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,8KAAA,EAAA,CAAA;;;MES1B,+BAA+B,CAAA;IAG1C,WACU,CAAA,KAAiB,EACjB,KAAqB,EAAA;QADrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAE7B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;KACvE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CACpF,CAAC;KACH;8GAdU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,oECZ5C,kQAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2B,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAxB,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDMa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,SAAS;+BACE,8BAA8B,EAAA,QAAA,EAAA,kQAAA,EAAA,CAAA;;;MEI7B,yBAAyB,CAAA;AAQpC,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAP/B,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QACrB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;AAQrB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAC9E,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,aAAa;AACzB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;KACjE;AAED,IAAA,aAAa,CAAC,GAAgB,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,iCAAiC,EAAE,CAAC,CAAC,CAAC;KAC7G;AAED,IAAA,kBAAkB,CAAC,IAAY,EAAA;AAC7B,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,WAAW,IAAI,WAAW,CAAC;KAClF;8GA1CU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,6DCbtC,g4DAsDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDzCa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,g4DAAA,EAAA,CAAA;;;AEP5B,MAAM,aAAa,GAAG;AAC3B,IAAA,aAAa,EAAE,YAAY,CAAC,qCAAqC,CAAC;AAClE,IAAA,OAAO,EAAE,YAAY,CAAC,+BAA+B,EAAE,KAAK,EAAkB,CAAC;AAE/E,IAAA,SAAS,EAAE,YAAY,CAAC,2BAA2B,EAAE,KAAK,EAAmC,CAAC;AAC9F,IAAA,gBAAgB,EAAE,YAAY,CAAC,uCAAuC,EAAE,KAAK,EAAqB,CAAC;AACnG,IAAA,WAAW,EAAE,YAAY,CAAC,6BAA6B,EAAE,KAAK,EAAmC,CAAC;AAClG,IAAA,kBAAkB,EAAE,YAAY,CAAC,yCAAyC,EAAE,KAAK,EAAqB,CAAC;AACvG,IAAA,oBAAoB,EAAE,YAAY,CAChC,8CAA8C,EAC9C,KAAK,EAAgC,CACtC;AACD,IAAA,WAAW,EAAE,YAAY,CAAC,6BAA6B,EAAE,KAAK,EAAiC,CAAC;AAChG,IAAA,kBAAkB,EAAE,YAAY,CAAC,qCAAqC,CAAC;AAEvE,IAAA,WAAW,EAAE,YAAY,CAAC,6BAA6B,EAAE,KAAK,EAAoB,CAAC;AACnF,IAAA,aAAa,EAAE,YAAY,CAAC,+BAA+B,CAAC;CAC7D;;ACCM,MAAM,WAAW,GAAG;AACzB,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,EAAE;AACjD,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,WAAW,EAAE;CACvD,CAAC;AAoBI,MAAO,wBAAyB,SAAQ,wBAAwB,CAAA;AAapE,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EACrB,IAAoB,EAAA;AAE5B,QAAA,KAAK,EAAE,CAAC;QALA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;QAT9B,IAAW,CAAA,WAAA,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QA6MhC,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;QAC1B,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;QACtB,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;AAnMzC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAE3C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK;AAC1B,aAAA,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;aAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAE1E,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;aACvC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,SAAS,CAAC,kBAAkB,CAAC;AACvD,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACb,YAAA,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5G,YAAA,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAY;AACnC,YAAA,IAAI,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE;gBACxB,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC;AAC5G,gBAAA,WAAW,EAAE,IAAI;aAClB,CAAC;AACF,YAAA,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAChE,YAAA,aAAa,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC;AACjC,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACvF,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAC3G,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1C,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;aAC7C;AACD,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;KACnG;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,gBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;AAC5B,gBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;AAC7B,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,IAAK,CAAC,OAAO,EAAE,CAAC;AACrB,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAClB,KAAK,EACL,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CACjG,CAAC;AACF,gBAAA,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;aACrB;YACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,IAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACzC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAClB,KAAK,EACL,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAC/F,CAAC;aACH;iBAAM;AACL,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aAChC;SACF,CAAC,CACH,CAAC;KACH;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC9B;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC9B;AAED,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAiC,CAAC;KACvE;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;KAChE;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAe,CAAC,CAAC;KACjE;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;KACxF;IAED,YAAY,GAAA;QACV,OAAO;AACL,YAAA,IAAI,EAAE,IAAI,CAAC,IAAK,CAAC,KAAK;AACtB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAK,CAAC,KAAK;AACtB,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK;YACpB,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS;YACjD,gBAAgB,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,gBAAgB,IAAI,SAAS;YACzE,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,IAAI,SAAS;YACjE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;SAC1D,CAAC;KACH;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AAC/B,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;SAC3D;KACF;IAED,SAAS,GAAA;QACP,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,SAAS,CAAC;AACtB,YAAA,KAAK,EAAE,EAAE,EAAE,EAAEgB,EAAI,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE;AAC7C,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE;AACtB,SAAA,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,aAAa,CAAC,WAAW,CAAC;AACxB,YAAA,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,YAAa,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE;AAC5D,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE;AACtB,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,uBAAuB,CAAC,IAAsB,EAAA;QAC5C,QAAQ,IAAI;YACV,KAAK,SAAS,CAAC,OAAO,CAAC;YACvB,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,gBAAA,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,gBAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,gBAAA,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,gBAAA,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,kBAAkB,EAAE,IAAI,WAAW,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChH,gBAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;AAC1C,gBAAA,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,YAAY,EAAE,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC1E,MAAM;AACR,YAAA;AACE,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzD,MAAM;SACT;KACF;IAED,qBAAqB,GAAA;AACnB,QAAA,QAAQ,IAAI,CAAC,YAAY,EAAE,IAAI;YAC7B,KAAK,SAAS,CAAC,OAAO,CAAC;YACvB,KAAK,SAAS,CAAC,IAAI;AACjB,gBAAA,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;AAC7B,oBAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY;AAC7C,oBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI;AAC9B,iBAAA,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;AAC7B,oBAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY;AAC7C,oBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI;AAC7B,oBAAA,gBAAgB,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB;AACtD,iBAAA,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,SAAS,CAAC,OAAO;AACpB,gBAAA,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1E,MAAM;AACR,YAAA;gBACE,MAAM;SACT;KACF;IAEO,OAAO,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;KAClE;8GAnNU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,8HC5CrC,+kNAwKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD5Ha,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,+kNAAA,EAAA,CAAA;yJAIxB,YAAY,EAAA,CAAA;sBAApB,KAAK;;;MEnCK,wBAAwB,CAAA;IAGnC,WACU,CAAA,KAAiB,EACjB,KAAqB,EAAA;QADrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAE7B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5C;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CACzB,CAAC,MAAM,MAAM,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC7F,CAAC;KACH;8GAdU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,6DCVrC,2PAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAzB,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDIa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,2PAAA,EAAA,CAAA;;;MEDtB,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,4DCNpC,+JAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0B,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA7B,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,+JAAA,EAAA,CAAA;;;AEC3B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAO7C,MAAM,iBAAiB,GAAe;AAC3C,IAAA,OAAO,EAAE,KAAK;CACf,CAAC;AAEK,MAAM,YAAY,GAAG,aAAa,CACvC,iBAAiB,EACjB,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAChD,IAAA,GAAG,KAAK;IACR,aAAa,EAAE,MAAM,CAAC,KAAK;AAC5B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAClD,IAAA,GAAG,KAAK;AACR,IAAA,aAAa,EAAE,SAAS;CACzB,CAAC,CAAC,CACJ;;ACtBD,MAAMJ,SAAO,GAAG,qBAAqB,CAAuBkC,gBAA0B,CAAC,CAAC;AAExF,MAAMhC,SAAO,GAAG,cAAc,CAACF,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,CAAC;AACnE,MAAM,aAAa,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,aAAa,CAAC,CAAC;AAC/E,MAAM,eAAe,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,EAAE,CAAC,CAAC;AAErE,MAAM,eAAe,GAAG;aAC7BA,SAAO;aACPE,SAAO;IACP,aAAa;IACb,eAAe;CAChB;;MCAY,oBAAoB,CAAA;AAO/B,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAP/B,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QACrB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;QAkDJ,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;AA1CzC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;AAE1E,QAAA,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;SAC1C,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,KACpB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACjB,YAAA,GAAG,CAAC;AACJ,YAAA,cAAc,EAAE,OAAO,CAAC,MAAM,CAC5B,CAAC,CAAS,EAAE,CAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EACnF,CAAC,CACF;SACF,CAAC,CAAC,CACJ,CACF,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC;AACvG,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KAC5E;8GApDU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,wDCdjC,k+DAoDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDtCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,k+DAAA,EAAA,CAAA;;;AEPvB,MAAM,eAAe,GAAG,YAAY,CAAC;AAarC,MAAM,iBAAiB,GAAe;AAC3C,IAAA,eAAe,EAAE,aAAa;AAC9B,IAAA,KAAK,EAAE;AACL,QAAA,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;AACvE,QAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;AACrE,QAAA,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;AACvE,QAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE;AACrF,QAAA,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;AACnE,QAAA,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;AACzE,QAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE;AACrF,QAAA,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAClE,QAAA,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE;AACpF,QAAA,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE;AAChF,QAAA,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC9E,QAAA,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC/E,KAAA;AACD,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,mBAAmB,EAAE,SAAS;CAC/B,CAAC;AAEK,MAAM,YAAY,GAAG,aAAa,CACvC,iBAAiB,EACjB,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACjD,IAAA,GAAG,KAAK;IACR,eAAe,EAAE,MAAM,CAAC,IAAI;AAC7B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,KAAK,MAAM;AACtC,IAAA,GAAG,KAAK;AACR,IAAA,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ;AAC1B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,KAAK,MAAM;AACxC,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,aAAa,EAAE,IAAI;AACpB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC/C,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC9C,IAAA,GAAG,KAAK;AACR,IAAA,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;AAChC,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAI;AAC7C,IAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACrB,QAAA,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;KACvE;IACD,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AACnD,CAAC,CAAC,EACF,EAAE,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACvD,IAAA,GAAG,KAAK;IACR,aAAa,EAAE,MAAM,CAAC,aAAa;AACpC,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC5D,IAAA,GAAG,KAAK;IACR,mBAAmB,EAAE,MAAM,CAAC,WAAW;CACxC,CAAC,CAAC,CACJ;;AC3ED,MAAMF,SAAO,GAAG,qBAAqB,CAAuBmC,eAAyB,CAAC,CAAC;AAEvF,MAAM,eAAe,GAAG,cAAc,CAACnC,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,eAAe,CAAC,CAAC;AACnF,MAAM,QAAQ,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;AACpE,MAAM,KAAK,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,KAAK,CAAC,CAAC;AAC/D,MAAM,OAAO,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;AAClE,MAAM,UAAU,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;AACxE,MAAM,SAAS,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AACtE,MAAM,aAAa,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,aAAa,CAAC,CAAC;AAC/E,MAAM,QAAQ,GAAG,cAAc,CAC7BA,SAAO,EACP,CAAC,KAAK,KACJ,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAY,EAAE,CAAC,KAAI;AACtC,IAAA,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC;AAChC,IAAA,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,GAAG,MAAM,GAAG,aAAa,EAAa,CAAC;AAC1G,QAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACd;AACD,IAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,IAAA,OAAO,CAAC,CAAC;AACX,CAAC,EAAE,EAAE,CAAc,CACtB,CAAC;AACF,MAAM,mBAAmB,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,mBAAmB,CAAC,CAAC;AAEpF,MAAM,cAAc,GAAG;aAC5BA,SAAO;IACP,eAAe;IACf,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,OAAO;IACP,UAAU;IACV,SAAS;IACT,aAAa;IACb,mBAAmB;CACpB;;MChCY,uBAAuB,CAAA;8GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,iGCRpC,kdAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAmB,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA,CAAA,EAAA;;2FDPa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,iBAAiB,EAAA,eAAA,EAEV,uBAAuB,CAAC,OAAO,EAAA,QAAA,EAAA,kdAAA,EAAA,CAAA;8BAGvC,YAAY,EAAA,CAAA;sBAApB,KAAK;;;MEMK,2BAA2B,CAAA;aAC/B,IAAE,CAAA,EAAA,GAAG,6BAAH,CAAiC,EAAA;AAM1C,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAR/B,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;AAUvB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;QAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAC3C,gBAAgB,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAC5E,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,EAAE,CAAC,CAAC,CACvF,CAAC;KACH;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC,KAAI;YAC7G,IAAI,KAAK,EAAE;gBACT,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/F,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3G,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE;oBACvF,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,iBAAA,CAAC,CAAC;AACH,gBAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE;oBAC/E,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,iBAAA,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC3D,4BAAA,KAAK,EAAE,QAAQ;AACf,4BAAA,IAAI,EAAE,MAAM;AACZ,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,SAAS;AACrB,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACD,wBAAA;AACE,4BAAA,MAAM,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC1F,4BAAA,KAAK,EAAE,QAAQ;AACf,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,SAAS;AACrB,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC;AACnC,yBAAA;AACD,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;AAChE,4BAAA,KAAK,EAAE,iBAAiB;AACxB,4BAAA,IAAI,EAAE,eAAe;AACrB,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,SAAS;AACrB,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACD,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,EAAE,CAAC;AACrE,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,SAAS;AACrB,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CACH,CAAC;aACH;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,UAAU,GAAA;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,SAAS;AACrB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;8GAlGU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,gECfxC,qsDA6CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,uBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA7B,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD9Ba,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,qsDAAA,EAAA,CAAA;;;MEEzB,8BAA8B,CAAA;aAClC,IAAE,CAAA,EAAA,GAAG,gCAAH,CAAoC,EAAA;AAY7C,IAAA,WAAA,CAAoB,KAAiB,EAAU,MAAc,EAAU,KAAqB,EAAA;QAAxE,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAV5F,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAGzB,IAAG,CAAA,GAAA,GAAW,CAAC,CAAC;AAQd,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;KAC5E;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;AACxC,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SAC9B,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,KAAI;AAC5G,YAAA,IAAI,CAAC,OAAO,GAAG,aAAa,IAAI,YAAY,CAAC;SAC9C,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,UAAU,GAAA;QACR,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACpE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1G,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC/F,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC1F,YAAA,MAAM,OAAO,GAAwB;AACnC,gBAAA;oBACE,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAClD,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,IAAI,EAAE,YAAY;AACnB,iBAAA;AACD,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,cAAc;AACrB,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,SAAS;AACrB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;aACF,CAAC;AACF,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO,CAAC,IAAI,CAAC;AACX,oBAAA,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAChF,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,SAAS;AACrB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA,CAAC,CAAC;aACJ;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;gBACvB,OAAO;AACR,aAAA,CAAC,CACH,CAAC;SACH;KACF;8GA5EU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,kECd3C,kkEAoDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6B,uBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA7B,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDtCa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;+BACE,4BAA4B,EAAA,QAAA,EAAA,kkEAAA,EAAA,CAAA;;;AEqBlC,MAAO,2BAA4B,SAAQ,wBAAwB,CAAA;aAChE,IAAE,CAAA,EAAA,GAAG,6BAAH,CAAiC,EAAA;IAa1C,WACU,CAAA,KAAiB,EACjB,MAAc,EACd,KAAqB,EACrB,IAAoB,EACpB,GAAsB,EACkB,MAAqB,EAAA;AAErE,QAAA,KAAK,EAAE,CAAC;QAPA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;QACpB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACkB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AAhBvE,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QACzB,IAAsB,CAAA,sBAAA,GAAG,EAAE,CAAC;QAG5B,IAAY,CAAA,YAAA,GAAa,EAAE,CAAC;AAG5B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAA2B,SAAS,CAAC,CAAC;AAC5E,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QAWxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,4BAA4B,CAAC,CAAC;AAC3G,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAC3D,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,EACnE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAI;YAC5B,MAAM,MAAM,GAAgE,EAAE,CAAC;AAC/E,YAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;gBAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG;AACjB,oBAAA,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE;AAClC,oBAAA,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,IAAI,IAAI,QAAQ;iBACvE,CAAC;AACJ,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;SAC5D,CAAC,CACH,CAAC;KACH;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,aAAa,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC;AAC3F,aAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjG,aAAA,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAI;YAC9C,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;AACzC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE;oBAC/E,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,iBAAA,CAAC,CAAC;gBACH,IAAI,SAAS,EAAE;oBACb,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,wBAAA,OAAO,EAAE;AACP,4BAAA;AACE,gCAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC3D,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,IAAI,EAAE,MAAM;AACZ,gCAAA,YAAY,EAAE,OAAO;AACrB,gCAAA,UAAU,EAAE,SAAS;AACrB,gCAAA,YAAY,EAAE,OAAO;AACtB,6BAAA;AACD,4BAAA;AACE,gCAAA,MAAM,EAAE,mBAAmB,CAAC,sBAAsB,CAAC;oCACjD,IAAI,EAAE,OAAO,CAAC,EAAE;oCAChB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;oCACzF,QAAQ,EAAE,IAAI,CAAC,MAAM;AAClB,yCAAA,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAClE,yCAAA,QAAQ,EAAE;iCACd,CAAC;AACF,gCAAA,KAAK,EAAE,QAAQ;AACf,gCAAA,IAAI,EAAE,QAAQ;AACd,gCAAA,YAAY,EAAE,OAAO;AACrB,gCAAA,UAAU,EAAE,SAAS;AACrB,gCAAA,YAAY,EAAE,OAAO;gCACrB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;AACzE,6BAAA;AACF,yBAAA;AACF,qBAAA,CAAC,CACH,CAAC;iBACH;qBAAM;oBACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,wBAAA,OAAO,EAAE,EAAE;AACZ,qBAAA,CAAC,CACH,CAAC;iBACH;aACF;SACF,CAAC,CACL,CAAC;KACH;IAED,UAAU,GAAA;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,gBAAgB;AAC5B,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,cAAc,CAAC,QAAuB,EAAA;QACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,eAAe,CAAC,qBAAqB,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CACnG,CAAC;KACH;AAED,IAAA,kBAAkB,CAAC,QAAuB,EAAA;QACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,eAAe,CAAC,kBAAkB,CAAC;YACjC,SAAS,EAAE,QAAQ,CAAC,EAAE;YACtB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;AACtB,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,KAAK,CAAC,OAAgB,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KACpH;AAED,IAAA,aAAa,CAAC,SAAiB,EAAA;QAC7B,MAAM,QAAQ,GAAG,6CAA6C,CAAC;AAC/D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACxE,QAAA,OAAO,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;KACvD;AAED,IAAA,WAAW,CAAC,MAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;KACzF;AAED,IAAA,YAAY,CAAC,MAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;IAED,wBAAwB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9F,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrC;aAAM;AACL,YAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE;AACvC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtC;SACF;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;AAED,IAAA,UAAU,CAAC,OAAgB,EAAA;QACzB,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;KACxE;AAtKU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,0JAoBhB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AApB3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,uFChCxC,osJAmHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,uBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDnFa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,osJAAA,EAAA,CAAA;;0BAuBjC,QAAQ;;0BAAI,MAAM;2BAAC,gBAAgB,CAAA;;;MEvC3B,+BAA+B,CAAA;aACnC,IAAE,CAAA,EAAA,GAAG,iCAAH,CAAqC,EAAA;AAK9C,IAAA,WAAA,CAAoB,KAAiB,EAAU,MAAc,EAAU,KAAqB,EAAA;QAAxE,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAH5F,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QACzB,IAAsB,CAAA,sBAAA,GAAG,EAAE,CAAC;AAG1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;AAChC,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACpF,CAAC,CACH,CAAC;KACH;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;YACjC,IAAI,GAAG,EAAE;AACP,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;oBACjF,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,iBAAA,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7F,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACnG,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC3D,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,IAAI,EAAE,MAAM;AACZ,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,aAAa;AACzB,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACD,wBAAA;AACE,4BAAA,MAAM,EAAE,kBAAkB,CAAC,iBAAiB,CAAC;gCAC3C,IAAI,EAAE,GAAG,CAAC,IAAI;AACd,gCAAA,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE;AAC1B,gCAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;6BAC7B,CAAC;AACF,4BAAA,KAAK,EAAE,QAAQ;AACf,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,aAAa;AACzB,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CACH,CAAC;aACH;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,UAAU,GAAA;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,aAAa;AACzB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;8GA9EU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,oECb5C,8vCAmCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDtBa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,SAAS;+BACE,8BAA8B,EAAA,QAAA,EAAA,8vCAAA,EAAA,CAAA;;;MEK7B,0BAA0B,CAAA;aAC9B,IAAE,CAAA,EAAA,GAAG,4BAAH,CAAgC,EAAA;AAMzC,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAN/B,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAmFN,IAAU,CAAA,UAAA,GAAG,UAAU,CAAC;QACxB,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;AA5EvC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAC/F,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAI;AACvB,YAAA,OAAO,OAAO;iBACX,GAAG,CAAC,CAAC,KAAK,KACT,KAAK,CAAC,UAAU;AACb,iBAAA,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,EAAE,EAAE,CAAC;iBACvD,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CACvF;AACA,iBAAA,IAAI,EAAE,CAAC;SACX,CAAC,CACH,CAAC;KACH;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAI;YAC1G,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC/F,YAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;AACvB,iBAAA,aAAa,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3E,iBAAA,QAAQ,EAAE,CAAC;YACd,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;4BACE,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAChD,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,IAAI,EAAE,MAAM;AACZ,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,QAAQ;AACpB,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACD,wBAAA;AACE,4BAAA,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC3E,4BAAA,KAAK,EAAE,QAAQ;AACf,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,SAAS;AACrB,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,QAAQ,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;AAChC,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CACH,CAAC;aACH;SACF,CAAC,CACH,CAAC;KACH;IAED,UAAU,GAAA;QACR,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;8GArFU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,+DCfvC,miIA6FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgC,uBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD9Ea,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,miIAAA,EAAA,CAAA;;;AETrC,IAAY,wBASX,CAAA;AATD,CAAA,UAAY,wBAAwB,EAAA;AAClC,IAAA,wBAAA,CAAA,MAAA,CAAA,GAAA,oCAA2C,CAAA;AAC3C,IAAA,wBAAA,CAAA,QAAA,CAAA,GAAA,sCAA+C,CAAA;AAC/C,IAAA,wBAAA,CAAA,MAAA,CAAA,GAAA,oCAA2C,CAAA;AAC3C,IAAA,wBAAA,CAAA,QAAA,CAAA,GAAA,sCAA+C,CAAA;AAC/C,IAAA,wBAAA,CAAA,aAAA,CAAA,GAAA,4CAA0D,CAAA;AAC1D,IAAA,wBAAA,CAAA,yBAAA,CAAA,GAAA,wCAAkE,CAAA;AAClE,IAAA,wBAAA,CAAA,mBAAA,CAAA,GAAA,wCAA4D,CAAA;AAC5D,IAAA,wBAAA,CAAA,SAAA,CAAA,GAAA,8CAAwD,CAAA;AAC1D,CAAC,EATW,wBAAwB,KAAxB,wBAAwB,GASnC,EAAA,CAAA,CAAA,CAAA;AAEM,MAAM,yBAAyB,GAAG;AACvC,IAAA,IAAI,EAAE,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC;IACjD,MAAM,EAAE,YAAY,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAA6B,CAAC;IACzF,OAAO,EAAE,YAAY,CAAC,wBAAwB,CAAC,OAAO,EAAE,KAAK,EAAkB,CAAC;IAEhF,IAAI,EAAE,YAAY,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAqC,CAAC;IAC7F,MAAM,EAAE,YAAY,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAqD,CAAC;AAEjH,IAAA,gBAAgB,EAAE,YAAY,CAAC,wBAAwB,CAAC,iBAAiB,CAAC;IAE1E,cAAc,EAAE,YAAY,CAAC,wBAAwB,CAAC,WAAW,EAAE,KAAK,EAAoC,CAAC;IAE7G,oBAAoB,EAAE,YAAY,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,KAAK,EAAqB,CAAC;CACjH;;ACvBM,MAAM,4BAA4B,GAAG,2BAA2B,CAAC;AAUjE,MAAM,yBAAyB,GAAuB;AAC3D,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,qBAAqB,EAAE,IAAI;AAC3B,IAAA,kBAAkB,EAAE,KAAK;CAC1B,CAAC;AAEK,MAAM,yBAAyB,GAAG,aAAa,CACpD,yBAAyB,EACzB,EAAE,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM;AAC7C,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACvD,IAAA,GAAG,KAAK;IACR,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,CAAC,KAAK,MAAM;AACzD,IAAA,GAAG,KAAK;AACR,IAAA,qBAAqB,EAAE,IAAI;AAC5B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,yBAAyB,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC/D,IAAA,GAAG,KAAK;IACR,qBAAqB,EAAE,MAAM,CAAC,aAAa;AAC5C,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACxD,IAAA,GAAG,KAAK;IACR,KAAK,EAAE,MAAM,CAAC,KAAK;CACpB,CAAC,CAAC,CACJ;;AC1CD,MAAMN,SAAO,GAAG,qBAAqB,CACnCuC,4BAA8C,CAC/C,CAAC;AAEF,MAAM,iBAAiB,GAAG,cAAc,CAACvC,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1E,MAAM,uBAAuB,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;AACrG,MAAM,qBAAqB,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAExF,MAAM,sBAAsB,GAAG;aACpCA,SAAO;IACP,iBAAiB;IACjB,qBAAqB;IACrB,uBAAuB;CACxB;;MCHY,iCAAiC,CAAA;aACrC,IAAE,CAAA,EAAA,GAAG,mCAAH,CAAuC,EAAA;AAKhD,IAAA,WAAA,CAAoB,KAAiB,EAAU,MAAc,EAAU,KAAqB,EAAA;QAAxE,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAH5F,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QACzB,IAAsB,CAAA,sBAAA,GAAG,EAAE,CAAC;AAG1B,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;KAC/F;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;YACjD,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE;oBACvF,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,iBAAA,CAAC,CAAC;gBACH,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACpG,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACpF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC3D,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,IAAI,EAAE,MAAM;AACZ,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,gBAAgB;AAC5B,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACD,wBAAA;AACE,4BAAA,MAAM,EAAE,yBAAyB,CAAC,MAAM,CAAC;gCACvC,IAAI,EAAE,QAAQ,CAAC,EAAE;AACjB,gCAAA,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE;AAC9B,gCAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;6BAC7B,CAAC;AACF,4BAAA,KAAK,EAAE,QAAQ;AACf,4BAAA,IAAI,EAAE,QAAQ;AACd,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,gBAAgB;AAC5B,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CACH,CAAC;aACH;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,UAAU,GAAA;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,gBAAgB;AAC5B,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;8GAxEU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,uECb9C,gkFAiEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDpDa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,SAAS;+BACE,iCAAiC,EAAA,QAAA,EAAA,gkFAAA,EAAA,CAAA;;;AEP7C,MAAMwC,MAAI,GAAG,cAAc,CAAC;AAC5B,MAAMC,SAAO,GAAG,kBAAkB,CAAC;AAE5B,MAAM,wBAAwB,GAAG;IACtC,cAAc,EAAE,YAAY,CAAC,CAAA,EAAGD,MAAI,CAAkB,gBAAA,CAAA,EAAE,KAAK,EAAkB,CAAC;AAChF,IAAA,gBAAgB,EAAE,YAAY,CAAC,CAAG,EAAAA,MAAI,oBAAoB,CAAC;IAE3D,cAAc,EAAE,YAAY,CAAC,CAAA,EAAGA,MAAI,CAAkB,gBAAA,CAAA,EAAE,KAAK,EAA2B,CAAC;IACzF,qBAAqB,EAAE,YAAY,CAAC,CAAA,EAAGC,SAAO,CAA0B,wBAAA,CAAA,EAAE,KAAK,EAA2B,CAAC;IAC3G,qBAAqB,EAAE,YAAY,CAAC,CAAA,EAAGA,SAAO,CAA0B,wBAAA,CAAA,EAAE,KAAK,EAAkB,CAAC;IAElG,uBAAuB,EAAE,YAAY,CAAC,CAAA,EAAGD,MAAI,CAA8B,4BAAA,CAAA,EAAE,KAAK,EAAkB,CAAC;IACrG,8BAA8B,EAAE,YAAY,CAC1C,CAAA,EAAGC,SAAO,CAAsC,oCAAA,CAAA,EAChD,KAAK,EAA2B,CACjC;IACD,8BAA8B,EAAE,YAAY,CAC1C,CAAA,EAAGA,SAAO,CAAsC,oCAAA,CAAA,EAChD,KAAK,EAAkB,CACxB;IAED,gBAAgB,EAAE,YAAY,CAAC,CAAA,EAAGD,MAAI,CAAkB,gBAAA,CAAA,EAAE,KAAK,EAAiC,CAAC;IACjG,uBAAuB,EAAE,YAAY,CACnC,CAAA,EAAGA,MAAI,CAA0B,wBAAA,CAAA,EACjC,KAAK,EAA0C,CAChD;IACD,uBAAuB,EAAE,YAAY,CAAC,CAAA,EAAGA,MAAI,CAA0B,wBAAA,CAAA,EAAE,KAAK,EAAkB,CAAC;IAEjG,cAAc,EAAE,YAAY,CAAC,CAAA,EAAGA,MAAI,CAAmB,iBAAA,CAAA,EAAE,KAAK,EAA2B,CAAC;IAC1F,qBAAqB,EAAE,YAAY,CAAC,CAAA,EAAGC,SAAO,CAA2B,yBAAA,CAAA,EAAE,KAAK,EAA2B,CAAC;IAC5G,qBAAqB,EAAE,YAAY,CAAC,CAAA,EAAGA,SAAO,CAA2B,yBAAA,CAAA,EAAE,KAAK,EAAkB,CAAC;CACpG;;AC/BM,MAAM,2BAA2B,GAAG,0BAA0B,CAAC;AAS/D,MAAMC,uBAAqB,GAA2B;AAC3D,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,kBAAkB,EAAE,IAAI;CACzB,CAAC;AAEK,MAAM,wBAAwB,GAAG,aAAa,CACnDA,uBAAqB,EACrB,EAAE,CAAC,wBAAwB,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC9D,IAAA,GAAG,KAAK;IACR,kBAAkB,EAAE,MAAM,CAAC,EAAE;AAC9B,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,CAAC,KAAK,MAAM;AACxD,IAAA,GAAG,KAAK;AACR,IAAA,kBAAkB,EAAE,IAAI;AACzB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACvE,IAAA,GAAG,KAAK;IACR,kBAAkB,EAAE,MAAM,CAAC,EAAE;AAC7B,IAAA,QAAQ,EAAE,KAAK;AAChB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAChE,IAAA,GAAG,KAAK;IACR,kBAAkB,EAAE,MAAM,CAAC,EAAE;AAC7B,IAAA,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC,CACJ;;ACpCD,MAAM1C,SAAO,GAAG,qBAAqB,CAAuC2C,2BAAyC,CAAC,CAAC;AACvH,MAAM,OAAO,GAAG,cAAc,CAAC3C,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,CAAC;AACnE,MAAM4C,UAAQ,GAAG,cAAc,CAAC5C,SAAO,EAAE,CAAC,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAClF,MAAM,kBAAkB,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,kBAAkB,CAAC,CAAC;AAElF,MAAM,0BAA0B,GAAG;aACxCA,SAAO;IACP,OAAO;IACP,kBAAkB;cAClB4C,UAAQ;CACT;;MCCY,gCAAgC,CAAA;aACpC,IAAE,CAAA,EAAA,GAAG,kCAAH,CAAsC,EAAA;AAK/C,IAAA,WAAA,CAAoB,KAAiB,EAAU,MAAc,EAAU,KAAqB,EAAA;QAAxE,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAH5F,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QACzB,IAAsB,CAAA,sBAAA,GAAG,EAAE,CAAC;AAG1B,QAAA,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,kBAAkB,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACjD,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAChC,YAAA,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACrF,CAAC,CACH,CAAC;KACH;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;YACpC,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE;oBACtF,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,iBAAA,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC3D,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,IAAI,EAAE,MAAM;AACZ,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,eAAe;AAC3B,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CACH,CAAC;aACH;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,UAAU,GAAA;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,eAAe;AAC3B,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;8GAnEU,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,sECd7C,y8CAsCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDxBa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,SAAS;+BACE,gCAAgC,EAAA,QAAA,EAAA,y8CAAA,EAAA,CAAA;;;MEC/B,4BAA4B,CAAA;aAChC,IAAE,CAAA,EAAA,GAAG,8BAAH,CAAkC,EAAA;AAK3C,IAAA,WAAA,CAAoB,KAAiB,EAAU,MAAc,EAAU,KAAqB,EAAA;QAAxE,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAH5F,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QACzB,IAAsB,CAAA,sBAAA,GAAG,EAAE,CAAC;AAG1B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAChC,YAAA,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACrF,CAAC,CACH,CAAC;KACH;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;YACpC,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE;oBACjF,UAAU,EAAE,IAAI,CAAC,KAAK;AACvB,iBAAA,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EACL,QAAQ,CAAC,QAAQ,KAAK,IAAI;AACxB,0BAAE,EAAE;AACJ,0BAAE;AACE,4BAAA;AACE,gCAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC3D,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,IAAI,EAAE,MAAM;AACZ,gCAAA,YAAY,EAAE,OAAO;AACrB,gCAAA,UAAU,EAAE,UAAU;AACtB,gCAAA,YAAY,EAAE,OAAO;AACtB,6BAAA;AACF,yBAAA;AACR,iBAAA,CAAC,CACH,CAAC;aACH;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,UAAU,GAAA;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,UAAU;AACtB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;8GAnEU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,2DCZzC,+pDA8CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDlCa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,+pDAAA,EAAA,CAAA;;;MEIpB,8BAA8B,CAAA;aAClC,IAAE,CAAA,EAAA,GAAG,gCAAH,CAAoC,EAAA;AAI7C,IAAA,WAAA,CAAoB,KAAiB,EAAU,MAAc,EAAU,KAAqB,EAAA;QAAxE,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAF5F,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;AAGvB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;KAClF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YACxC,IAAI,IAAI,EAAE;AACR,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC7G,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC3D,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,IAAI,EAAE,MAAM;AACZ,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,YAAY;AACxB,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CACH,CAAC;aACH;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,UAAU,GAAA;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;8GAvDU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,mECb3C,opCAiCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDpBa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,opCAAA,EAAA,CAAA;;;MEA5B,iCAAiC,CAAA;aACrC,IAAE,CAAA,EAAA,GAAG,mCAAH,CAAuC,EAAA;AAIhD,IAAA,WAAA,CAAoB,KAA+C,EAAA;QAA/C,IAAK,CAAA,KAAA,GAAL,KAAK,CAA0C;AAFnE,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;AAGvB,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;KAC5F;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,YAAY,KAAI;YACnD,IAAI,YAAY,EAAE;gBAChB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,MAAM,EAAE,oBAAoB,CAAC,SAAS,EAAE;AACxC,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,IAAI,EAAE,MAAM;AACZ,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,gBAAgB;AAC5B,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAC,CACH,CAAC;aACH;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,oBAAoB,CAAC,SAAS,EAAE;AACxC,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,gBAAgB;AAC5B,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;8GArDU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,uECV9C,s2CAmCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDzBa,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,SAAS;+BACE,iCAAiC,EAAA,QAAA,EAAA,s2CAAA,EAAA,CAAA;;;AEJ7C,MAAM,IAAI,GAAG,cAAc,CAAC;AAC5B,MAAM,OAAO,GAAG,kBAAkB,CAAC;AAE5B,MAAM,gBAAgB,GAAG;AAC9B,IAAA,SAAS,EAAE,YAAY,CAAC,CAAG,EAAA,IAAI,aAAa,CAAC;IAC7C,gBAAgB,EAAE,YAAY,CAAC,CAAA,EAAG,OAAO,CAAqB,mBAAA,CAAA,EAAE,KAAK,EAA8B,CAAC;IACpG,gBAAgB,EAAE,YAAY,CAAC,CAAA,EAAG,OAAO,CAAqB,mBAAA,CAAA,EAAE,KAAK,EAAkB,CAAC;IAExF,UAAU,EAAE,YAAY,CAAC,CAAA,EAAG,IAAI,CAAc,YAAA,CAAA,EAAE,KAAK,EAAsB,CAAC;AAC5E,IAAA,YAAY,EAAE,YAAY,CAAC,CAAG,EAAA,IAAI,gBAAgB,CAAC;IAEnD,UAAU,EAAE,YAAY,CAAC,CAAA,EAAG,IAAI,CAAc,YAAA,CAAA,EAAE,KAAK,EAAyB,CAAC;CAChF;;ACXM,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAQ9C,MAAM,qBAAqB,GAAmB;AACnD,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,QAAQ,EAAE,KAAK;CAChB,CAAC;AAEK,MAAM,gBAAgB,GAAG,aAAa,CAC3C,qBAAqB,EACrB,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACxD,IAAA,GAAG,KAAK;AACR,IAAA,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AACzB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAClD,IAAA,GAAG,KAAK;AACR,IAAA,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC;AAClE,IAAA,QAAQ,EAAE,KAAK;AAChB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACpD,IAAA,GAAG,KAAK;AACR,IAAA,YAAY,EAAE,SAAS;AACxB,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAClD,IAAA,GAAG,KAAK;IACR,QAAQ,EAAE,MAAM,CAAC,QAAQ;CAC1B,CAAC,CAAC,CACJ;;ACjCD,MAAMJ,SAAO,GAAG,qBAAqB,CAA+B6C,mBAAiC,CAAC,CAAC;AACvG,MAAM,KAAK,GAAG,cAAc,CAAC7C,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,KAAK,CAAC,CAAC;AAC/D,MAAM,YAAY,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,YAAY,CAAC,CAAC;AAC7E,MAAM,QAAQ,GAAG,cAAc,CAACA,SAAO,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;AAE7D,MAAM,kBAAkB,GAAG;aAChCA,SAAO;IACP,KAAK;IACL,YAAY;IACZ,QAAQ;CACT;;ACJD,IAAI,UAAU,GAAG,CAAC,CAAC;MAMN,wBAAwB,CAAA;aAC5B,IAAE,CAAA,EAAA,GAAG,0BAAH,CAA8B,EAAA;AAkBvC,IAAA,WAAA,CAAoB,KAAsC,EAAA;QAAtC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiC;QAjB1D,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;QASZ,IAAG,CAAA,GAAA,GAAW,CAAC,CAAC;AAChB,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QACzB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEjB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAEX,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;QAG/B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;AAEvD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACrC,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AACpC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAEhE,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;KAC5B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YACpC,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;aACvB;SACF,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1E;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC;KACtD;AAED,IAAA,eAAe,CAAC,QAAuB,EAAA;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,sCAAsC,CAAC,QAAQ,CAAC,UAAU,CAAC;;aAElF,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,QAAQ,CAAC,KAAK,CAAC;;AAEvC,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,IAAI,GAAG,KAAK,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC9E,QAAA,IAAI,QAAQ,CAAC,KAAK,EAAE;AAClB,YAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACnC;QACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,eAAe,CAAC,eAAe,CAAC;YAC9B,MAAM,EAAE,QAAQ,CAAC,EAAE;YACnB,MAAM,EAAE,QAAQ,CAAC,UAAU;AAC3B,YAAA,KAAK,EAAE,YAAY;AACpB,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,cAAc,CAAC,QAAuB,EAAA;QACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;KACnH;AAEO,IAAA,sCAAsC,CAAC,aAAqB,EAAA;QAClE,QACE,IAAI,CAAC,oBAAoB;AACvB,cAAE,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,aAAa,CAAC;AAChE,aAAA,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAC1C;KACH;8GAlFU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,2FCfrC,yuDA8CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD/Ba,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,yuDAAA,EAAA,CAAA;0EAoBxB,MAAM,EAAA,CAAA;sBAAd,KAAK;;;AEnBF,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AAGvD,IAAA,WAAA,CACE,KAAiB,EACT,MAAc,EACd,KAAqB,EAAA;QAE7B,KAAK,CAAC,KAAK,CAAC,CAAC;QAHL,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAG7B,QAAA,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AAC/C,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;KACnG;IAEQ,IAAI,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC3F,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CACvF,CAAC;KACH;AAEQ,IAAA,MAAM,CAAC,IAAY,EAAA;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACxF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KAC3D;8GA1BU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,6ECb/B,yiBAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDHa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,yiBAAA,EAAA,CAAA;;;AEEtB,MAAO,mBAAoB,SAAQ,wBAAwB,CAAA;IAI/D,WACU,CAAA,KAAiB,EACjB,KAAqB,EAAA;AAE7B,QAAA,KAAK,EAAE,CAAC;QAHA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAG7B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/F;AAED,IAAA,YAAY,CAAC,MAAW,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;;QAG/C,MAAM,CAAC,MAAM,CAAC,YAAY,CACxB,cAAc,EACd,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,CACzE,CAAC;KACH;8GArBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8ECZhC,qTAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDQa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,qTAAA,EAAA,CAAA;;;AEUtB,MAAM,mBAAmB,GAAU;IACxC,+BAA+B;IAC/B,8BAA8B;IAC9B,4BAA4B;IAC5B,gCAAgC;IAChC,8BAA8B;IAC9B,2BAA2B;IAC3B,0BAA0B;IAC1B,wBAAwB;IACxB,iCAAiC;IACjC,iCAAiC;IACjC,2BAA2B;CAC5B,CAAC;AAMI,MAAO,oBAAqB,SAAQ,mBAAmB,CAAA;AAW3D,IAAA,WAAA,CAAY,KAAiB,EAAE,MAAc,EAAU,KAAqB,EAAA;AAC1E,QAAA,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QADgC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAL5E,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;AAGzB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC,CAAC;AAI1D,QAAA,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;AAC/D,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACpE,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;KACnG;IAEQ,IAAI,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;KAC7D;AAEQ,IAAA,aAAa,CAAC,IAAY,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KAC3D;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;AAC/B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;aACzB;AACD,YAAA,IAAI,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;aAChE;SACF,CAAC,CACH,CAAC;KACH;IAEQ,WAAW,GAAA;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;8GAnDU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAOgB,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5CjE,k5BA4BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwC,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA1C,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDSa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,k5BAAA,EAAA,CAAA;4HAUuC,UAAU,EAAA,CAAA;sBAA5E,SAAS;uBAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;;;AEzC5D,MAAM,YAAY,GAAG;AAC1B,IAAA,SAAS,EAAE,YAAY,CAAC,0BAA0B,CAAC;AACnD,IAAA,gBAAgB,EAAE,YAAY,CAAC,sCAAsC,EAAE,KAAK,EAA4B,CAAC;AACzG,IAAA,gBAAgB,EAAE,YAAY,CAAC,sCAAsC,EAAE,KAAK,EAAkB,CAAC;AAE/F,IAAA,QAAQ,EAAE,YAAY,CAAC,0BAA0B,EAAE,KAAK,EAAiC,CAAC;AAC1F,IAAA,eAAe,EAAE,YAAY,CAAC,sCAAsC,EAAE,KAAK,EAAqB,CAAC;AACjG,IAAA,eAAe,EAAE,YAAY,CAAC,sCAAsC,EAAE,KAAK,EAAkB,CAAC;CAC/F;;ACPM,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAO3C,MAAM,gBAAgB,GAAc;AACzC,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,OAAO,EAAE,KAAK;CACf,CAAC;AAEK,MAAM,WAAW,GAAG,aAAa,CACtC,gBAAgB,EAChB,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AAC7C,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,IAAI;AACd,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACpD,IAAA,GAAG,KAAK;AACR,IAAA,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AACxB,IAAA,OAAO,EAAE,KAAK;AACf,CAAA,CAAC,CAAC,EACH,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM;AACpD,IAAA,GAAG,KAAK;AACR,IAAA,OAAO,EAAE,KAAK;CACf,CAAC,CAAC,CACJ;;AC5BD,MAAM,OAAO,GAAG,qBAAqB,CAAsB2C,eAAyB,CAAC,CAAC;AAEtF,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,KAAK,CAAC,CAAC;AAExD,MAAM,cAAc,GAAG;IAC5B,OAAO;IACP,KAAK;CACN;;MCeY,sBAAsB,CAAA;AAmBjC,IAAA,WAAA,CACU,KAAoC,EACpC,MAAc,EACd,KAAqB,EACrB,WAA+B,EAAA;QAH/B,IAAK,CAAA,KAAA,GAAL,KAAK,CAA+B;QACpC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AAtBzC,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAEzB,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QACrB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;QAYvB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAQpB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACrC,YAAA,EAAE,EAAE,CAACzB,EAAI,EAAE,CAAC;YACZ,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACzC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC/C,eAAe,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACnD,gBAAgB,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpD,oBAAoB,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACzD,SAAA,CAAC,CAAC;KACJ;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,KAAK,SAAS,CAAC;KAC7E;AAED,IAAA,mBAAmB,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvB,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,oBAAoB,EAAE,EAAE;AACzB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;AAClH,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC;KAC/B;AAED,IAAA,wBAAwB,CAAC,KAAU,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvB,YAAA,oBAAoB,EAAE,EAAE;AACzB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,GAAG,CAAC,CAAC,KAAK,KACR,KAAK;aACF,MAAM,CACL,CAAC,IAAI,KACH,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AACjE,YAAA,IAAI,CAAC,oBAAoB,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CACzE;aACA,GAAG,CAAC,CAAC,IAAI,KACR,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AAChE,cAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE;cAC5B,IAAI,CAAC,eAAe,CAAC,EAAE,CAC5B,CACJ,CACF,CAAC;AAEF,QAAA,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CACrF,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,KACrB,OAAO;AACJ,aAAA,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;AAC/B,cAAE,UAAU,CAAC,MAAM,CACjB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAC3F,CACJ,CACF,CAAC;KACH;IAED,MAAM,GAAA;QACJ,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;KACtE;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,SAAS,GAAG;AACd,gBAAA,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,gBAAA,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY;gBAC9C,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;gBACvD,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;aAC1D,CAAC;YAEV,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;SACzF;KACF;8GA1GU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,2DCzBnC,i9NAsLA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD7Ja,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,i9NAAA,EAAA,CAAA;;;MEDpB,mBAAmB,CAAA;AAU9B,IAAA,WAAA,CACU,KAAiC,EACjC,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAA4B;QACjC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAR/B,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QACrB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;AAEvB,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAOvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,OAAO;AACnB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAI;AACvB,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;gBACrB,OAAO;oBACL,EAAE,EAAE,CAAC,CAAC,EAAE;AACR,oBAAA,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI;AACjC,oBAAA,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI;AACvC,oBAAA,oBAAoB,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI;AACjD,oBAAA,WAAW,EACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAY,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;0BACjG,IAAI,IAAI,EAAE;AAChB,oBAAA,gBAAgB,EACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAY,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;0BACtG,IAAI,IAAI,EAAE;iBACjB,CAAC;AACJ,aAAC,CAAC,CAAC;SACJ,CAAC,CACH,CAAC;KACH;8GAvDU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,uDCrBhC,i2CAuCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDlBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,i2CAAA,EAAA,CAAA;;;MEAhB,+BAA+B,CAAA;AAqB1C,IAAA,WAAA,CACU,KAAyE,EACzE,MAAc,EACd,KAAqB,EACrB,WAA+B,EAAA;QAH/B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAoE;QACzE,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAlBzC,IAAY,CAAA,YAAA,GAAgB,EAAE,CAAC;QAC/B,IAAgB,CAAA,gBAAA,GAAgB,EAAE,CAAC;QACnC,IAAsB,CAAA,sBAAA,GAAgB,EAAE,CAAC;QACzC,IAAiB,CAAA,iBAAA,GAAoB,EAAE,CAAC;AAExC,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAIzB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAEpB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAQlB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjC,YAAA,EAAE,EAAE,CAACU,EAAM,EAAE,CAAC;YACd,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACjC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACzC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1C,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,YAAY,KAAI;AACvD,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACnC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,iBAAiB,KAAI;AACtD,YAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;SAC5C,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,gBAAgB,KAAI;AACpD,YAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AACzC,YAAA,IAAI,CAAC,sBAAsB,GAAG,gBAAgB,CAAC;YAC/C,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChE,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAClD;AACD,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACrG,gBAAA,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;AAC/D,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;oBACnB,EAAE;oBACF,IAAI;oBACJ,YAAY,EAAE,WAAW,CAAC,EAAE;oBAC5B,YAAY,EAAE,QAAQ,CAAC,EAAE;AAC1B,iBAAA,CAAC,CAAC;aACJ;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;KACrE;IAED,OAAO,GAAA;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACzE,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACzE;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;AAED,IAAA,kBAAkB,CAAC,EAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC/F;QACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAED,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACnB,YAAA,UAAU,EACR,IAAI,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC;AACpC,kBAAE,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE;oBACnC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,CAAC;AACrG,sBAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;sBACjC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE;AACrC,kBAAE,EAAE;AACT,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,kBAAkB,CAAC,EAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;AAED,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAC7C,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CACzF,CAAC;AACF,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;AAC5D,gBAAA,QACE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,KAAK,QAAQ,EAAE,WAAW,EAAE,EAAE;AAClE,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,KAAK,KAAK,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAC/D;AACJ,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAC5D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACpF;SACF;KACF;8GAxIU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,iHClB5C,yuFAmFA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDjEa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,SAAS;+BACE,+BAA+B,EAAA,QAAA,EAAA,yuFAAA,EAAA,CAAA;+JAIhC,aAAa,EAAA,CAAA;sBAArB,KAAK;;;MEPK,+BAA+B,CAAA;AAG1C,IAAA,WAAA,CAAoB,KAA2B,EAAA;QAA3B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAsB;QAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;KAC/F;8GANU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,qECZ5C,iPAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2C,+BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA5C,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDQa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,SAAS;+BACE,+BAA+B,EAAA,QAAA,EAAA,iPAAA,EAAA,CAAA;;;MEM9B,2BAA2B,CAAA;AAsBtC,IAAA,WAAA,CACU,KAAgC,EAChC,gBAAgC,EAChC,MAAc,EACd,KAAqB,EAAA;QAHrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAA2B;QAChC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAgB;QAChC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAnB/B,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QAErB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;QAEvB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QAInB,IAAqB,CAAA,qBAAA,GAAW,EAAE,CAAC;QAEnC,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAW1B,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG;AAClB,YAAA,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iCAAiC,CAAC,EAAE;AAChG,YAAA,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8CAA8C,CAAC,EAAE;AAC7G,YAAA,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,8CAA8C,CAAC,EAAE;SAC9G,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;AACtF,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,CAAC;QAChG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,yBAAyB,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AAClF,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,gBAAgB;AAC5B,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;IAED,aAAa,GAAA;QACX,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,CAAC,CAAC;KACnE;IAED,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAClC,EAAE,EAAE,CAAC,CAAC;SACR;KACF;AAED,IAAA,YAAY,CAAC,QAAgB,EAAA;QAC3B,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;AAED,IAAA,WAAW,CAAC,MAAW,EAAA;AACrB,QAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;KACrC;AAED,IAAA,cAAc,CAAC,aAA4B,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;KAChC;AAED,IAAA,UAAU,CAAC,aAA4B,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,mCAAmC,EAAE,CAAC,CAAC,CAAC;KAC/G;AAED,IAAA,kBAAkB,CAAC,IAAY,EAAA;AAC7B,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,WAAW,IAAI,WAAW,CAAC;KACnF;8GAzFU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,gKCfxC,0oFA2EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD5Da,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,0oFAAA,EAAA,CAAA;yJAIhB,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO,CAAA;;;MEVP,8BAA8B,CAAA;8GAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,oECN3C,qMAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8C,+BAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA9C,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;+BACE,8BAA8B,EAAA,QAAA,EAAA,qMAAA,EAAA,CAAA;;;MES7B,wBAAwB,CAAA;AAoCnC,IAAA,WAAA,GAAA;QAjCS,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QAErB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;QAEvB,IAAY,CAAA,YAAA,GAAyB,EAAE,CAAC;QAExC,IAAQ,CAAA,QAAA,GAA4B,EAAE,CAAC;QAEvC,IAAgB,CAAA,gBAAA,GAAkB,IAAI,CAAC;QAEvC,IAAqB,CAAA,qBAAA,GAAW,EAAE,CAAC;QAEnC,IAAQ,CAAA,QAAA,GAAY,IAAI,CAAC;AAExB,QAAA,IAAA,CAAA,YAAY,GAA4B,IAAI,YAAY,EAAa,CAAC;AAEhF;;AAEG;AACO,QAAA,IAAA,CAAA,YAAY,GAAyB,IAAI,YAAY,EAAU,CAAC;AAEhE,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEvE;;AAEG;AACO,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAU,CAAC;QAEzE,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAM1B,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;KAChD;AAED,IAAA,gBAAgB,CAAC,QAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClC;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAClC,EAAE,EAAE,CAAC,CAAC;SACR;KACF;AAED,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;AAED,IAAA,WAAW,CAAC,MAAW,EAAA;AACrB,QAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;KACrC;AAED,IAAA,WAAW,CAAC,EAAU,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC3B;AAED,IAAA,kBAAkB,CAAC,IAAY,EAAA;AAC7B,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,WAAW,IAAI,WAAW,CAAC;KACnF;8GA1EU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,ogBCZrC,slEAmEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAe,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDvDa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,slEAAA,EAAA,CAAA;wDAIT,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO,CAAA;gBAET,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBAEG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAKG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAKG,WAAW,EAAA,CAAA;sBAApB,MAAM;;;ME1BI,0BAA0B,CAAA;AAgBrC,IAAA,WAAA,CACU,KAAiB,EACjB,gBAAgC,EAChC,MAAc,EACd,KAAqB,EAAA;QAHrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAgB;QAChC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAd/B,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QAErB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;QAEvB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;AAInB,QAAA,IAAA,CAAA,YAAY,GAAiB,IAAI,OAAO,EAAO,CAAC;QAQ9C,IAAI,CAAC,YAAY,GAAG;AAClB,YAAA,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE;AACtF,YAAA,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;SACtF,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;AACvD,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;aAC9F,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACpB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAC7B;aACA,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,KAAI;YACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;AAChE,SAAC,CAAC,CAAC;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,eAAe;AAC3B,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,UAAU,CAAC,EAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,kCAAkC,EAAE,CAAC,CAAC,CAAC;KAC9G;8GA1DU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAf,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,sJCfvC,2bAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8C,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,cAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA5C,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,2bAAA,EAAA,CAAA;yJAIN,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO,CAAA;;;MEFP,qBAAqB,CAAA;AAmBhC,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EACrB,WAA+B,EAAA;QAH/B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QArBzC,IAAW,CAAA,WAAA,GAAG,YAAY,CAAC;QAC3B,IAAsB,CAAA,sBAAA,GAAG,EAAE,CAAC;AAK5B,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAEzB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAEX,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QACvB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QACzB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAGlB,QAAA,IAAA,CAAA,eAAe,GAA4B,IAAI,YAAY,EAAa,CAAC;QAQjF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACrC,YAAA,EAAE,EAAE,CAAC,EAAE,KAAK,EAAEmB,EAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACvC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACnC,YAAA,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AAC1C,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK;AAC7B,iBAAA,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC;iBACrC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;SACrF;aAAM;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK;AAC7B,iBAAA,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC;iBAClC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAmB,KAAK,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;SAChG;AAED,QAAA,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAkC;AAC7D,YAAA,IAAI,CAAC,cAAc;AACpB,SAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9G,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1C,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;aACjE;AACD,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3E,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACpF,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvB,gBAAA,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;AACpB,gBAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;AACxB,gBAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;AACxB,gBAAA,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;AACvC,aAAA,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;AACzC,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;aAC1C;AAED,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;gBAC/B,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;AAC5C,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;iBACjF;aACF;SACF;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAqB,CAAC;KACpE;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,OAAO,GAAG;AACZ,gBAAA,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAC9B,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,KAAK,IAAI,CAAC;aAC3F,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;KACF;AAED,IAAA,WAAW,CAAC,IAAa,EAAA;QACvB,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;SACzE;KACF;AAED,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACnC;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;KACrE;IAED,OAAO,GAAA;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACzE,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACzE;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;8GAzHU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,oOCdlC,q7LA+IA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDjIa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,q7LAAA,EAAA,CAAA;+JAepB,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;MEnBI,8BAA8B,CAAA;AAGzC,IAAA,WAAA,CAA6B,KAAiB,EAAU,MAAc,EAAU,KAAqB,EAAA;QAAxE,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AACnG,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;KACxD;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAChG,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,MAAM,CAAC,QAAmB,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;KAC5E;8GAhBU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,+DCZ3C,uPASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8C,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA7C,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDGa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,uPAAA,EAAA,CAAA;;;MEAxB,6BAA6B,CAAA;AACxC,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KAAI;AAEzC,IAAA,MAAM,CAAC,QAAmB,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;KACtF;8GALU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,mECT1C,qJAEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8C,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDOa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,qJAAA,EAAA,CAAA;;;MEK5B,0BAA0B,CAAA;IAGrC,WAA6B,CAAA,KAAiB,EAAU,KAAqB,EAAA;QAAhD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;KAAI;IAEjF,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,MAAM,CAAC,QAAmB,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;KAC7E;8GAfU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,+DCXvC,iQASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA7C,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACE,yBAAyB,EAAA,QAAA,EAAA,iQAAA,EAAA,CAAA;;;MEMxB,sBAAsB,CAAA;AAcjC,IAAA,WAAA,CACU,KAAiB,EACjB,gBAAgC,EAChC,MAAc,EACd,KAAqB,EAAA;QAHrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAgB;QAChC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAd/B,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QAErB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;QAEvB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;AAInB,QAAA,IAAA,CAAA,YAAY,GAAiB,IAAI,OAAO,EAAO,CAAC;QAQ9C,IAAI,CAAC,YAAY,GAAG;AAClB,YAAA,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAAE;AAC1F,YAAA,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE;SAC1F,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,KAAK;AACP,aAAA,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;AAC1C,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAClB,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAC7B;AACA,aAAA,SAAS,CAAC,CAAC,gBAAgB,KAAI;AAC9B,YAAA,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACrC,SAAC,CAAC,CAAC;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACnE,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,UAAU;AACtB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;IAED,aAAa,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,CAAC;KACzD;AAED,IAAA,UAAU,CAAC,EAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,8BAA8B,EAAE,CAAC,CAAC,CAAC;KAC1G;8GA7DU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,0DCdnC,kgBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8C,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,cAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA5C,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDDa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,kgBAAA,EAAA,CAAA;;;MEFnB,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAoB,KAAiB,EAAA;QAAjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KAAI;AAEzC,IAAA,MAAM,CAAC,QAAmB,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;KAC7E;8GALU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,8DCTtC,mIAEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiD,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDOa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;+BACE,wBAAwB,EAAA,QAAA,EAAA,mIAAA,EAAA,CAAA;;;MEYvB,4BAA4B,CAAA;IAcvC,IAAa,WAAW,CAAC,GAAc,EAAA;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;KACzB;AAED,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EACrB,WAA+B,EAAA;QAH/B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AApBzC,QAAA,IAAA,CAAA,eAAe,GAAuB,EAAE,CAAC,CAAC,CAAC,CAAC;AAI5C,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QAGzB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAclB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAE9D,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAExC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACrC,YAAA,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC1D,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACjC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK;AAC9B,aAAA,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC;aACtC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AAE1F,QAAA,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAkC;AAC7D,YAAA,IAAI,CAAC,eAAe;AACrB,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CACnH,CAAC;AACF,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC1C,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;aACjE;AACD,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACvB,EAAE,EAAE,EAAE,EAAE;AACT,aAAA,CAAC,CAAC;SACJ;AAAM,aAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CACxF,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACvB,gBAAA,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;AACxB,gBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;AAC5B,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;AAC/B,aAAA,CAAC,CAAC;SACJ;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;KACrE;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,iBAAiB,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CACnG,CAAC;SACH;KACF;IAED,UAAU,GAAA;QACR,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;KACF;IAED,OAAO,GAAA;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACzE,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACzE;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;KACxB;8GAxGU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAhD,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,8HClBzC,qkGA2FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDzEa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;+BACE,2BAA2B,EAAA,QAAA,EAAA,qkGAAA,EAAA,CAAA;+JAiBxB,WAAW,EAAA,CAAA;sBAAvB,KAAK;;;ME1BK,2BAA2B,CAAA;8GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,gECNxC,2KAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgD,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlD,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDEa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,2KAAA,EAAA,CAAA;;;MESzB,8BAA8B,CAAA;AAGzC,IAAA,WAAA,CACU,KAAiB,EACjB,MAAc,EACd,KAAqB,EAAA;QAFrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;AAE7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;KAClF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAC7E,CAAC;KACH;8GAfU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,mECZ3C,wQAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmD,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAhD,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDMa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;+BACE,6BAA6B,EAAA,QAAA,EAAA,wQAAA,EAAA,CAAA;;;MEI5B,wBAAwB,CAAA;AAQnC,IAAA,WAAA,CAAoB,KAAiB,EAAU,MAAc,EAAU,KAAqB,EAAA;QAAxE,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAH5F,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QACrB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;QAGrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;QACrF,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvD,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,mBAAmB,CAAC,GAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,gCAAgC,EAAE,CAAC,CAAC,CAAC;KAC5G;8GAjCU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,4DCbrC,qoDAiDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDpCa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,qoDAAA,EAAA,CAAA;;;MEGrB,gCAAgC,CAAA;AAe3C,IAAA,WAAA,CACU,KAA8C,EAC9C,OAAgB,EAChB,gBAAkC,EAClC,WAA+B,EAAA;QAH/B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAyC;QAC9C,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AAXzC,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QACzB,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAWlB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK;AAClC,aAAA,MAAM,CAAC,sBAAsB,CAAC,cAAc,CAAC;aAC7C,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;QAE5F,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7C,YAAA,EAAE,EAAE,CAACgB,EAAI,EAAE,CAAC;AACZ,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5D,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YACjC,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;iBAAM;gBACL,IAAI,CAAC,UAAU,EAAE,CAAC;aACnB;SACF,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC;YACtC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAkC;AACrE,YAAA,IAAI,CAAC,mBAAmB;SACzB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAExE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAE7F,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,EAAE,KAAI;AAC1C,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;SAChC,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACxB;IAED,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AAC/B,gBAAA,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE;AAChC,gBAAA,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI;AACrC,aAAA,CAAC,CAAC;SACJ;aAAM;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAC/B,EAAE,EAAEA,EAAI,EAAE;AACV,gBAAA,IAAI,EAAE,EAAE;AACT,aAAA,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CACnC,IAAI,aAAa,CAAC;AAChB,YAAA,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,CAAC,iBAAiB,CAAC;AAC/B,YAAA,aAAa,EAAE,UAAU;AAC1B,SAAA,CAAC,CACH,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;KAClF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,UAAU,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KAChF;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC1D,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,oBAAoB,CAAC,gBAAgB,CAAC;AACpC,gBAAA,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;AAClC,gBAAA,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI;AACvC,aAAA,CAAC,CACH,CAAC;YACF,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF;8GAvGU,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAnB,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhC,gCAAgC,EAAA,QAAA,EAAA,gCAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAaZ,WAAW,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B5C,itEA4DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD/Ca,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,SAAS;+BACE,gCAAgC,EAAA,QAAA,EAAA,itEAAA,EAAA,CAAA;oKAgBI,QAAQ,EAAA,CAAA;sBAArD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;;;MEhBjC,2BAA2B,CAAA;AAOtC,IAAA,WAAA,CAAoB,KAAyC,EAAA;QAAzC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAoC;QAH7D,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QACrB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;AAGrB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;QAE5F,IAAI,CAAC,KAAK,CAAC,QAAQ,CACjB,YAAY,CAAC,WAAW,CAAC;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,MAAM,EAAE,oBAAoB,CAAC,SAAS,EAAE;AACxC,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,UAAU,EAAE,gBAAgB;AAC5B,oBAAA,YAAY,EAAE,OAAO;AACtB,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;AAED,IAAA,UAAU,CAAC,IAAS,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,mCAAmC,EAAE,CAAC,CAAC,CAAC;KAC/G;8GAhCU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,gECVxC,65DAqDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoD,gCAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApD,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD3Ca,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAAA,65DAAA,EAAA,CAAA;;;MEMzB,kBAAkB,CAAA;AAM7B,IAAA,WAAA,CAAoB,KAAgC,EAAU,MAAc,EAAU,KAAqB,EAAA;QAAvF,IAAK,CAAA,KAAA,GAAL,KAAK,CAA2B;QAAU,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QAH3G,IAAU,CAAA,UAAA,GAAI,MAAM,CAAC;QACrB,IAAa,CAAA,aAAA,GAAI,KAAK,CAAC;QAGrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAExE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KAChE;AAED,IAAA,UAAU,CAAC,IAAc,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC;KACtG;8GAlBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,sDCb/B,8sDAmDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDtCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,8sDAAA,EAAA,CAAA;;;AEgCrB,MAAM,MAAM,GAAW;AAC5B,IAAA;AACE,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,MAAM,EAAE;AACN,gBAAA,MAAM,EAAE,OAAO;AAChB,aAAA;AACF,SAAA;QACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAC/B,QAAA,SAAS,EAAE,oBAAoB;AAC/B,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,yBAAyB;AACpC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,aAAa;AACpB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,4BAA4B;AACvC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,aAAa;AACnB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,SAAS,EAAE,+BAA+B;AAC1C,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,aAAa;AACnB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,MAAM;AACb,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,qBAAqB;AAChC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,SAAS;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,wBAAwB;AACnC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,SAAS;AACf,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,QAAQ,EAAE;AACR,4BAAA;AACE,gCAAA,IAAI,EAAE,EAAE;AACR,gCAAA,SAAS,EAAE,yBAAyB;AACpC,gCAAA,IAAI,EAAE;AACJ,oCAAA,MAAM,EAAE;AACN,wCAAA,MAAM,EAAE,OAAO;AACf,wCAAA,IAAI,EAAE,SAAS;AAChB,qCAAA;AACF,iCAAA;gCACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,6BAAA;AACD,4BAAA;AACE,gCAAA,IAAI,EAAE,KAAK;AACX,gCAAA,SAAS,EAAE,2BAA2B;AACtC,gCAAA,IAAI,EAAE;AACJ,oCAAA,MAAM,EAAE;AACN,wCAAA,MAAM,EAAE,OAAO;AACf,wCAAA,IAAI,EAAE,SAAS;AACf,wCAAA,MAAM,EAAE,OAAO;AAChB,qCAAA;AACF,iCAAA;gCACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,6BAAA;AACD,4BAAA;AACE,gCAAA,IAAI,EAAE,MAAM;AACZ,gCAAA,SAAS,EAAE,yBAAyB;AACpC,gCAAA,IAAI,EAAE;AACJ,oCAAA,MAAM,EAAE;AACN,wCAAA,MAAM,EAAE,OAAO;AACf,wCAAA,IAAI,EAAE,SAAS;AACf,wCAAA,MAAM,EAAE,OAAO;AAChB,qCAAA;AACF,iCAAA;gCACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,6BAAA;AACD,4BAAA;AACE,gCAAA,IAAI,EAAE,WAAW;AACjB,gCAAA,SAAS,EAAE,8BAA8B;AACzC,gCAAA,IAAI,EAAE;AACJ,oCAAA,MAAM,EAAE;AACN,wCAAA,MAAM,EAAE,OAAO;AACf,wCAAA,IAAI,EAAE,SAAS;AACf,wCAAA,MAAM,EAAE,OAAO;AAChB,qCAAA;AACF,iCAAA;gCACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,6BAAA;AACD,4BAAA;AACE,gCAAA,IAAI,EAAE,cAAc;AACpB,gCAAA,SAAS,EAAE,4BAA4B;AACvC,gCAAA,IAAI,EAAE;AACJ,oCAAA,MAAM,EAAE;AACN,wCAAA,MAAM,EAAE,OAAO;AACf,wCAAA,IAAI,EAAE,SAAS;AACf,wCAAA,MAAM,EAAE,OAAO;AAChB,qCAAA;AACF,iCAAA;gCACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,wBAAwB;AACnC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,YAAY;AACnB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,2BAA2B;AACtC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,YAAY;AAClB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,SAAS,EAAE,8BAA8B;AACzC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,YAAY;AAClB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,oBAAoB;AAC/B,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,QAAQ;AACf,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,uBAAuB;AAClC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,QAAQ;AACd,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,SAAS,EAAE,wBAAwB;AACnC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,QAAQ;AACd,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,uBAAuB;AAClC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,YAAY;AACnB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,0BAA0B;AACrC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,YAAY;AAClB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,2BAA2B;AACtC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,YAAY;AACnB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,SAAS,EAAE,2BAA2B;AACtC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,YAAY;AAClB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,sBAAsB;AACjC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,UAAU;AACjB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,yBAAyB;AACpC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,UAAU;AAChB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,SAAS,EAAE,0BAA0B;AACrC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,UAAU;AAChB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,0BAA0B;AACrC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,eAAe;AACtB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,6BAA6B;AACxC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,eAAe;AACrB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,SAAS,EAAE,8BAA8B;AACzC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,eAAe;AACrB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,2BAA2B;AACtC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,gBAAgB;AACvB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,8BAA8B;AACzC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,gBAAgB;AACtB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,SAAS,EAAE,+BAA+B;AAC1C,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,gBAAgB;AACtB,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,qBAAqB;AAChC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,SAAS;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,wBAAwB;AACnC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,SAAS;AACf,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,SAAS,EAAE,yBAAyB;AACpC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,SAAS;AACf,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,2BAA2B;AACtC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,gBAAgB;AACvB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,SAAS,EAAE,mBAAmB;AAC9B,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,OAAO;AACd,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,SAAS,EAAE,sBAAsB;AACjC,wBAAA,IAAI,EAAE;AACJ,4BAAA,MAAM,EAAE;AACN,gCAAA,MAAM,EAAE,OAAO;AACf,gCAAA,IAAI,EAAE,OAAO;AACb,gCAAA,MAAM,EAAE,OAAO;AAChB,6BAAA;AACF,yBAAA;wBACD,WAAW,EAAE,CAAC,gBAAgB,CAAC;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,SAAS,EAAE,iBAAiB;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,UAAU,EAAE,EAAE;AACd,gBAAA,SAAS,EAAE,MAAM;AAClB,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA;AACE,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,SAAS,EAAE,MAAM;AAClB,KAAA;CACF,CAAC;MAMW,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,wCAFnB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;+GAEX,kBAAkB,EAAA,OAAA,EAAA,CAHnB,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC7B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACxC,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA,CAAA;;;MCrhBY,YAAY,CAAA;IACvB,WACU,CAAA,UAAsB,EACtB,KAAiB,EAAA;QADjB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;KACvB;IAEJ,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAc,CAAG,EAAA,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;KACnF;AAED,IAAA,aAAa,CAAC,SAAoB,EAAA;QAChC,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAO,GAAG,GAAG,CAAA,WAAA,CAAa,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;KACxF;AAED,IAAA,YAAY,CAAC,EAAU,EAAA;QACrB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAY,GAAG,GAAG,CAAA,eAAA,EAAkB,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC;KAC1F;IAED,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAM,CAAG,EAAA,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAC/E;AAED,IAAA,kBAAkB,CAAC,EAAU,EAAA;QAC3B,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAY,GAAG,GAAG,CAAA,gBAAA,EAAmB,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC;KAC3F;AAED,IAAA,gBAAgB,CAAC,QAAmB,EAAA;QAClC,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAO,GAAG,GAAG,CAAA,eAAA,CAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC3F;IAED,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAgB,CAAG,EAAA,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;KACvF;AAED,IAAA,eAAe,CAAC,GAAgB,EAAA;QAC9B,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAO,GAAG,GAAG,CAAA,aAAA,CAAe,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;KACnF;AAED,IAAA,cAAc,CAAC,IAAY,EAAA;QACzB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAc,GAAG,GAAG,CAAA,cAAA,EAAiB,IAAI,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC;KAC7F;AAED,IAAA,iBAAiB,CAAC,IAAY,EAAA;QAC5B,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAO,GAAG,GAAG,CAAA,cAAA,EAAiB,IAAI,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC;KACzF;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAa,CAAG,EAAA,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;KAClF;AAED,IAAA,WAAW,CAAC,EAAU,EAAA;QACpB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAW,GAAG,GAAG,CAAA,eAAA,EAAkB,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC;KACzF;AAED,IAAA,YAAY,CAAC,IAAc,EAAA;QACzB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAO,GAAG,GAAG,CAAA,WAAA,CAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KACnF;AAED,IAAA,oBAAoB,CAAC,EAAU,EAAA;QAC7B,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAe,GAAG,GAAG,CAAA,aAAA,EAAgB,EAAE,CAAe,aAAA,CAAA,CAAC,CAAC,CAAC,CAAC;KACxG;AAED,IAAA,sBAAsB,CAAC,EAAU,EAAA;QAC/B,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAe,GAAG,GAAG,CAAA,UAAA,EAAa,EAAE,CAAe,aAAA,CAAA,CAAC,CAAC,CAAC,CAAC;KACrG;AAED,IAAA,oBAAoB,CAAC,EAAU,EAAA;QAC7B,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAe,GAAG,GAAG,CAAA,cAAA,EAAiB,EAAE,CAAe,aAAA,CAAA,CAAC,CAAC,CAAC,CAAC;KACzG;AAED,IAAA,wBAAwB,CAAC,EAAU,EAAA;QACjC,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAe,GAAG,GAAG,CAAA,iBAAA,EAAoB,EAAE,CAAe,aAAA,CAAA,CAAC,CAAC,CAAC,CAAC;KAC5G;AAED,IAAA,QAAQ,CAAC,EAAU,EAAA;QACjB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAQ,GAAG,GAAG,CAAA,gBAAA,EAAmB,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC;KACvF;AAED,IAAA,SAAS,CAAC,KAAY,EAAA;AACpB,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,GAAG,KAAK;AACR,YAAA,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACrF,CAAC;QACF,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAO,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,YAAA,CAAc,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;KACtG;IAED,qBAAqB,CAAC,OAAe,EAAE,SAAoB,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CACnD,QAAQ,CAAC,CAAC,GAAG,KACX,IAAI,CAAC,UAAU,CAAC,GAAG,CAAO,SAAS,CAAC,GAAG,GAAG,CAAA,gBAAA,EAAmB,OAAO,CAAA,UAAA,CAAY,CAAC,EAAE;AACjF,YAAA,GAAG,SAAS;AACZ,YAAA,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE;SAC1B,CAAC,CACH,CACF,CAAC;KACH;AAED,IAAA,WAAW,CAAC,EAAU,EAAA;QACpB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAO,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,gBAAA,EAAmB,EAAE,CAAA,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACpG;IAED,uBAAuB,CAAC,OAAe,EAAE,MAAc,EAAA;QACrD,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CACH,QAAQ,CAAC,CAAC,GAAG,KACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAO,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,gBAAA,EAAmB,OAAO,CAAA,cAAA,EAAiB,MAAM,CAAA,CAAE,CAAC,CAAC,CACnG,CACF,CAAC;KACL;AAED,IAAA,YAAY,CAAC,QAAkB,EAAA;QAC7B,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAO,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,iBAAA,CAAmB,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;KACvG;IAED,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAa,CAAG,EAAA,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC7E;IAED,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAgB,CAAG,EAAA,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;KAChF;AAED,IAAA,QAAQ,CAAC,IAAU,EAAA;QACjB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAO,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,MAAA,CAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KACzF;AAED,IAAA,gBAAgB,CAAC,aAAkC,EAAA;QACjD,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAO,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,kBAAA,CAAoB,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;KAC9G;IAED,oBAAoB,GAAA;QAClB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAkB,CAAG,EAAA,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;KAC9F;AAED,IAAA,gBAAgB,CAAC,EAAU,EAAA;QACzB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAgB,GAAG,GAAG,CAAA,sBAAA,EAAyB,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC;KACrG;AAED,IAAA,mBAAmB,CAAC,EAAU,EAAA;QAC5B,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAgB,GAAG,GAAG,CAAA,sBAAA,EAAyB,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC;KACxG;IAED,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAW,CAAG,EAAA,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;KACpF;8GA3MU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAe,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAf,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCZY,gBAAgB,CAAA;AAmJ3B,IAAA,WAAA,CACU,QAAiB,EACjB,OAAqB,EACrB,KAAiB,EACjB,gBAAkC,EAAA;QAHlC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;QACrB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAtJ5C,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,MAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,EACtC,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAC9B,GAAG,CAAC,CAAC,KAAK,KAAK,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAChE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjF,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAC,MACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAC9C,GAAG,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CACjE,CACF,CAAC;QAEF,IAAiB,CAAA,iBAAA,GAAG,YAAY,CAAC,MAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EACzC,SAAS,CAAC,CAAC,MAAM,KAAI;AACnB,YAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACnF,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC;AAC9E,YAAA,MAAM,yBAAyB,GAAG,gBAAgB,CAAC,0BAA0B,CAAC;AAC5E,gBAAA,SAAS,EAAE;oBACT,QAAQ,EAAE,yBAAyB,CAAC,EAAE;AACtC,oBAAA,GAAG,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC;AACnC,oBAAA,QAAQ,EAAE;AACR,wBAAA,CAAC,yBAAyB,CAAC,EAAE,GAAG,yBAAyB;AAC1D,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;SACrD,CAAC,CACH,CACF,CAAC;QAEF,IAAoC,CAAA,oCAAA,GAAG,YAAY,CAAC,MAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,mCAAmC,CAAC,EAC5D,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5G,OAAO,gBAAgB,CAAC,yBAAyB,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;SACxF,CAAC,CACH,CACF,CAAC;QAEF,IAAqC,CAAA,qCAAA,GAAG,YAAY,CAAC,MACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,oCAAoC,CAAC,EAC7D,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CACvE,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,QAAQ,CAChB,CAAC;YACF,OAAO,gBAAgB,CAAC,yBAAyB,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,CAAC;SACzF,CAAC,CACH,CACF,CAAC;QAEF,IAAkC,CAAA,kCAAA,GAAG,YAAY,CAAC,MAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,iCAAiC,CAAC,EAC1D,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChF,OAAO,gBAAgB,CAAC,yBAAyB,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;SAChF,CAAC,CACH,CACF,CAAC;QAEF,IAAkC,CAAA,kCAAA,GAAG,YAAY,CAAC,MAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,EAClD,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,OAAO,gBAAgB,CAAC,iCAAiC,CAAC;AACxD,gBAAA,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;AAChC,gBAAA,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ;AACpC,aAAA,CAAC,CAAC;SACJ,CAAC,CACH,CACF,CAAC;QAEF,IAAwC,CAAA,wCAAA,GAAG,YAAY,CAAC,MACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,uCAAuC,CAAC,EAChE,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,OAAO,gBAAgB,CAAC,+BAA+B,CAAC;gBACtD,WAAW,EAAE,MAAM,CAAC,UAAU;AAC/B,aAAA,CAAC,CAAC;SACJ,CAAC,CACH,CACF,CAAC;QAEF,IAAiB,CAAA,iBAAA,GAAG,YAAY,CAAC,MAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EACzC,cAAc,CACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAClD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAC7D,EACD,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,KAAI;AACtC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,IAAK,EAAE,UAAU,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAC5C,GAAG,CAAC,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAC9E,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAChF,CAAC;SACH,CAAC,CACH,CACF,CAAC;QAEF,IAAoB,CAAA,oBAAA,GAAG,YAAY,CAAC,MAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,EAC5C,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAC9G,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,MAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,EACtC,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CACtC,GAAG,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAC9D,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjF,CACF,CACF,CACF,CAAC;QAEF,IAAqB,CAAA,qBAAA,GAAG,YAAY,CAAC,MACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAC7C,SAAS,CAAC,CAAC,MAAM,KAAI;AACnB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9E,YAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrF,YAAA,MAAM,yBAAyB,GAAG,gBAAgB,CAAC,0BAA0B,CAAC;gBAC5E,SAAS,EAAE,QAAQ,CAAC,UAAU;AAC/B,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;SACrD,CAAC,CACH,CACF,CAAC;KAOE;8GAxJO,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAe,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAApD,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAqD,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;MCKE,iBAAiB,CAAA;AA0P5B,IAAA,WAAA,CACU,QAAiB,EACjB,YAA0B,EAC1B,SAA2B,EAC3B,OAAqB,EAAA;QAHrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;QA7P/B,IAAc,CAAA,cAAA,GAAG,YAAY,CAAC,MAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,EACvC,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SACxG,CAAC,CACH,CACF,CAAC;QAEF,IAAU,CAAA,UAAA,GAAG,YAAY,CAAC,MACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,EACnC,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,gBAAA,MAAM,IAAI,GAAyB;AACjC,oBAAA,KAAK,EAAE,2BAA2B;AAClC,oBAAA,OAAO,EAAE,4CAA4C;oBACrD,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;iBACtD,CAAC;gBACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,gBAAA,OAAO,EAAE,CAAC;aACX;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CACnD,GAAG,CAAC,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EACtE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC9E,CAAC;SACH,CAAC,CACH,CACF,CAAC;QAEF,IAAe,CAAA,eAAA,GAAG,YAAY,CAAC,MAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,EACxC,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SAC3F,CAAC,CACH,CACF,CAAC;QAEF,IAAiB,CAAA,iBAAA,GAAG,YAAY,CAAC,MAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAC1C,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SAC3F,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAC,MACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,EAC/C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAC5E,GAAG,CAAC,MAAM,iBAAiB,CAAC,4BAA4B,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAClF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC1F,CACF,CACF,CACF,CAAC;QAEF,IAA6B,CAAA,6BAAA,GAAG,YAAY,CAAC,MAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,EACtD,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SAC3F,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,MAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,EACrC,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAC,MAAM,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EACxE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAChF,CACF,CACF,CACF,CAAC;QAEF,IAAmB,CAAA,mBAAA,GAAG,YAAY,CAAC,MACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAC5C,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO;gBACL,iBAAiB,CAAC,aAAa,EAAE;gBACjC,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;AACpD,4BAAA,KAAK,EAAE,KAAK;AACZ,4BAAA,IAAI,EAAE,YAAY;AAClB,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,SAAS;AACrB,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACF,qBAAA;iBACF,CAAC;gBACF,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aACnC,CAAC;SACH,CAAC,CACH,CACF,CAAC;QAEF,IAAwB,CAAA,wBAAA,GAAG,YAAY,CAAC,MACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,EACjD,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAC3E,GAAG,CAAC,MACF,iBAAiB,CAAC,8BAA8B,CAAC;YAC/C,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CACH,EACD,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC5F,CACF,CACF,CACF,CAAC;QAEF,IAA+B,CAAA,+BAAA,GAAG,YAAY,CAAC,MAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,EACxD,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO;gBACL,iBAAiB,CAAC,aAAa,EAAE;gBACjC,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACvD,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,IAAI,EAAE,YAAY;AACnB,yBAAA;AACD,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;AAC1D,4BAAA,KAAK,EAAE,KAAK;AACZ,4BAAA,IAAI,EAAE,YAAY;AAClB,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,SAAS;AACrB,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACF,qBAAA;iBACF,CAAC;gBACF,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aACnC,CAAC;SACH,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,MAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,EACtC,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAClD,GAAG,CAAC,MAAM,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,EAClD,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjF,CACF,CACF,CACF,CAAC;QAEF,IAAoB,CAAA,oBAAA,GAAG,YAAY,CAAC,MAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,EAC7C,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,OAAO,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SAC9C,CAAC,CACH,CACF,CAAC;QAEF,IAAK,CAAA,KAAA,GAAG,YAAY,CAAC,MACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAC9B,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACpD,CAAC,CACH,CACF,CAAC;QAEF,IAAqB,CAAA,qBAAA,GAAG,YAAY,CAClC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAC9C,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,MAAM,IAAI,GAAyB;AACjC,gBAAA,KAAK,EAAE,8CAA8C;AACrD,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAChF,qBAAA;AACD,oBAAA,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE;AACtC,iBAAA;aACF,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;SAC1D,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAyB,CAAA,yBAAA,GAAG,YAAY,CACtC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,EAClD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,MAAM,IAAI,GAAyB;AACjC,gBAAA,KAAK,EAAE,0CAA0C;AACjD,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,OAAO,EAAE;4BACP,iBAAiB,CAAC,uBAAuB,CAAC;gCACxC,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gCACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,WAAW,EAAE,MAAM,CAAC,WAAW;6BAChC,CAAC;AACH,yBAAA;AACF,qBAAA;AACD,oBAAA;AACE,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,KAAK,EAAE,mBAAmB;AAC3B,qBAAA;AACF,iBAAA;aACF,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;SAC1D,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAiB,CAAA,iBAAA,GAAG,YAAY,CAAC,MAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAC3C,QAAQ,CAAC,MAAK;YACZ,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAC/C,GAAG,CAAC,CAAC,cAAc,KAAK,iBAAiB,CAAC,wBAAwB,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,EACvF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACtF,CAAC;SACH,CAAC,CACH,CACF,CAAC;KAOE;8GA/PO,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvC,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;MCLE,kBAAkB,CAAA;AAkF7B,IAAA,WAAA,CACU,QAAiB,EACjB,OAAqB,EACrB,MAAc,EAAA;QAFd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AApFxB,QAAA,IAAA,CAAA,iBAAiB,GAAG,YAAY,CAAC,MAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAC3C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,IAAI,CACjC,GAAG,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EACrE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC/E,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,MAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAC1C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAC,MAAM,kBAAkB,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAC7E,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC9E,CACF,CACF,CACF,CAAC;QAEF,IAAuB,CAAA,uBAAA,GAAG,YAAY,CAAC,MACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,EACjD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SACrD,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAAC,MAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAC5C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EACpE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAChF,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAAC,MAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAC5C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,MAAM,kBAAkB,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EAC1G,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAChF,CACF,CACF,CACF,CAAC;QAEF,IAAyB,CAAA,yBAAA,GAAG,YAAY,CAAC,MACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,EACnD,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO;gBACL,kBAAkB,CAAC,gBAAgB,EAAE;gBACrC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;gBACzD,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACvD,4BAAA,KAAK,EAAE,KAAK;AACZ,4BAAA,IAAI,EAAE,YAAY;AAClB,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,aAAa;AACzB,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACF,qBAAA;iBACF,CAAC;aACH,CAAC;SACH,CAAC,CACH,CACF,CAAC;KAME;8GAtFO,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAtC,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAApD,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAlB,kBAAkB,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;MCME,aAAa,CAAA;AA4GxB,IAAA,WAAA,CACU,QAAiB,EACjB,YAA0B,EAC1B,SAA2B,EAAA;QAF3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QA9GrC,IAAc,CAAA,cAAA,GAAG,YAAY,CAAC,MAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,EACnC,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SACxG,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,MACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAC/B,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAC5C,GAAG,CAAC,MAAM,aAAa,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAClE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjE,CACF,CACF,CACF,CAAC;QAEF,IAAiB,CAAA,iBAAA,GAAG,YAAY,CAAC,MAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,EACtC,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SACrD,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,MAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EACjC,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAC9C,GAAG,CAAC,MAAM,aAAa,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EACpE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjE,CACF,CACF,CACF,CAAC;QAEF,IAAmB,CAAA,mBAAA,GAAG,YAAY,CAAC,MACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,EACxC,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SACrD,CAAC,CACH,CACF,CAAC;QAEF,IAAqB,CAAA,qBAAA,GAAG,YAAY,CAClC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAC1C,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,MAAM,IAAI,GAAyB;AACjC,gBAAA,KAAK,EAAE,wCAAwC;AAC/C,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,KAAK,EAAE,qBAAqB;wBAC5B,OAAO,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5E,qBAAA;AACD,oBAAA;AACE,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,KAAK,EAAE,WAAW;AACnB,qBAAA;AACF,iBAAA;aACF,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;SAC1D,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,MAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EACjC,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAC,MAAM,aAAa,CAAC,kBAAkB,EAAE,CAAC,EAC7C,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjE,CACF,CACF,CACF,CAAC;QAEF,IAAmB,CAAA,mBAAA,GAAG,YAAY,CAAC,MACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,EACxC,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SAC3C,CAAC,CACH,CACF,CAAC;QAEF,IAA+B,CAAA,+BAAA,GAAG,YAAY,CAAC,MAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,EACxC,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,OAAO,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;SACvD,CAAC,CACH,CACF,CAAC;KAME;8GAhHO,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAf,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAb,aAAa,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;MCJE,YAAY,CAAA;AAkCvB,IAAA,WAAA,CACU,QAAiB,EACjB,OAAqB,EACrB,MAAc,EAAA;QAFd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AApCxB,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,MACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAC9B,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAC1B,GAAG,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EACxD,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAClE,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,MACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAC7B,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CACrC,GAAG,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EACpE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjE,CACF,CACF,CACF,CAAC;QAEF,IAAgB,CAAA,gBAAA,GAAG,YAAY,CAAC,MAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,EACpC,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SACrD,CAAC,CACH,CACF,CAAC;KAME;8GAtCO,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAe,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAApD,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAZ,YAAY,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;MCGE,yBAAyB,CAAA;AACpC,IAAA,WAAA,CACU,QAAiB,EACjB,OAAqB,EACrB,MAAc,EAAA;QAFd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAGxB,QAAA,IAAA,CAAA,iBAAiB,GAAG,YAAY,CAAC,MAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,EACtC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,EACpD,GAAG,CAAC,CAAC,IAAqB,KAAK,yBAAyB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAC1E,UAAU,CAAC,CAAC,KAAU,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC3E,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAAC,MAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,EACtC,SAAS,CAAC,CAAC,KAAwC,KAAK,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EACtG,GAAG,CAAC,MAAK;YACP,yBAAyB,CAAC,IAAI,EAAE,CAAC;YACjC,yBAAyB,CAAC,gBAAgB,EAAE,CAAC;AAC7C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjE,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3E,CAAC,EACF,UAAU,CAAC,CAAC,KAAU,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC3E,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,oBAAoB,GAAG,YAAY,CAAC,MAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,EACxC,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAChD,QAAQ,CAAC,MAAK;YACZ,OAAO;gBACL,yBAAyB,CAAC,IAAI,EAAE;gBAChC,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;gBACzD,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACvD,4BAAA,KAAK,EAAE,KAAK;AACZ,4BAAA,IAAI,EAAE,YAAY;AAClB,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,gBAAgB;AAC5B,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACF,qBAAA;iBACF,CAAC;aACH,CAAC;SACH,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACtE,CACF,CACF,CACF,CAAC;QAEF,IAAqB,CAAA,qBAAA,GAAG,YAAY,CAAC,MACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,EACtD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SACrD,CAAC,CACH,CACF,CAAC;KA7DE;8GALO,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAApD,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;;MCCE,wBAAwB,CAAA;AA4EnC,IAAA,WAAA,CACU,QAAiB,EACjB,YAA0B,EAC1B,KAAiB,EACjB,MAAc,EAAA;QAHd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AA/ExB,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,MAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,EACxD,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAClD,GAAG,CAAC,CAAC,QAAQ,KAAK,wBAAwB,CAAC,8BAA8B,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EACxF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,wBAAwB,CAAC,8BAA8B,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACnG,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,YAAY,CAAC,MAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,EACjD,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAClD,GAAG,CAAC,CAAC,QAAQ,KAAK,wBAAwB,CAAC,uBAAuB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EACtG,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC5F,CACF,CACF,CACF,CAAC;QAEF,IAAoB,CAAA,oBAAA,GAAG,YAAY,CAAC,MAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,EACxD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SACrD,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,MAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAC/C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,MAAM,wBAAwB,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EACxF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC1F,CACF,CACF,CACF,CAAC;QAEF,IAAsB,CAAA,sBAAA,GAAG,YAAY,CAAC,MACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,EACtD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,eAAe,CAAC,eAAe,EAAE,CAAC;SAC1C,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,MAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAC/C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,MAAM,wBAAwB,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,EACxF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC1F,CACF,CACF,CACF,CAAC;QAEF,IAAsB,CAAA,sBAAA,GAAG,YAAY,CAAC,MACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,EACtD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,eAAe,CAAC,eAAe,EAAE,CAAC;SAC1C,CAAC,CACH,CACF,CAAC;KAOE;8GAjFO,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAApD,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;MCEE,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAJjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAE7B,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,aADzG,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAFtB,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAExG,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,wBAAwB,CAAC;oBACxC,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,CAAC;AACrH,iBAAA,CAAA;;;MCFY,iBAAiB,CAAA;AA8C5B,IAAA,WAAA,CACU,QAAiB,EACjB,OAAqB,EACrB,MAAc,EAAA;QAFd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAhDxB,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,MAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,EACxC,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,CAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAClE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC5E,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,MAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,EACvC,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAC/C,GAAG,CAAC,MAAM,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAC1E,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC3E,CACF,CACF,CACF,CAAC;QAEF,IAAqB,CAAA,qBAAA,GAAG,YAAY,CAAC,MACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAC9C,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SACrD,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,MAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,EACzC,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CACvC,GAAG,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EACjE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC7E,CACF,CACF,CACF,CAAC;KAME;8GAlDO,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAa,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAApD,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;MCDE,gBAAgB,CAAA;IAa3B,WACU,CAAA,QAAiB,EACjB,YAA0B,EAAA;QAD1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAdpC,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,MACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAClC,QAAQ,CAAC,CAAC,CAAC,KACT,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,CAC/B,GAAG,CAAC,CAAC,KAAK,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAC5D,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACtE,CACF,CACF,CACF,CAAC;KAKE;8GAhBO,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAhB,gBAAgB,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;ACNJ,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,gBAAgB;AACvB,YAAA,eAAe,EAAE,4BAA4B;AAC7C,YAAA,cAAc,EAAE,aAAa;AAC7B,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,QAAQ,EAAE,mBAAmB;AAC7B,YAAA,YAAY,EAAE,eAAe;AAC7B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,QAAQ,EAAE,wBAAwB;AAClC,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,SAAS,EAAE,2CAA2C;AACtD,YAAA,SAAS,EAAE,uCAAuC;AAClD,YAAA,YAAY,EAAE,iDAAiD;AAC/D,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,WAAW,EAAE,4DAA4D;AACzE,YAAA,gBAAgB,EAAE,oBAAoB;AACtC,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,6BAA6B,EAC3B,yGAAyG;AAC3G,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,UAAU,EAAE;AACV,gBAAA,YAAY,EAAE,eAAe;AAC7B,gBAAA,eAAe,EAAE,kBAAkB;AACnC,gBAAA,UAAU,EAAE,aAAa;AAC1B,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,YAAY,EAAE,cAAc;AAC7B,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,QAAQ,EAAE,2BAA2B;AACrC,gBAAA,MAAM,EAAE,gBAAgB;AACxB,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,WAAW,EAAE,cAAc;AAC3B,gBAAA,IAAI,EAAE,qCAAqC;AAC3C,gBAAA,UAAU,EAAE,oCAAoC;AAChD,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,KAAK,EAAE,0BAA0B;AACjC,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,QAAQ,EAAE,kEAAkE;AAC5E,gBAAA,UAAU,EAAE,kCAAkC;AAC9C,gBAAA,SAAS,EAAE,gCAAgC;AAC3C,gBAAA,YAAY,EAAE,kBAAkB;AAChC,gBAAA,WAAW,EAAE,0BAA0B;AACvC,gBAAA,WAAW,EAAE,iCAAiC;AAC9C,gBAAA,UAAU,EAAE,wBAAwB;AACpC,gBAAA,WAAW,EAAE,sBAAsB;AACpC,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,YAAY;AACnB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,WAAW,EAAE,oBAAoB;AACjC,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,eAAe,EAAE,cAAc;AAC/B,gBAAA,YAAY,EAAE,YAAY;AAC1B,gBAAA,gBAAgB,EAAE,gBAAgB;AAClC,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,gBAAgB,EAAE,gBAAgB;AAClC,gBAAA,KAAK,EAAE,0BAA0B;AACjC,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,MAAM,EAAE,aAAa;AACtB,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,GAAG,EAAE,sBAAsB;AAC3B,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,gCAAgC;AACvC,gBAAA,SAAS,EAAE,yBAAyB;AACpC,gBAAA,gBAAgB,EAAE,sEAAsE;AACzF,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,UAAU;AACjB,gBAAA,GAAG,EAAE,qBAAqB;AAC1B,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,qBAAqB;AAClC,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,SAAS,EAAE,YAAY;AACvB,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,WAAW,EAAE,cAAc;AAC3B,gBAAA,MAAM,EAAE,iBAAiB;AAC1B,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,cAAc,EAAE,gFAAgF;AAChG,gBAAA,eAAe,EAAE,qEAAqE;AACtF,gBAAA,eAAe,EAAE;AACf,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,WAAW,EAAE,6BAA6B;AAC1C,oBAAA,IAAI,EAAE,sBAAsB;AAC7B,iBAAA;AACD,gBAAA,eAAe,EAAE;AACf,oBAAA,IAAI,EAAE,qBAAqB;AAC3B,oBAAA,WAAW,EAAE,oCAAoC;AACjD,oBAAA,IAAI,EAAE,6BAA6B;AACpC,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,sBAAsB;AAC9B,iBAAA;AACD,gBAAA,GAAG,EAAE;AACH,oBAAA,KAAK,EAAE,0BAA0B;AAClC,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EACJ,iLAAiL;AACnL,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,cAAc,EAAE,iBAAiB;AACjC,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,MAAM,EAAE,gBAAgB;AACxB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,cAAc,EAAE,kEAAkE;AAClF,gBAAA,GAAG,EAAE;AACH,oBAAA,KAAK,EAAE,sBAAsB;AAC9B,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,gBAAgB;AACxB,iBAAA;AACD,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,QAAQ,EAAE,oGAAoG;AAC9G,gBAAA,QAAQ,EAAE;AACR,oBAAA,SAAS,EAAE,WAAW;AACvB,iBAAA;AACD,gBAAA,MAAM,EAAE,eAAe;AACxB,aAAA;AACD,YAAA,YAAY,EAAE;AACZ,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,YAAY,EAAE,eAAe;AAC7B,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,GAAG,EAAE,sBAAsB;AAC3B,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,IAAI,EAAE,mBAAmB;AAC1B,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,WAAW,EAAE,aAAa;AAC1B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,YAAY,EAAE,QAAQ;AACtB,oBAAA,cAAc,EAAE,UAAU;AAC1B,oBAAA,SAAS,EAAE,WAAW;AACtB,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,YAAY,EAAE,UAAU;AACxB,oBAAA,aAAa,EAAE,WAAW;AAC1B,oBAAA,YAAY,EAAE,+CAA+C;AAC7D,oBAAA,WAAW,EAAE,wBAAwB;AACrC,oBAAA,YAAY,EAAE,yBAAyB;AACvC,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,GAAG,EAAE,yBAAyB;AAC9B,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,IAAI,EAAE,mBAAmB;AAC1B,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,GAAG,EAAE,8BAA8B;AACnC,gBAAA,IAAI,EAAE,wBAAwB;AAC9B,gBAAA,IAAI,EAAE,iCAAiC;AACvC,gBAAA,SAAS,EAAE,0BAA0B;AACrC,gBAAA,YAAY,EAAE,iDAAiD;AAC/D,gBAAA,UAAU,EAAE,mDAAmD;AAC/D,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,gBAAgB;AACxB,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,2BAA2B;AAClC,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,UAAU,EAAE,sDAAsD;AAClE,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,GAAG,EAAE,2BAA2B;AAChC,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,MAAM,EAAE,uBAAuB;AAC/B,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,QAAQ,EAAE,gDAAgD;AAC1D,gBAAA,IAAI,EAAE,4BAA4B;AAClC,gBAAA,KAAK,EAAE,yBAAyB;AAChC,gBAAA,SAAS,EAAE,4BAA4B;AACvC,gBAAA,QAAQ,EAAE,oBAAoB;AAC9B,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,SAAS,EAAE,sBAAsB;AACjC,gBAAA,UAAU,EAAE;AACV,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,OAAO,EAAE,YAAY;AACrB,oBAAA,gBAAgB,EAAE,qBAAqB;AACvC,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,cAAc,EAAE,mBAAmB;AACnC,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;AACD,gBAAA,uBAAuB,EACrB,+IAA+I;AACjJ,gBAAA,yBAAyB,EAAE,iCAAiC;AAC5D,gBAAA,yBAAyB,EAAE,8CAA8C;AACzE,gBAAA,aAAa,EAAE,gBAAgB;AAC/B,gBAAA,aAAa,EAAE,8BAA8B;AAC7C,gBAAA,YAAY,EAAE,cAAc;AAC5B,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,UAAU,EAAE;AACV,oBAAA,GAAG,EAAE,8BAA8B;AACnC,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,aAAa,EAAE,gBAAgB;AAC/B,oBAAA,IAAI,EAAE,uBAAuB;AAC7B,oBAAA,WAAW,EAAE,aAAa;AAC1B,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,MAAM,EAAE,OAAO;AACf,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,WAAW,EAAE,cAAc;AAC5B,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,EAAE,eAAe;AACpB,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,UAAU,EAAE,oBAAoB;AAChC,gBAAA,aAAa,EAAE,YAAY;AAC3B,gBAAA,aAAa,EAAE,gBAAgB;AAC/B,gBAAA,SAAS,EAAE,OAAO;AAClB,gBAAA,oBAAoB,EAAE,qCAAqC;AAC3D,gBAAA,SAAS,EAAE;AACT,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,GAAG,EAAE,KAAK;AACV,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,UAAU,EAAE,cAAc;AAC1B,oBAAA,UAAU,EAAE,MAAM;AAClB,oBAAA,eAAe,EAAE,aAAa;AAC9B,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,YAAY,EAAE,gBAAgB;AAC9B,oBAAA,WAAW,EAAE;AACX,wBAAA,OAAO,EAAE,yDAAyD;AAClE,wBAAA,IAAI,EAAE,+DAA+D;AACrE,wBAAA,OAAO,EAAE,sDAAsD;AAC/D,wBAAA,MAAM,EACJ,8HAA8H;AAChI,wBAAA,OAAO,EACL,gIAAgI;AAClI,wBAAA,OAAO,EAAE,4BAA4B;AACrC,wBAAA,GAAG,EAAE,6CAA6C;AAClD,wBAAA,KAAK,EAAE,kGAAkG;AACzG,wBAAA,UAAU,EACR,kHAAkH;AACpH,wBAAA,UAAU,EACR,iGAAiG;AACnG,wBAAA,eAAe,EACb,6IAA6I;AAC/I,wBAAA,OAAO,EACL,oGAAoG;AACtG,wBAAA,YAAY,EACV,yHAAyH;AAC5H,qBAAA;AACF,iBAAA;AACD,gBAAA,UAAU,EAAE;AACV,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,MAAM,EAAE,yBAAyB;AAClC,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,KAAK,EAAE,oBAAoB;AAC3B,oBAAA,gBAAgB,EAAE,mBAAmB;AACrC,oBAAA,kBAAkB,EAAE,+BAA+B;AACnD,oBAAA,YAAY,EAAE,kBAAkB;AAChC,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,MAAM,EAAE,kBAAkB;AAC1B,oBAAA,UAAU,EAAE,aAAa;AACzB,oBAAA,YAAY,EAAE,yBAAyB;AACvC,oBAAA,iBAAiB,EAAE;AACjB,wBAAA,QAAQ,EAAE,eAAe;AACzB,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,UAAU,EAAE,gBAAgB;AAC5B,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,KAAK,EAAE,OAAO;AACd,wBAAA,GAAG,EAAE,KAAK;AACX,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,YAAY,EAAE,eAAe;AAC7B,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,UAAU,EAAE,aAAa;AACzB,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,QAAQ;AAChB,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,IAAI,EAAE,2BAA2B;AACjC,gBAAA,GAAG,EAAE,mBAAmB;AACxB,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,UAAU,EAAE,yBAAyB;AACrC,gBAAA,MAAM,EAAE,6CAA6C;AACrD,gBAAA,gBAAgB,EAAE,mBAAmB;AACrC,gBAAA,SAAS,EAAE,gBAAgB;AAC3B,gBAAA,kBAAkB,EAAE,iDAAiD;AACtE,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,0BAA0B;AAChC,gBAAA,GAAG,EAAE,kCAAkC;AACvC,gBAAA,WAAW,EAAE,uBAAuB;AACpC,gBAAA,eAAe,EAAE,kBAAkB;AACnC,gBAAA,gBAAgB,EAAE,4BAA4B;AAC9C,gBAAA,oBAAoB,EAAE,uBAAuB;AAC7C,gBAAA,YAAY,EAAE,eAAe;AAC7B,gBAAA,kBAAkB,EAAE,sBAAsB;AAC3C,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,KAAK,EAAE,WAAW;AACnB,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,WAAW,EAAE;AACX,oBAAA,OAAO,EACL,uKAAuK;AACzK,oBAAA,OAAO,EACL,sPAAsP;AACzP,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,OAAO,EAAE,eAAe;AACzB,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,YAAY,EAAE,yBAAyB;AACvC,gBAAA,aAAa,EAAE;AACb,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,YAAY;AACpB,wBAAA,cAAc,EAAE,6CAA6C;AAC7D,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,QAAQ,EAAE,YAAY;AACtB,wBAAA,MAAM,EAAE,YAAY;AACpB,wBAAA,GAAG,EAAE,8GAA8G;AACpH,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,MAAM,EAAE,iBAAiB;AACzB,wBAAA,cAAc,EAAE,kDAAkD;AAClE,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,QAAQ,EAAE,iBAAiB;AAC3B,wBAAA,MAAM,EAAE,iBAAiB;AACzB,wBAAA,GAAG,EAAE,mHAAmH;AACzH,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,OAAO,EAAE,0BAA0B;AACnC,YAAA,IAAI,EAAE,uBAAuB;AAC7B,YAAA,IAAI,EAAE,YAAY;AACnB,SAAA;AACF,KAAA;CACF;;ACzaM,MAAM,cAAc,GAAG;AAC5B,IAAA,MAAM,EAAE;AACN,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,gBAAgB;AACvB,YAAA,eAAe,EAAE,+BAA+B;AAChD,YAAA,cAAc,EAAE,aAAa;AAC7B,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE,mBAAmB;AAC3B,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,QAAQ,EAAE,sBAAsB;AAChC,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,SAAS,EAAE,wCAAwC;AACnD,YAAA,SAAS,EAAE,yCAAyC;AACpD,YAAA,YAAY,EAAE,yDAAyD;AACvE,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,WAAW,EAAE,0EAA0E;AACvF,YAAA,gBAAgB,EAAE,6BAA6B;AAC/C,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,6BAA6B,EAC3B,kGAAkG;AACpG,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,UAAU,EAAE;AACV,gBAAA,YAAY,EAAE,qBAAqB;AACnC,gBAAA,eAAe,EAAE,oBAAoB;AACrC,gBAAA,UAAU,EAAE,kBAAkB;AAC/B,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,QAAQ,EAAE,kBAAkB;AAC5B,gBAAA,SAAS,EAAE,kBAAkB;AAC7B,gBAAA,WAAW,EAAE,iBAAiB;AAC9B,gBAAA,YAAY,EAAE,iBAAiB;AAChC,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,QAAQ,EAAE,0BAA0B;AACpC,gBAAA,MAAM,EAAE,0BAA0B;AAClC,gBAAA,QAAQ,EAAE,aAAa;AACvB,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,WAAW,EAAE,cAAc;AAC3B,gBAAA,IAAI,EAAE,0CAA0C;AAChD,gBAAA,UAAU,EAAE,qCAAqC;AACjD,gBAAA,OAAO,EAAE,oBAAoB;AAC7B,gBAAA,KAAK,EAAE,8BAA8B;AACrC,gBAAA,IAAI,EAAE,iCAAiC;AACvC,gBAAA,QAAQ,EAAE,6EAA6E;AACvF,gBAAA,UAAU,EAAE,oCAAoC;AAChD,gBAAA,SAAS,EAAE,qCAAqC;AAChD,gBAAA,YAAY,EAAE,kBAAkB;AAChC,gBAAA,WAAW,EAAE,wBAAwB;AACrC,gBAAA,WAAW,EAAE,oDAAoD;AACjE,gBAAA,UAAU,EAAE,wCAAwC;AACpD,gBAAA,WAAW,EAAE,sCAAsC;AACpD,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,EAAE,eAAe;AACpB,gBAAA,MAAM,EAAE,gBAAgB;AACxB,gBAAA,MAAM,EAAE,OAAO;AACf,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,kBAAkB;AACzB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,WAAW,EAAE,uBAAuB;AACpC,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,eAAe,EAAE,oBAAoB;AACrC,gBAAA,YAAY,EAAE,aAAa;AAC3B,gBAAA,gBAAgB,EAAE,oBAAoB;AACtC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,OAAO,EAAE,oBAAoB;AAC7B,gBAAA,UAAU,EAAE,WAAW;AACvB,gBAAA,QAAQ,EAAE,aAAa;AACvB,gBAAA,MAAM,EAAE,cAAc;AACtB,gBAAA,gBAAgB,EAAE,mBAAmB;AACrC,gBAAA,KAAK,EAAE,sBAAsB;AAC7B,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,MAAM,EAAE,mBAAmB;AAC5B,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,GAAG,EAAE,2BAA2B;AAChC,gBAAA,IAAI,EAAE,sBAAsB;AAC5B,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,4CAA4C;AACnD,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,gBAAgB,EAAE,kFAAkF;AACrG,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,GAAG,EAAE,sBAAsB;AAC3B,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,OAAO,EAAE,0BAA0B;AACnC,gBAAA,WAAW,EAAE,+BAA+B;AAC5C,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,SAAS,EAAE,kBAAkB;AAC7B,gBAAA,QAAQ,EAAE,6BAA6B;AACvC,gBAAA,WAAW,EAAE,wBAAwB;AACrC,gBAAA,MAAM,EAAE,oBAAoB;AAC7B,aAAA;AACD,YAAA,gBAAgB,EAAE;AAChB,gBAAA,KAAK,EAAE,oBAAoB;AAC3B,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,cAAc,EAAE,sFAAsF;AACtG,gBAAA,eAAe,EAAE,4EAA4E;AAC7F,gBAAA,eAAe,EAAE;AACf,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,WAAW,EAAE,oCAAoC;AACjD,oBAAA,IAAI,EAAE,6BAA6B;AACpC,iBAAA;AACD,gBAAA,eAAe,EAAE;AACf,oBAAA,IAAI,EAAE,2BAA2B;AACjC,oBAAA,WAAW,EAAE,0CAA0C;AACvD,oBAAA,IAAI,EAAE,mCAAmC;AAC1C,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,mCAAmC;AAC3C,iBAAA;AACD,gBAAA,GAAG,EAAE;AACH,oBAAA,KAAK,EAAE,yCAAyC;AACjD,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EACJ,mNAAmN;AACrN,gBAAA,KAAK,EAAE,iBAAiB;AACxB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,cAAc,EAAE,2BAA2B;AAC3C,gBAAA,EAAE,EAAE,aAAa;AACjB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,eAAe;AACvB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,cAAc,EAAE,uEAAuE;AACvF,gBAAA,GAAG,EAAE;AACH,oBAAA,KAAK,EAAE,yBAAyB;AACjC,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,4BAA4B;AACpC,iBAAA;AACD,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,MAAM,EAAE,OAAO;AACf,gBAAA,UAAU,EAAE,YAAY;AACxB,gBAAA,OAAO,EAAE,oCAAoC;AAC7C,gBAAA,QAAQ,EACN,4GAA4G;AAC9G,gBAAA,QAAQ,EAAE;AACR,oBAAA,SAAS,EAAE,kBAAkB;AAC9B,iBAAA;AACD,gBAAA,MAAM,EAAE,wBAAwB;AACjC,aAAA;AACD,YAAA,YAAY,EAAE;AACZ,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,YAAY,EAAE,oBAAoB;AAClC,gBAAA,KAAK,EAAE;AACL,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,GAAG,EAAE,sBAAsB;AAC3B,oBAAA,IAAI,EAAE,0BAA0B;AAChC,oBAAA,IAAI,EAAE,yBAAyB;AAChC,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,EAAE,EAAE,QAAQ;AACZ,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,WAAW,EAAE,aAAa;AAC1B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,YAAY,EAAE,OAAO;AACrB,oBAAA,cAAc,EAAE,SAAS;AACzB,oBAAA,SAAS,EAAE,2BAA2B;AACtC,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,YAAY,EAAE,YAAY;AAC1B,oBAAA,aAAa,EAAE,UAAU;AACzB,oBAAA,YAAY,EAAE,mEAAmE;AACjF,oBAAA,WAAW,EAAE,0CAA0C;AACvD,oBAAA,YAAY,EAAE,uCAAuC;AACrD,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,QAAQ,EAAE,wBAAwB;AACnC,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,oBAAoB;AAC3B,gBAAA,GAAG,EAAE,qCAAqC;AAC1C,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,IAAI,EAAE,gCAAgC;AACvC,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,GAAG,EAAE,uCAAuC;AAC5C,gBAAA,IAAI,EAAE,kCAAkC;AACxC,gBAAA,IAAI,EAAE,iCAAiC;AACvC,gBAAA,SAAS,EAAE,gCAAgC;AAC3C,gBAAA,YAAY,EAAE,kEAAkE;AAChF,gBAAA,UAAU,EAAE,0CAA0C;AACtD,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,uBAAuB;AAC/B,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,6BAA6B;AACpC,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,UAAU,EAAE,2CAA2C;AACvD,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,GAAG,EAAE,oCAAoC;AACzC,gBAAA,IAAI,EAAE,+BAA+B;AACrC,gBAAA,MAAM,EAAE,+BAA+B;AACvC,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,QAAQ,EAAE,yCAAyC;AACnD,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,KAAK,EAAE,kCAAkC;AACzC,gBAAA,SAAS,EAAE,2BAA2B;AACtC,gBAAA,QAAQ,EAAE,sBAAsB;AAChC,gBAAA,KAAK,EAAE,uBAAuB;AAC9B,gBAAA,SAAS,EAAE,0BAA0B;AACrC,gBAAA,UAAU,EAAE;AACV,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,OAAO,EAAE,gBAAgB;AACzB,oBAAA,gBAAgB,EAAE,wBAAwB;AAC1C,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,cAAc,EAAE,oBAAoB;AACpC,oBAAA,QAAQ,EAAE,wBAAwB;AACnC,iBAAA;AACD,gBAAA,uBAAuB,EACrB,iIAAiI;AACnI,gBAAA,yBAAyB,EAAE,0DAA0D;AACrF,gBAAA,yBAAyB,EAAE,qDAAqD;AAChF,gBAAA,aAAa,EAAE,aAAa;AAC5B,gBAAA,aAAa,EAAE,8CAA8C;AAC7D,gBAAA,YAAY,EAAE,cAAc;AAC5B,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,UAAU,EAAE;AACV,oBAAA,GAAG,EAAE,iBAAiB;AACtB,oBAAA,IAAI,EAAE,qBAAqB;AAC3B,oBAAA,IAAI,EAAE,sBAAsB;AAC5B,oBAAA,MAAM,EAAE,sBAAsB;AAC9B,oBAAA,IAAI,EAAE,uBAAuB;AAC7B,oBAAA,aAAa,EAAE,eAAe;AAC9B,oBAAA,WAAW,EAAE,aAAa;AAC1B,oBAAA,KAAK,EAAE,MAAM;AACb,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,WAAW,EAAE,aAAa;AAC3B,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,EAAE,8BAA8B;AACnC,gBAAA,GAAG,EAAE,mBAAmB;AACxB,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,UAAU,EAAE,6BAA6B;AACzC,gBAAA,aAAa,EAAE,WAAW;AAC1B,gBAAA,aAAa,EAAE,gBAAgB;AAC/B,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,oBAAoB,EAAE,mDAAmD;AACzE,gBAAA,SAAS,EAAE;AACT,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,IAAI,EAAE,oBAAoB;AAC1B,oBAAA,OAAO,EAAE,gBAAgB;AACzB,oBAAA,MAAM,EAAE,YAAY;AACpB,oBAAA,OAAO,EAAE,cAAc;AACvB,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,GAAG,EAAE,uBAAuB;AAC5B,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,UAAU,EAAE,cAAc;AAC1B,oBAAA,UAAU,EAAE,OAAO;AACnB,oBAAA,eAAe,EAAE,cAAc;AAC/B,oBAAA,OAAO,EAAE,UAAU;AACnB,oBAAA,YAAY,EAAE,iBAAiB;AAC/B,oBAAA,WAAW,EAAE;AACX,wBAAA,OAAO,EAAE,sEAAsE;AAC/E,wBAAA,IAAI,EAAE,yEAAyE;AAC/E,wBAAA,OAAO,EAAE,6DAA6D;AACtE,wBAAA,MAAM,EACJ,gKAAgK;AAClK,wBAAA,OAAO,EACL,8JAA8J;AAChK,wBAAA,OAAO,EAAE,4BAA4B;AACrC,wBAAA,GAAG,EAAE,wDAAwD;AAC7D,wBAAA,KAAK,EACH,qGAAqG;AACvG,wBAAA,UAAU,EACR,oHAAoH;AACtH,wBAAA,UAAU,EACR,wGAAwG;AAC1G,wBAAA,eAAe,EACb,4JAA4J;AAC9J,wBAAA,OAAO,EACL,wGAAwG;AAC1G,wBAAA,YAAY,EACV,iIAAiI;AACpI,qBAAA;AACF,iBAAA;AACD,gBAAA,UAAU,EAAE;AACV,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,MAAM,EAAE,kCAAkC;AAC3C,iBAAA;AACD,gBAAA,aAAa,EAAE;AACb,oBAAA,KAAK,EAAE,sBAAsB;AAC7B,oBAAA,gBAAgB,EAAE,8BAA8B;AAChD,oBAAA,kBAAkB,EAAE,4BAA4B;AAChD,oBAAA,YAAY,EAAE,wBAAwB;AACtC,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,MAAM,EAAE,uBAAuB;AAC/B,oBAAA,UAAU,EAAE,gBAAgB;AAC5B,oBAAA,YAAY,EAAE,gCAAgC;AAC9C,oBAAA,iBAAiB,EAAE;AACjB,wBAAA,QAAQ,EAAE,eAAe;AACzB,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,UAAU,EAAE,eAAe;AAC3B,wBAAA,SAAS,EAAE,cAAc;AACzB,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,GAAG,EAAE,MAAM;AACZ,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,YAAY,EAAE,wBAAwB;AACtC,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,UAAU,EAAE,gBAAgB;AAC5B,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,QAAQ,EAAE,aAAa;AACvB,gBAAA,KAAK,EAAE,QAAQ;AAChB,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,GAAG,EAAE,6BAA6B;AAClC,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,IAAI,EAAE,4BAA4B;AAClC,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,UAAU,EAAE,gCAAgC;AAC5C,gBAAA,MAAM,EAAE,+CAA+C;AACvD,gBAAA,gBAAgB,EAAE,sBAAsB;AACxC,gBAAA,SAAS,EAAE,oBAAoB;AAC/B,gBAAA,kBAAkB,EAAE,wDAAwD;AAC7E,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,GAAG,EAAE,yCAAyC;AAC9C,gBAAA,WAAW,EAAE,sBAAsB;AACnC,gBAAA,eAAe,EAAE,iBAAiB;AAClC,gBAAA,gBAAgB,EAAE,8BAA8B;AAChD,gBAAA,oBAAoB,EAAE,yBAAyB;AAC/C,gBAAA,YAAY,EAAE,kBAAkB;AAChC,gBAAA,kBAAkB,EAAE,kCAAkC;AACvD,aAAA;AACD,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,WAAW,EAAE,gBAAgB;AAC7B,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,MAAM,EAAE,mBAAmB;AAC3B,gBAAA,SAAS,EAAE,cAAc;AACzB,gBAAA,KAAK,EAAE,aAAa;AACrB,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,WAAW,EAAE;AACX,oBAAA,OAAO,EACL,2SAA2S;AAC7S,oBAAA,OAAO,EACL,2VAA2V;AAC9V,iBAAA;AACD,gBAAA,OAAO,EAAE;AACP,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,OAAO,EAAE,eAAe;AACzB,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,aAAa,EAAE;AACb,oBAAA,YAAY,EAAE,+CAA+C;AAC7D,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,qBAAqB;AAC7B,wBAAA,cAAc,EAAE,mDAAmD;AACnE,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,QAAQ,EAAE,qBAAqB;AAC/B,wBAAA,MAAM,EAAE,cAAc;AACtB,wBAAA,GAAG,EAAE,qIAAqI;AAC3I,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,MAAM,EAAE,4BAA4B;AACpC,wBAAA,cAAc,EAAE,6DAA6D;AAC7E,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,QAAQ,EAAE,2BAA2B;AACrC,wBAAA,MAAM,EAAE,oBAAoB;AAC5B,wBAAA,GAAG,EAAE,+IAA+I;AACrJ,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,SAAS,EAAE,sCAAsC;AACjD,YAAA,OAAO,EAAE,qCAAqC;AAC9C,YAAA,IAAI,EAAE,kCAAkC;AACxC,YAAA,IAAI,EAAE,gBAAgB;AACvB,SAAA;AACF,KAAA;CACF;;MClaY,YAAY,CAAA;AA8GvB,IAAA,WAAA,CACU,QAAiB,EACjB,OAAqB,EACrB,MAAc,EAAA;QAFd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAc;QACrB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAhHxB,IAAQ,CAAA,QAAA,GAAG,YAAY,CAAC,MACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAC5B,QAAQ,CAAC,CAAC,MAAM,KAAI;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;SAC7E,CAAC,CACH,CACF,CAAC;QAEF,IAAgB,CAAA,gBAAA,GAAG,YAAY,CAAC,MAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,EACvC,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SACrD,CAAC,CACH,CACF,CAAC;QAEF,IAA0B,CAAA,0BAAA,GAAG,YAAY,CAAC,MACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,EACtD,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO;gBACL,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBAC1C,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;gBACzD,YAAY,CAAC,WAAW,CAAC;AACvB,oBAAA,OAAO,EAAE;AACP,wBAAA;AACE,4BAAA,MAAM,EAAE,oBAAoB,CAAC,SAAS,EAAE;AACxC,4BAAA,KAAK,EAAE,KAAK;AACZ,4BAAA,IAAI,EAAE,YAAY;AAClB,4BAAA,YAAY,EAAE,OAAO;AACrB,4BAAA,UAAU,EAAE,gBAAgB;AAC5B,4BAAA,YAAY,EAAE,OAAO;AACtB,yBAAA;AACF,qBAAA;iBACF,CAAC;aACH,CAAC;SACH,CAAC,CACH,CACF,CAAC;QAEF,IAAW,CAAA,WAAA,GAAG,YAAY,CAAC,MACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,EAClC,QAAQ,CAAC,CAAC,MAAM,KAAI;AAClB,YAAA,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;SACzD,CAAC,CACH,CACF,CAAC;QAEF,IAAe,CAAA,eAAA,GAAG,YAAY,CAAC,MAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAC1C,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;SACrD,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,uBAAuB,GAAG,YAAY,CAAC,MACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAC3C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAC/C,GAAG,CAAC,CAAC,WAAW,KAAK,YAAY,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAC5E,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjF,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,uBAAuB,GAAG,YAAY,CAAC,MACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,sBAAsB,CAAC,EAC3C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAC/C,GAAG,CAAC,CAAC,WAAW,KAAK,YAAY,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAC5E,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjF,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,yBAAyB,GAAG,YAAY,CAAC,MACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAC7C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CACjD,GAAG,CAAC,CAAC,WAAW,KAAK,YAAY,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAC5E,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjF,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,2BAA2B,GAAG,YAAY,CAAC,MACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,YAAY,CAAC,0BAA0B,CAAC,EAC/C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CACnD,GAAG,CAAC,CAAC,WAAW,KAAK,YAAY,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAC5E,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjF,CACF,CACF,CACF,CAAC;KAME;8GAlHO,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAtC,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAApD,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAZ,YAAY,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;MCAE,mBAAmB,CAAA;IAC9B,WACU,CAAA,KAA+B,EAC/B,UAAsB,EAAA;QADtB,IAAK,CAAA,KAAA,GAAL,KAAK,CAA0B;QAC/B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAC5B;AAEJ,IAAA,UAAU,CAAC,OAAgB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CACnD,QAAQ,CAAC,CAAC,GAAG,KACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAO,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,SAAA,CAAW,CAAC,EAAE;AACvD,YAAA,GAAG,OAAO;AACV,YAAA,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC;SAC/D,CAAC,CACH,CACF,CAAC;KACH;AAED,IAAA,aAAa,CAAC,OAAgB,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CACnD,QAAQ,CAAC,CAAC,GAAG,KACX,IAAI,CAAC,UAAU,CAAC,GAAG,CAA4B,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,SAAA,CAAW,CAAC,EAAE;AAC3E,YAAA,GAAG,OAAO;AACV,YAAA,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC;SAC/D,CAAC,CACH,CACF,CAAC;KACH;AAED,IAAA,aAAa,CAAC,EAAU,EAAA;QACtB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAO,GAAG,GAAG,CAAA,aAAA,EAAgB,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC;KACtF;AAED,IAAA,cAAc,CAAC,EAAU,EAAA;QACvB,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAU,GAAG,GAAG,CAAA,aAAA,EAAgB,EAAE,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC;KACtF;AAED,IAAA,kBAAkB,CAAC,EAAU,EAAA;QAC3B,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAkB,GAAG,GAAG,CAAA,aAAA,EAAgB,EAAE,CAAW,SAAA,CAAA,CAAC,CAAC,CAAC,CAAC;KACvG;AAED,IAAA,kBAAkB,CAAC,SAAiB,EAAE,UAAkB,EAAE,KAAU,EAAA;AAClE,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CACnD,QAAQ,CAAC,CAAC,GAAG,KACX,IAAI,CAAC,UAAU,CAAC,GAAG,CAAO,SAAS,CAAC,CAAG,EAAA,GAAG,gBAAgB,SAAS,CAAA,aAAA,EAAgB,UAAU,CAAA,CAAE,CAAC,EAAE;AAChG,YAAA,KAAK,EAAE,KAAK;SACb,CAAC,CACH,CACF,CAAC;KACH;IAED,qBAAqB,CAAC,SAAiB,EAAE,UAAkB,EAAA;QACzD,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;aAC9B,IAAI,CACH,QAAQ,CAAC,CAAC,GAAG,KACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAO,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,aAAA,EAAgB,SAAS,CAAA,aAAA,EAAgB,UAAU,CAAA,CAAE,CAAC,CAAC,CACrG,CACF,CAAC;KACL;AAED,IAAA,WAAW,CAAC,QAAkB,EAAA;QAC5B,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9B,aAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAO,SAAS,CAAC,CAAG,EAAA,GAAG,CAAsB,oBAAA,CAAA,CAAC,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;KACjH;8GAtEU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCSY,mBAAmB,CAAA;AAC9B,IAAA,WAAA,CACU,QAAiB,EACjB,cAAmC,EACnC,SAA2B,EAAA;QAF3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAqB;QACnC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AAGrC,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,MAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAClC,SAAS,CAAC,CAAC,KAA0C,KACnD,IAAI,CAAC,cAAc;AAChB,aAAA,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;AACzB,aAAA,IAAI,CACH,QAAQ,CAAC,MAAM;YACb,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACtD,mBAAmB,CAAC,eAAe,EAAE;YACrC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;SAC5C,CAAC,CACH,CACJ,EACD,UAAU,CAAC,CAAC,KAAU,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACrE,CACF,CAAC;QAEF,IAAuB,CAAA,uBAAA,GAAG,YAAY,CACpC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,EAClD,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,MAAM,IAAI,GAAyB;AACjC,gBAAA,KAAK,EAAE,2BAA2B;AAClC,gBAAA,OAAO,EAAE,2BAA2B;AACpC,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,OAAO,EAAE;4BACP,mBAAmB,CAAC,MAAM,CAAC;gCACzB,IAAI,EAAE,MAAM,CAAC,IAAI;gCACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gCACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;6BAC1B,CAAC;AACH,yBAAA;AACF,qBAAA;AACD,oBAAA,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE;AACtC,iBAAA;aACF,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;SAC1D,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAAC,MAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAClC,SAAS,CAAC,CAAC,MAAM,KACf,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CACjD,QAAQ,CAAC,MAAM;YACb,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACtD,mBAAmB,CAAC,eAAe,EAAE;YACrC,mBAAmB,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;SAC3D,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAChE,CACF,CACF,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,MAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAC1C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAChD,GAAG,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAClE,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC9E,CACF,CACF,CACF,CAAC;QAEF,IAAqC,CAAA,qCAAA,GAAG,YAAY,CAAC,MACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,EACzC,QAAQ,CAAC,CAAC,MAAM,KAAK;YACnB,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AAClE,YAAA,iBAAiB,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;SAC7E,CAAC,CACH,CACF,CAAC;QAEF,IAAQ,CAAA,QAAA,GAAG,YAAY,CAAC,MACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,EACnC,QAAQ,CAAC,CAAC,MAAM,KAAK;YACnB,YAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC9C,YAAY,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;YACzD,YAAY,CAAC,WAAW,CAAC;AACvB,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACvD,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,YAAY,EAAE,OAAO;AACrB,wBAAA,UAAU,EAAE,SAAS;AACrB,wBAAA,YAAY,EAAE,OAAO;AACtB,qBAAA;AACF,iBAAA;aACF,CAAC;SACH,CAAC,CACH,CACF,CAAC;QAEF,IAAc,CAAA,cAAA,GAAG,YAAY,CAAC,MAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAClC,SAAS,CAAC,CAAC,MAAM,KACf,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CACpD,QAAQ,CAAC,CAAC,QAAwB,KAAI;AACpC,YAAA,IAAI,OAAO,GAAa;gBACtB,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC;gBACxF,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aACvD,CAAC;YACF,IAAI,MAAM,CAAC,KAAK;gBACd,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpG,YAAA,OAAO,OAAO,CAAC;SAChB,CAAC,CACH,CACF,EACD,UAAU,CAAC,CAAC,KAAU,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC3E,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,mBAAmB,GAAG,YAAY,CAAC,MACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAC1C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAC5F,GAAG,CAAC,MAAM,eAAe,CAAC,yBAAyB,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EACrF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,eAAe,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC9E,CACF,CACF,CACF,CAAC;QAEF,IAA0B,CAAA,0BAAA,GAAG,YAAY,CAAC,MACxC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,yBAAyB,CAAC,EACjD,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO;gBACL,mBAAmB,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC5D,eAAe,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC/C,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aACvD,CAAC;SACH,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAC,MACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAC7C,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CACjF,GAAG,CAAC,MAAM,eAAe,CAAC,4BAA4B,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EACxF,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,eAAe,CAAC,4BAA4B,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CACjF,CACF,CACF,CACF,CAAC;QAEF,IAA6B,CAAA,6BAAA,GAAG,YAAY,CAAC,MAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,eAAe,CAAC,4BAA4B,CAAC,EACpD,QAAQ,CAAC,CAAC,MAAM,KAAI;YAClB,OAAO;gBACL,mBAAmB,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC5D,eAAe,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC/C,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aACvD,CAAC;SACH,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,MAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,EACvC,QAAQ,CAAC,CAAC,MAAM,KACd,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACnD,GAAG,CAAC,MAAM,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EACpD,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAChE,CACF,CACF,CACF,CAAC;KA7LE;8GALO,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAe,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAwC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA,EAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;MCwOE,cAAc,CAAA;AACzB,IAAA,WAAA,CAAoB,mBAAmC,EAAA;QAAnC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAgB;QACrD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;KACvE;8GAJU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAxC,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAxHvB,iBAAiB;YACjB,yBAAyB;YACzB,0BAA0B;YAC1B,qBAAqB;YACrB,wBAAwB;YACxB,2BAA2B;YAC3B,8BAA8B;YAC9B,8BAA8B;YAC9B,uBAAuB;YACvB,kBAAkB;YAClB,oBAAoB;YACpB,mBAAmB;YACnB,oBAAoB;YACpB,kBAAkB;YAClB,sBAAsB;YACtB,4BAA4B;YAC5B,+BAA+B;YAC/B,6BAA6B;YAC7B,yBAAyB;YACzB,2BAA2B;YAC3B,2BAA2B;YAC3B,0BAA0B;YAC1B,uBAAuB;YACvB,wBAAwB;YACxB,2BAA2B;YAC3B,0BAA0B;YAC1B,0BAA0B;YAC1B,2BAA2B;YAC3B,6BAA6B;YAC7B,0BAA0B;YAC1B,4BAA4B;YAC5B,+BAA+B;YAC/B,8BAA8B;YAC9B,4BAA4B;YAC5B,qBAAqB;YACrB,4BAA4B;YAC5B,gCAAgC;YAChC,oBAAoB;YACpB,uBAAuB;YACvB,gCAAgC;YAChC,yBAAyB;YACzB,wBAAwB;YACxB,yBAAyB;YACzB,2BAA2B;YAC3B,4BAA4B;YAC5B,8BAA8B;YAC9B,2BAA2B;YAC3B,wBAAwB;YACxB,0BAA0B;YAC1B,yBAAyB;YACzB,4BAA4B;YAC5B,wBAAwB;YACxB,kBAAkB;YAClB,wBAAwB;YACxB,2BAA2B;YAC3B,iCAAiC;YACjC,gCAAgC;YAChC,mBAAmB;YACnB,sBAAsB;YACtB,2BAA2B;YAC3B,iCAAiC;YACjC,8BAA8B;YAC9B,+BAA+B;YAC/B,+BAA+B;YAC/B,qBAAqB;YACrB,yBAAyB;YACzB,wBAAwB;YACxB,2BAA2B;YAC3B,yBAAyB;YACzB,8BAA8B;YAC9B,qCAAqC;YACrC,oCAAoC;YACpC,uBAAuB;AACvB,YAAA,yBAAyB,aAGzB,YAAY;YACZ,aAAa;AACb,YAAA,kBAAkB,wiBAuBlB,aAAa;YACb,WAAW;YACX,mBAAmB;YACnB,aAAa;YACb,iBAAiB;YACjB,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,eAAe;YACf,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,oBAAoB;YACpB,gBAAgB;YAChB,cAAc;YACd,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;AAGV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EA1Hd,SAAA,EAAA,CAAC,QAAQ,CAAC,YA8EnB,YAAY;YACZ,aAAa;YACb,kBAAkB;AAClB,YAAA,WAAW,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC;AACrD,YAAA,WAAW,CAAC,UAAU,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;AAC9D,YAAA,WAAW,CAAC,UAAU,CAAC,mBAAmB,EAAE,eAAe,CAAC;AAC5D,YAAA,WAAW,CAAC,UAAU,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;AACjE,YAAA,WAAW,CAAC,UAAU,CAAC,2BAA2B,EAAE,wBAAwB,CAAC;AAC7E,YAAA,WAAW,CAAC,UAAU,CAAC,4BAA4B,EAAE,yBAAyB,CAAC;AAC/E,YAAA,WAAW,CAAC,UAAU,CAAC,iBAAiB,EAAE,YAAY,CAAC;AACvD,YAAA,WAAW,CAAC,UAAU,CAAC,gBAAgB,EAAE,YAAY,CAAC;AACtD,YAAA,WAAW,CAAC,UAAU,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;AAC7D,YAAA,WAAW,CAAC,UAAU,CAAC,eAAe,EAAE,WAAW,CAAC;AACpD,YAAA,WAAW,CAAC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC;AACzD,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC;AACxC,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC7C,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC9C,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC5C,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC;AACpD,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC7C,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,CAAC;AACzC,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC5C,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC;AACxC,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACrD,YAAA,aAAa,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,CAAC;YAC/C,aAAa;YACb,WAAW;YACX,mBAAmB;YACnB,aAAa;YACb,iBAAiB;YACjB,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,eAAe;YACf,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,oBAAoB;YACpB,gBAAgB;YAChB,cAAc;YACd,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGV,cAAc,EAAA,UAAA,EAAA,CAAA;kBA3H1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,SAAS,EAAE,CAAC,QAAQ,CAAC;AACrB,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;wBACjB,yBAAyB;wBACzB,0BAA0B;wBAC1B,qBAAqB;wBACrB,wBAAwB;wBACxB,2BAA2B;wBAC3B,8BAA8B;wBAC9B,8BAA8B;wBAC9B,uBAAuB;wBACvB,kBAAkB;wBAClB,oBAAoB;wBACpB,mBAAmB;wBACnB,oBAAoB;wBACpB,kBAAkB;wBAClB,sBAAsB;wBACtB,4BAA4B;wBAC5B,+BAA+B;wBAC/B,6BAA6B;wBAC7B,yBAAyB;wBACzB,2BAA2B;wBAC3B,2BAA2B;wBAC3B,0BAA0B;wBAC1B,uBAAuB;wBACvB,wBAAwB;wBACxB,2BAA2B;wBAC3B,0BAA0B;wBAC1B,0BAA0B;wBAC1B,2BAA2B;wBAC3B,6BAA6B;wBAC7B,0BAA0B;wBAC1B,4BAA4B;wBAC5B,+BAA+B;wBAC/B,8BAA8B;wBAC9B,4BAA4B;wBAC5B,qBAAqB;wBACrB,4BAA4B;wBAC5B,gCAAgC;wBAChC,oBAAoB;wBACpB,uBAAuB;wBACvB,gCAAgC;wBAChC,yBAAyB;wBACzB,wBAAwB;wBACxB,yBAAyB;wBACzB,2BAA2B;wBAC3B,4BAA4B;wBAC5B,8BAA8B;wBAC9B,2BAA2B;wBAC3B,wBAAwB;wBACxB,0BAA0B;wBAC1B,yBAAyB;wBACzB,4BAA4B;wBAC5B,wBAAwB;wBACxB,kBAAkB;wBAClB,wBAAwB;wBACxB,2BAA2B;wBAC3B,iCAAiC;wBACjC,gCAAgC;wBAChC,mBAAmB;wBACnB,sBAAsB;wBACtB,2BAA2B;wBAC3B,iCAAiC;wBACjC,8BAA8B;wBAC9B,+BAA+B;wBAC/B,+BAA+B;wBAC/B,qBAAqB;wBACrB,yBAAyB;wBACzB,wBAAwB;wBACxB,2BAA2B;wBAC3B,yBAAyB;wBACzB,8BAA8B;wBAC9B,qCAAqC;wBACrC,oCAAoC;wBACpC,uBAAuB;wBACvB,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,kBAAkB;AAClB,wBAAA,WAAW,CAAC,UAAU,CAAC,eAAe,EAAE,YAAY,CAAC;AACrD,wBAAA,WAAW,CAAC,UAAU,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;AAC9D,wBAAA,WAAW,CAAC,UAAU,CAAC,mBAAmB,EAAE,eAAe,CAAC;AAC5D,wBAAA,WAAW,CAAC,UAAU,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;AACjE,wBAAA,WAAW,CAAC,UAAU,CAAC,2BAA2B,EAAE,wBAAwB,CAAC;AAC7E,wBAAA,WAAW,CAAC,UAAU,CAAC,4BAA4B,EAAE,yBAAyB,CAAC;AAC/E,wBAAA,WAAW,CAAC,UAAU,CAAC,iBAAiB,EAAE,YAAY,CAAC;AACvD,wBAAA,WAAW,CAAC,UAAU,CAAC,gBAAgB,EAAE,YAAY,CAAC;AACtD,wBAAA,WAAW,CAAC,UAAU,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;AAC7D,wBAAA,WAAW,CAAC,UAAU,CAAC,eAAe,EAAE,WAAW,CAAC;AACpD,wBAAA,WAAW,CAAC,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC;AACzD,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC;AACxC,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC7C,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC9C,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC5C,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC,CAAC;AACpD,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC7C,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,CAAC;AACzC,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC5C,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC;AACxC,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACrD,wBAAA,aAAa,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,CAAC;wBAC/C,aAAa;wBACb,WAAW;wBACX,mBAAmB;wBACnB,aAAa;wBACb,iBAAiB;wBACjB,cAAc;wBACd,eAAe;wBACf,qBAAqB;wBACrB,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,cAAc;wBACd,aAAa;wBACb,oBAAoB;wBACpB,gBAAgB;wBAChB,cAAc;wBACd,mBAAmB;AACpB,qBAAA;AACF,iBAAA,CAAA;;;ACxPD;;AAEG;;;;"}
|